![]() |
furuta_pendulum_control_toolbox package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | GPLv3 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-04-14 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | control robotics ros inverted-pendulum |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
furuta_pendulum_control_toolbox
Files
ct_demo_simulation
- simple simulation of Furuta pendulum with some hardcoded initial state, state trajectories are then plotted. Its main purpose is the initial verification of generated model
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation
ct_demo_simulation_node
- similar to the previous one, but this time initial state is read from parameters, and results are published in a joint_state
message, which can be later used to visualize the model in RViz. Used for further model verification.
ros2 launch furuta_pendulum_control_toolbox ct_simulation.launch.py
ct_lqr
- linearizes system and calculates LQR gains, which can be later used in the lqr_with_swing_up_controller
ros2 run furuta_pendulum_control_toolbox ct_lqr
ros2 launch furuta_pendulum_control_toolbox ct_lqr_controller.launch.py
ct_demo_simulation_mpc
- first attempt at creating an MPC controller for the Furuta pendulum. After creating the controller, it is then verified using simulation and results are printed.
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation_mpc
ct_demo_simulation_mpc_node
- it is a previous demo, but with publishing joint_state
messages, so that everything could be visualized in RViz.
ros2 launch furuta_pendulum_control_toolbox ct_simulation_with_mpc_controller.launch.py
ct_mpc_controller_node
- MPC controller from previous demos, extracted into a standalone node. It subscribes to joint_state
messages (as this time it isn’t combined with the simulator) and calculates controls.
ros2 launch furuta_pendulum_control_toolbox ct_mpc_controller.launch.py
Setup
Based on tutorial from control_toolbox.
Generating dtdsl and kindsl
urdf2robcogen is used. Clone this to repos into your ROS1 workspace:
git clone https://github.com/leggedrobotics/urdf2robcogen.git
git clone https://github.com/ANYbotics/kindr_ros.git
Build and then run the following command to generate dtdsl
and kindsl
:
rosrun urdf2robcogen urdf2robcogen_script FurutaPendulum /PATH_TO_URDF/furuta_pendulum.urdf
Generating code
RobCoGen is used in this step. First install dependency:
sudo apt install maxima
Then download version 0.4ad.0
of RobCoGen from this page.
Then, before generating code, it is necessary to fix some problems.
First one is described in this github issue, as in the issue I removed a “/” sign from the ./run/framework.properties
(generator.maxima.libs.path = ../etc/maxima-libs
, without “/” at the end).
Now install iit
:
cd /PATH_TO_ROBCOGEN/robcogen-0.4ad.0/etc/cpp-iitrbd
chmod +x install.sh
sudo ./install.sh
Install dependencies (based on install_deps.sh
control_toolbox, without running install_cmake.sh
, as it caused problems with ROS2 building):
sudo apt-get update
sudo apt install liblapack-dev libeigen3-dev coinor-libipopt-dev libboost-all-dev libomp-dev clang python3 python3-dev python3-numpy python3-matplotlib
Then navigate to your control_toolbox directory and:
cd ct
sudo ./install_cppadcg.sh
Finally to generate code run:
cd PATH_TO_ROBCOGEN/run
./robcogen.sh /PATH_TO_KINDSL/FurutaPendulum.kindsl /PATH_TO_DTDSL/FurutaPendulum.dtdsl
You should see the following menu:
``` 0 - CTDSL - The coordinate transforms description file .ctdsl
1 - ALLMx - [All the Maxima targets] 2 - TMx - Maxima coordinate transforms 3 - JMx - Maxima geometric Jacobians
4 - ALLC++ - [All the C++ targets] 5 - CC++ - C++ common code 6 - TC++ - C++ coordinate Transform 7 - JC++ - C++ geometric Jacobians 8 - DC++ - C++ common code for dynamics 9 - IDC++ - C++ Inverse-Dynamics implementation 10 - FDC++ - C++ Forward-Dynamics implementation 11 - JSIMC++ - C++ Joint-Space-Inertia-Matrix calculation 12 - MKC++ - CMake file for C++ code
13 - ALLMt - [All the Matlab targets] 14 - CMt - Matlab common code 15 - TMt - Matlab coordinate transforms 16 - JMt - Matlab geometric Jacobians 17 - IDMt - Matlab Forward/Inverse-Dynamics implementation
File truncated at 100 lines see the full file
Changelog for package furuta_pendulum_control_toolbox
1.0.0 (2023-07-30)
- Working simulation
- Contributors: Maciej Stępień
Package Dependencies
Deps | Name |
---|---|
ct_core | |
ct_optcon | |
ct_rbd | |
ct_models | |
Eigen | |
sensor_msgs | |
std_msgs | |
geometry_msgs | |
ament_cmake | |
launch | |
launch_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged furuta_pendulum_control_toolbox at Robotics Stack Exchange
![]() |
furuta_pendulum_control_toolbox package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | GPLv3 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-04-14 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | control robotics ros inverted-pendulum |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
furuta_pendulum_control_toolbox
Files
ct_demo_simulation
- simple simulation of Furuta pendulum with some hardcoded initial state, state trajectories are then plotted. Its main purpose is the initial verification of generated model
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation
ct_demo_simulation_node
- similar to the previous one, but this time initial state is read from parameters, and results are published in a joint_state
message, which can be later used to visualize the model in RViz. Used for further model verification.
ros2 launch furuta_pendulum_control_toolbox ct_simulation.launch.py
ct_lqr
- linearizes system and calculates LQR gains, which can be later used in the lqr_with_swing_up_controller
ros2 run furuta_pendulum_control_toolbox ct_lqr
ros2 launch furuta_pendulum_control_toolbox ct_lqr_controller.launch.py
ct_demo_simulation_mpc
- first attempt at creating an MPC controller for the Furuta pendulum. After creating the controller, it is then verified using simulation and results are printed.
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation_mpc
ct_demo_simulation_mpc_node
- it is a previous demo, but with publishing joint_state
messages, so that everything could be visualized in RViz.
ros2 launch furuta_pendulum_control_toolbox ct_simulation_with_mpc_controller.launch.py
ct_mpc_controller_node
- MPC controller from previous demos, extracted into a standalone node. It subscribes to joint_state
messages (as this time it isn’t combined with the simulator) and calculates controls.
ros2 launch furuta_pendulum_control_toolbox ct_mpc_controller.launch.py
Setup
Based on tutorial from control_toolbox.
Generating dtdsl and kindsl
urdf2robcogen is used. Clone this to repos into your ROS1 workspace:
git clone https://github.com/leggedrobotics/urdf2robcogen.git
git clone https://github.com/ANYbotics/kindr_ros.git
Build and then run the following command to generate dtdsl
and kindsl
:
rosrun urdf2robcogen urdf2robcogen_script FurutaPendulum /PATH_TO_URDF/furuta_pendulum.urdf
Generating code
RobCoGen is used in this step. First install dependency:
sudo apt install maxima
Then download version 0.4ad.0
of RobCoGen from this page.
Then, before generating code, it is necessary to fix some problems.
First one is described in this github issue, as in the issue I removed a “/” sign from the ./run/framework.properties
(generator.maxima.libs.path = ../etc/maxima-libs
, without “/” at the end).
Now install iit
:
cd /PATH_TO_ROBCOGEN/robcogen-0.4ad.0/etc/cpp-iitrbd
chmod +x install.sh
sudo ./install.sh
Install dependencies (based on install_deps.sh
control_toolbox, without running install_cmake.sh
, as it caused problems with ROS2 building):
sudo apt-get update
sudo apt install liblapack-dev libeigen3-dev coinor-libipopt-dev libboost-all-dev libomp-dev clang python3 python3-dev python3-numpy python3-matplotlib
Then navigate to your control_toolbox directory and:
cd ct
sudo ./install_cppadcg.sh
Finally to generate code run:
cd PATH_TO_ROBCOGEN/run
./robcogen.sh /PATH_TO_KINDSL/FurutaPendulum.kindsl /PATH_TO_DTDSL/FurutaPendulum.dtdsl
You should see the following menu:
``` 0 - CTDSL - The coordinate transforms description file .ctdsl
1 - ALLMx - [All the Maxima targets] 2 - TMx - Maxima coordinate transforms 3 - JMx - Maxima geometric Jacobians
4 - ALLC++ - [All the C++ targets] 5 - CC++ - C++ common code 6 - TC++ - C++ coordinate Transform 7 - JC++ - C++ geometric Jacobians 8 - DC++ - C++ common code for dynamics 9 - IDC++ - C++ Inverse-Dynamics implementation 10 - FDC++ - C++ Forward-Dynamics implementation 11 - JSIMC++ - C++ Joint-Space-Inertia-Matrix calculation 12 - MKC++ - CMake file for C++ code
13 - ALLMt - [All the Matlab targets] 14 - CMt - Matlab common code 15 - TMt - Matlab coordinate transforms 16 - JMt - Matlab geometric Jacobians 17 - IDMt - Matlab Forward/Inverse-Dynamics implementation
File truncated at 100 lines see the full file
Changelog for package furuta_pendulum_control_toolbox
1.0.0 (2023-07-30)
- Working simulation
- Contributors: Maciej Stępień
Package Dependencies
Deps | Name |
---|---|
ct_core | |
ct_optcon | |
ct_rbd | |
ct_models | |
Eigen | |
sensor_msgs | |
std_msgs | |
geometry_msgs | |
ament_cmake | |
launch | |
launch_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged furuta_pendulum_control_toolbox at Robotics Stack Exchange
![]() |
furuta_pendulum_control_toolbox package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | GPLv3 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-04-14 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | control robotics ros inverted-pendulum |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
furuta_pendulum_control_toolbox
Files
ct_demo_simulation
- simple simulation of Furuta pendulum with some hardcoded initial state, state trajectories are then plotted. Its main purpose is the initial verification of generated model
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation
ct_demo_simulation_node
- similar to the previous one, but this time initial state is read from parameters, and results are published in a joint_state
message, which can be later used to visualize the model in RViz. Used for further model verification.
ros2 launch furuta_pendulum_control_toolbox ct_simulation.launch.py
ct_lqr
- linearizes system and calculates LQR gains, which can be later used in the lqr_with_swing_up_controller
ros2 run furuta_pendulum_control_toolbox ct_lqr
ros2 launch furuta_pendulum_control_toolbox ct_lqr_controller.launch.py
ct_demo_simulation_mpc
- first attempt at creating an MPC controller for the Furuta pendulum. After creating the controller, it is then verified using simulation and results are printed.
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation_mpc
ct_demo_simulation_mpc_node
- it is a previous demo, but with publishing joint_state
messages, so that everything could be visualized in RViz.
ros2 launch furuta_pendulum_control_toolbox ct_simulation_with_mpc_controller.launch.py
ct_mpc_controller_node
- MPC controller from previous demos, extracted into a standalone node. It subscribes to joint_state
messages (as this time it isn’t combined with the simulator) and calculates controls.
ros2 launch furuta_pendulum_control_toolbox ct_mpc_controller.launch.py
Setup
Based on tutorial from control_toolbox.
Generating dtdsl and kindsl
urdf2robcogen is used. Clone this to repos into your ROS1 workspace:
git clone https://github.com/leggedrobotics/urdf2robcogen.git
git clone https://github.com/ANYbotics/kindr_ros.git
Build and then run the following command to generate dtdsl
and kindsl
:
rosrun urdf2robcogen urdf2robcogen_script FurutaPendulum /PATH_TO_URDF/furuta_pendulum.urdf
Generating code
RobCoGen is used in this step. First install dependency:
sudo apt install maxima
Then download version 0.4ad.0
of RobCoGen from this page.
Then, before generating code, it is necessary to fix some problems.
First one is described in this github issue, as in the issue I removed a “/” sign from the ./run/framework.properties
(generator.maxima.libs.path = ../etc/maxima-libs
, without “/” at the end).
Now install iit
:
cd /PATH_TO_ROBCOGEN/robcogen-0.4ad.0/etc/cpp-iitrbd
chmod +x install.sh
sudo ./install.sh
Install dependencies (based on install_deps.sh
control_toolbox, without running install_cmake.sh
, as it caused problems with ROS2 building):
sudo apt-get update
sudo apt install liblapack-dev libeigen3-dev coinor-libipopt-dev libboost-all-dev libomp-dev clang python3 python3-dev python3-numpy python3-matplotlib
Then navigate to your control_toolbox directory and:
cd ct
sudo ./install_cppadcg.sh
Finally to generate code run:
cd PATH_TO_ROBCOGEN/run
./robcogen.sh /PATH_TO_KINDSL/FurutaPendulum.kindsl /PATH_TO_DTDSL/FurutaPendulum.dtdsl
You should see the following menu:
``` 0 - CTDSL - The coordinate transforms description file .ctdsl
1 - ALLMx - [All the Maxima targets] 2 - TMx - Maxima coordinate transforms 3 - JMx - Maxima geometric Jacobians
4 - ALLC++ - [All the C++ targets] 5 - CC++ - C++ common code 6 - TC++ - C++ coordinate Transform 7 - JC++ - C++ geometric Jacobians 8 - DC++ - C++ common code for dynamics 9 - IDC++ - C++ Inverse-Dynamics implementation 10 - FDC++ - C++ Forward-Dynamics implementation 11 - JSIMC++ - C++ Joint-Space-Inertia-Matrix calculation 12 - MKC++ - CMake file for C++ code
13 - ALLMt - [All the Matlab targets] 14 - CMt - Matlab common code 15 - TMt - Matlab coordinate transforms 16 - JMt - Matlab geometric Jacobians 17 - IDMt - Matlab Forward/Inverse-Dynamics implementation
File truncated at 100 lines see the full file
Changelog for package furuta_pendulum_control_toolbox
1.0.0 (2023-07-30)
- Working simulation
- Contributors: Maciej Stępień
Package Dependencies
Deps | Name |
---|---|
ct_core | |
ct_optcon | |
ct_rbd | |
ct_models | |
Eigen | |
sensor_msgs | |
std_msgs | |
geometry_msgs | |
ament_cmake | |
launch | |
launch_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged furuta_pendulum_control_toolbox at Robotics Stack Exchange
![]() |
furuta_pendulum_control_toolbox package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | GPLv3 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-04-14 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | control robotics ros inverted-pendulum |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
furuta_pendulum_control_toolbox
Files
ct_demo_simulation
- simple simulation of Furuta pendulum with some hardcoded initial state, state trajectories are then plotted. Its main purpose is the initial verification of generated model
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation
ct_demo_simulation_node
- similar to the previous one, but this time initial state is read from parameters, and results are published in a joint_state
message, which can be later used to visualize the model in RViz. Used for further model verification.
ros2 launch furuta_pendulum_control_toolbox ct_simulation.launch.py
ct_lqr
- linearizes system and calculates LQR gains, which can be later used in the lqr_with_swing_up_controller
ros2 run furuta_pendulum_control_toolbox ct_lqr
ros2 launch furuta_pendulum_control_toolbox ct_lqr_controller.launch.py
ct_demo_simulation_mpc
- first attempt at creating an MPC controller for the Furuta pendulum. After creating the controller, it is then verified using simulation and results are printed.
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation_mpc
ct_demo_simulation_mpc_node
- it is a previous demo, but with publishing joint_state
messages, so that everything could be visualized in RViz.
ros2 launch furuta_pendulum_control_toolbox ct_simulation_with_mpc_controller.launch.py
ct_mpc_controller_node
- MPC controller from previous demos, extracted into a standalone node. It subscribes to joint_state
messages (as this time it isn’t combined with the simulator) and calculates controls.
ros2 launch furuta_pendulum_control_toolbox ct_mpc_controller.launch.py
Setup
Based on tutorial from control_toolbox.
Generating dtdsl and kindsl
urdf2robcogen is used. Clone this to repos into your ROS1 workspace:
git clone https://github.com/leggedrobotics/urdf2robcogen.git
git clone https://github.com/ANYbotics/kindr_ros.git
Build and then run the following command to generate dtdsl
and kindsl
:
rosrun urdf2robcogen urdf2robcogen_script FurutaPendulum /PATH_TO_URDF/furuta_pendulum.urdf
Generating code
RobCoGen is used in this step. First install dependency:
sudo apt install maxima
Then download version 0.4ad.0
of RobCoGen from this page.
Then, before generating code, it is necessary to fix some problems.
First one is described in this github issue, as in the issue I removed a “/” sign from the ./run/framework.properties
(generator.maxima.libs.path = ../etc/maxima-libs
, without “/” at the end).
Now install iit
:
cd /PATH_TO_ROBCOGEN/robcogen-0.4ad.0/etc/cpp-iitrbd
chmod +x install.sh
sudo ./install.sh
Install dependencies (based on install_deps.sh
control_toolbox, without running install_cmake.sh
, as it caused problems with ROS2 building):
sudo apt-get update
sudo apt install liblapack-dev libeigen3-dev coinor-libipopt-dev libboost-all-dev libomp-dev clang python3 python3-dev python3-numpy python3-matplotlib
Then navigate to your control_toolbox directory and:
cd ct
sudo ./install_cppadcg.sh
Finally to generate code run:
cd PATH_TO_ROBCOGEN/run
./robcogen.sh /PATH_TO_KINDSL/FurutaPendulum.kindsl /PATH_TO_DTDSL/FurutaPendulum.dtdsl
You should see the following menu:
``` 0 - CTDSL - The coordinate transforms description file .ctdsl
1 - ALLMx - [All the Maxima targets] 2 - TMx - Maxima coordinate transforms 3 - JMx - Maxima geometric Jacobians
4 - ALLC++ - [All the C++ targets] 5 - CC++ - C++ common code 6 - TC++ - C++ coordinate Transform 7 - JC++ - C++ geometric Jacobians 8 - DC++ - C++ common code for dynamics 9 - IDC++ - C++ Inverse-Dynamics implementation 10 - FDC++ - C++ Forward-Dynamics implementation 11 - JSIMC++ - C++ Joint-Space-Inertia-Matrix calculation 12 - MKC++ - CMake file for C++ code
13 - ALLMt - [All the Matlab targets] 14 - CMt - Matlab common code 15 - TMt - Matlab coordinate transforms 16 - JMt - Matlab geometric Jacobians 17 - IDMt - Matlab Forward/Inverse-Dynamics implementation
File truncated at 100 lines see the full file
Changelog for package furuta_pendulum_control_toolbox
1.0.0 (2023-07-30)
- Working simulation
- Contributors: Maciej Stępień
Package Dependencies
Deps | Name |
---|---|
ct_core | |
ct_optcon | |
ct_rbd | |
ct_models | |
Eigen | |
sensor_msgs | |
std_msgs | |
geometry_msgs | |
ament_cmake | |
launch | |
launch_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged furuta_pendulum_control_toolbox at Robotics Stack Exchange
![]() |
furuta_pendulum_control_toolbox package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | GPLv3 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-04-14 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | control robotics ros inverted-pendulum |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
furuta_pendulum_control_toolbox
Files
ct_demo_simulation
- simple simulation of Furuta pendulum with some hardcoded initial state, state trajectories are then plotted. Its main purpose is the initial verification of generated model
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation
ct_demo_simulation_node
- similar to the previous one, but this time initial state is read from parameters, and results are published in a joint_state
message, which can be later used to visualize the model in RViz. Used for further model verification.
ros2 launch furuta_pendulum_control_toolbox ct_simulation.launch.py
ct_lqr
- linearizes system and calculates LQR gains, which can be later used in the lqr_with_swing_up_controller
ros2 run furuta_pendulum_control_toolbox ct_lqr
ros2 launch furuta_pendulum_control_toolbox ct_lqr_controller.launch.py
ct_demo_simulation_mpc
- first attempt at creating an MPC controller for the Furuta pendulum. After creating the controller, it is then verified using simulation and results are printed.
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation_mpc
ct_demo_simulation_mpc_node
- it is a previous demo, but with publishing joint_state
messages, so that everything could be visualized in RViz.
ros2 launch furuta_pendulum_control_toolbox ct_simulation_with_mpc_controller.launch.py
ct_mpc_controller_node
- MPC controller from previous demos, extracted into a standalone node. It subscribes to joint_state
messages (as this time it isn’t combined with the simulator) and calculates controls.
ros2 launch furuta_pendulum_control_toolbox ct_mpc_controller.launch.py
Setup
Based on tutorial from control_toolbox.
Generating dtdsl and kindsl
urdf2robcogen is used. Clone this to repos into your ROS1 workspace:
git clone https://github.com/leggedrobotics/urdf2robcogen.git
git clone https://github.com/ANYbotics/kindr_ros.git
Build and then run the following command to generate dtdsl
and kindsl
:
rosrun urdf2robcogen urdf2robcogen_script FurutaPendulum /PATH_TO_URDF/furuta_pendulum.urdf
Generating code
RobCoGen is used in this step. First install dependency:
sudo apt install maxima
Then download version 0.4ad.0
of RobCoGen from this page.
Then, before generating code, it is necessary to fix some problems.
First one is described in this github issue, as in the issue I removed a “/” sign from the ./run/framework.properties
(generator.maxima.libs.path = ../etc/maxima-libs
, without “/” at the end).
Now install iit
:
cd /PATH_TO_ROBCOGEN/robcogen-0.4ad.0/etc/cpp-iitrbd
chmod +x install.sh
sudo ./install.sh
Install dependencies (based on install_deps.sh
control_toolbox, without running install_cmake.sh
, as it caused problems with ROS2 building):
sudo apt-get update
sudo apt install liblapack-dev libeigen3-dev coinor-libipopt-dev libboost-all-dev libomp-dev clang python3 python3-dev python3-numpy python3-matplotlib
Then navigate to your control_toolbox directory and:
cd ct
sudo ./install_cppadcg.sh
Finally to generate code run:
cd PATH_TO_ROBCOGEN/run
./robcogen.sh /PATH_TO_KINDSL/FurutaPendulum.kindsl /PATH_TO_DTDSL/FurutaPendulum.dtdsl
You should see the following menu:
``` 0 - CTDSL - The coordinate transforms description file .ctdsl
1 - ALLMx - [All the Maxima targets] 2 - TMx - Maxima coordinate transforms 3 - JMx - Maxima geometric Jacobians
4 - ALLC++ - [All the C++ targets] 5 - CC++ - C++ common code 6 - TC++ - C++ coordinate Transform 7 - JC++ - C++ geometric Jacobians 8 - DC++ - C++ common code for dynamics 9 - IDC++ - C++ Inverse-Dynamics implementation 10 - FDC++ - C++ Forward-Dynamics implementation 11 - JSIMC++ - C++ Joint-Space-Inertia-Matrix calculation 12 - MKC++ - CMake file for C++ code
13 - ALLMt - [All the Matlab targets] 14 - CMt - Matlab common code 15 - TMt - Matlab coordinate transforms 16 - JMt - Matlab geometric Jacobians 17 - IDMt - Matlab Forward/Inverse-Dynamics implementation
File truncated at 100 lines see the full file
Changelog for package furuta_pendulum_control_toolbox
1.0.0 (2023-07-30)
- Working simulation
- Contributors: Maciej Stępień
Package Dependencies
Deps | Name |
---|---|
ct_core | |
ct_optcon | |
ct_rbd | |
ct_models | |
Eigen | |
sensor_msgs | |
std_msgs | |
geometry_msgs | |
ament_cmake | |
launch | |
launch_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged furuta_pendulum_control_toolbox at Robotics Stack Exchange
![]() |
furuta_pendulum_control_toolbox package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | GPLv3 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-04-14 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | control robotics ros inverted-pendulum |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
furuta_pendulum_control_toolbox
Files
ct_demo_simulation
- simple simulation of Furuta pendulum with some hardcoded initial state, state trajectories are then plotted. Its main purpose is the initial verification of generated model
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation
ct_demo_simulation_node
- similar to the previous one, but this time initial state is read from parameters, and results are published in a joint_state
message, which can be later used to visualize the model in RViz. Used for further model verification.
ros2 launch furuta_pendulum_control_toolbox ct_simulation.launch.py
ct_lqr
- linearizes system and calculates LQR gains, which can be later used in the lqr_with_swing_up_controller
ros2 run furuta_pendulum_control_toolbox ct_lqr
ros2 launch furuta_pendulum_control_toolbox ct_lqr_controller.launch.py
ct_demo_simulation_mpc
- first attempt at creating an MPC controller for the Furuta pendulum. After creating the controller, it is then verified using simulation and results are printed.
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation_mpc
ct_demo_simulation_mpc_node
- it is a previous demo, but with publishing joint_state
messages, so that everything could be visualized in RViz.
ros2 launch furuta_pendulum_control_toolbox ct_simulation_with_mpc_controller.launch.py
ct_mpc_controller_node
- MPC controller from previous demos, extracted into a standalone node. It subscribes to joint_state
messages (as this time it isn’t combined with the simulator) and calculates controls.
ros2 launch furuta_pendulum_control_toolbox ct_mpc_controller.launch.py
Setup
Based on tutorial from control_toolbox.
Generating dtdsl and kindsl
urdf2robcogen is used. Clone this to repos into your ROS1 workspace:
git clone https://github.com/leggedrobotics/urdf2robcogen.git
git clone https://github.com/ANYbotics/kindr_ros.git
Build and then run the following command to generate dtdsl
and kindsl
:
rosrun urdf2robcogen urdf2robcogen_script FurutaPendulum /PATH_TO_URDF/furuta_pendulum.urdf
Generating code
RobCoGen is used in this step. First install dependency:
sudo apt install maxima
Then download version 0.4ad.0
of RobCoGen from this page.
Then, before generating code, it is necessary to fix some problems.
First one is described in this github issue, as in the issue I removed a “/” sign from the ./run/framework.properties
(generator.maxima.libs.path = ../etc/maxima-libs
, without “/” at the end).
Now install iit
:
cd /PATH_TO_ROBCOGEN/robcogen-0.4ad.0/etc/cpp-iitrbd
chmod +x install.sh
sudo ./install.sh
Install dependencies (based on install_deps.sh
control_toolbox, without running install_cmake.sh
, as it caused problems with ROS2 building):
sudo apt-get update
sudo apt install liblapack-dev libeigen3-dev coinor-libipopt-dev libboost-all-dev libomp-dev clang python3 python3-dev python3-numpy python3-matplotlib
Then navigate to your control_toolbox directory and:
cd ct
sudo ./install_cppadcg.sh
Finally to generate code run:
cd PATH_TO_ROBCOGEN/run
./robcogen.sh /PATH_TO_KINDSL/FurutaPendulum.kindsl /PATH_TO_DTDSL/FurutaPendulum.dtdsl
You should see the following menu:
``` 0 - CTDSL - The coordinate transforms description file .ctdsl
1 - ALLMx - [All the Maxima targets] 2 - TMx - Maxima coordinate transforms 3 - JMx - Maxima geometric Jacobians
4 - ALLC++ - [All the C++ targets] 5 - CC++ - C++ common code 6 - TC++ - C++ coordinate Transform 7 - JC++ - C++ geometric Jacobians 8 - DC++ - C++ common code for dynamics 9 - IDC++ - C++ Inverse-Dynamics implementation 10 - FDC++ - C++ Forward-Dynamics implementation 11 - JSIMC++ - C++ Joint-Space-Inertia-Matrix calculation 12 - MKC++ - CMake file for C++ code
13 - ALLMt - [All the Matlab targets] 14 - CMt - Matlab common code 15 - TMt - Matlab coordinate transforms 16 - JMt - Matlab geometric Jacobians 17 - IDMt - Matlab Forward/Inverse-Dynamics implementation
File truncated at 100 lines see the full file
Changelog for package furuta_pendulum_control_toolbox
1.0.0 (2023-07-30)
- Working simulation
- Contributors: Maciej Stępień
Package Dependencies
Deps | Name |
---|---|
ct_core | |
ct_optcon | |
ct_rbd | |
ct_models | |
Eigen | |
sensor_msgs | |
std_msgs | |
geometry_msgs | |
ament_cmake | |
launch | |
launch_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged furuta_pendulum_control_toolbox at Robotics Stack Exchange
![]() |
furuta_pendulum_control_toolbox package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | GPLv3 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-04-14 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | control robotics ros inverted-pendulum |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
furuta_pendulum_control_toolbox
Files
ct_demo_simulation
- simple simulation of Furuta pendulum with some hardcoded initial state, state trajectories are then plotted. Its main purpose is the initial verification of generated model
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation
ct_demo_simulation_node
- similar to the previous one, but this time initial state is read from parameters, and results are published in a joint_state
message, which can be later used to visualize the model in RViz. Used for further model verification.
ros2 launch furuta_pendulum_control_toolbox ct_simulation.launch.py
ct_lqr
- linearizes system and calculates LQR gains, which can be later used in the lqr_with_swing_up_controller
ros2 run furuta_pendulum_control_toolbox ct_lqr
ros2 launch furuta_pendulum_control_toolbox ct_lqr_controller.launch.py
ct_demo_simulation_mpc
- first attempt at creating an MPC controller for the Furuta pendulum. After creating the controller, it is then verified using simulation and results are printed.
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation_mpc
ct_demo_simulation_mpc_node
- it is a previous demo, but with publishing joint_state
messages, so that everything could be visualized in RViz.
ros2 launch furuta_pendulum_control_toolbox ct_simulation_with_mpc_controller.launch.py
ct_mpc_controller_node
- MPC controller from previous demos, extracted into a standalone node. It subscribes to joint_state
messages (as this time it isn’t combined with the simulator) and calculates controls.
ros2 launch furuta_pendulum_control_toolbox ct_mpc_controller.launch.py
Setup
Based on tutorial from control_toolbox.
Generating dtdsl and kindsl
urdf2robcogen is used. Clone this to repos into your ROS1 workspace:
git clone https://github.com/leggedrobotics/urdf2robcogen.git
git clone https://github.com/ANYbotics/kindr_ros.git
Build and then run the following command to generate dtdsl
and kindsl
:
rosrun urdf2robcogen urdf2robcogen_script FurutaPendulum /PATH_TO_URDF/furuta_pendulum.urdf
Generating code
RobCoGen is used in this step. First install dependency:
sudo apt install maxima
Then download version 0.4ad.0
of RobCoGen from this page.
Then, before generating code, it is necessary to fix some problems.
First one is described in this github issue, as in the issue I removed a “/” sign from the ./run/framework.properties
(generator.maxima.libs.path = ../etc/maxima-libs
, without “/” at the end).
Now install iit
:
cd /PATH_TO_ROBCOGEN/robcogen-0.4ad.0/etc/cpp-iitrbd
chmod +x install.sh
sudo ./install.sh
Install dependencies (based on install_deps.sh
control_toolbox, without running install_cmake.sh
, as it caused problems with ROS2 building):
sudo apt-get update
sudo apt install liblapack-dev libeigen3-dev coinor-libipopt-dev libboost-all-dev libomp-dev clang python3 python3-dev python3-numpy python3-matplotlib
Then navigate to your control_toolbox directory and:
cd ct
sudo ./install_cppadcg.sh
Finally to generate code run:
cd PATH_TO_ROBCOGEN/run
./robcogen.sh /PATH_TO_KINDSL/FurutaPendulum.kindsl /PATH_TO_DTDSL/FurutaPendulum.dtdsl
You should see the following menu:
``` 0 - CTDSL - The coordinate transforms description file .ctdsl
1 - ALLMx - [All the Maxima targets] 2 - TMx - Maxima coordinate transforms 3 - JMx - Maxima geometric Jacobians
4 - ALLC++ - [All the C++ targets] 5 - CC++ - C++ common code 6 - TC++ - C++ coordinate Transform 7 - JC++ - C++ geometric Jacobians 8 - DC++ - C++ common code for dynamics 9 - IDC++ - C++ Inverse-Dynamics implementation 10 - FDC++ - C++ Forward-Dynamics implementation 11 - JSIMC++ - C++ Joint-Space-Inertia-Matrix calculation 12 - MKC++ - CMake file for C++ code
13 - ALLMt - [All the Matlab targets] 14 - CMt - Matlab common code 15 - TMt - Matlab coordinate transforms 16 - JMt - Matlab geometric Jacobians 17 - IDMt - Matlab Forward/Inverse-Dynamics implementation
File truncated at 100 lines see the full file
Changelog for package furuta_pendulum_control_toolbox
1.0.0 (2023-07-30)
- Working simulation
- Contributors: Maciej Stępień
Package Dependencies
Deps | Name |
---|---|
ct_core | |
ct_optcon | |
ct_rbd | |
ct_models | |
Eigen | |
sensor_msgs | |
std_msgs | |
geometry_msgs | |
ament_cmake | |
launch | |
launch_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged furuta_pendulum_control_toolbox at Robotics Stack Exchange
![]() |
furuta_pendulum_control_toolbox package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | GPLv3 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-04-14 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | control robotics ros inverted-pendulum |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
furuta_pendulum_control_toolbox
Files
ct_demo_simulation
- simple simulation of Furuta pendulum with some hardcoded initial state, state trajectories are then plotted. Its main purpose is the initial verification of generated model
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation
ct_demo_simulation_node
- similar to the previous one, but this time initial state is read from parameters, and results are published in a joint_state
message, which can be later used to visualize the model in RViz. Used for further model verification.
ros2 launch furuta_pendulum_control_toolbox ct_simulation.launch.py
ct_lqr
- linearizes system and calculates LQR gains, which can be later used in the lqr_with_swing_up_controller
ros2 run furuta_pendulum_control_toolbox ct_lqr
ros2 launch furuta_pendulum_control_toolbox ct_lqr_controller.launch.py
ct_demo_simulation_mpc
- first attempt at creating an MPC controller for the Furuta pendulum. After creating the controller, it is then verified using simulation and results are printed.
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation_mpc
ct_demo_simulation_mpc_node
- it is a previous demo, but with publishing joint_state
messages, so that everything could be visualized in RViz.
ros2 launch furuta_pendulum_control_toolbox ct_simulation_with_mpc_controller.launch.py
ct_mpc_controller_node
- MPC controller from previous demos, extracted into a standalone node. It subscribes to joint_state
messages (as this time it isn’t combined with the simulator) and calculates controls.
ros2 launch furuta_pendulum_control_toolbox ct_mpc_controller.launch.py
Setup
Based on tutorial from control_toolbox.
Generating dtdsl and kindsl
urdf2robcogen is used. Clone this to repos into your ROS1 workspace:
git clone https://github.com/leggedrobotics/urdf2robcogen.git
git clone https://github.com/ANYbotics/kindr_ros.git
Build and then run the following command to generate dtdsl
and kindsl
:
rosrun urdf2robcogen urdf2robcogen_script FurutaPendulum /PATH_TO_URDF/furuta_pendulum.urdf
Generating code
RobCoGen is used in this step. First install dependency:
sudo apt install maxima
Then download version 0.4ad.0
of RobCoGen from this page.
Then, before generating code, it is necessary to fix some problems.
First one is described in this github issue, as in the issue I removed a “/” sign from the ./run/framework.properties
(generator.maxima.libs.path = ../etc/maxima-libs
, without “/” at the end).
Now install iit
:
cd /PATH_TO_ROBCOGEN/robcogen-0.4ad.0/etc/cpp-iitrbd
chmod +x install.sh
sudo ./install.sh
Install dependencies (based on install_deps.sh
control_toolbox, without running install_cmake.sh
, as it caused problems with ROS2 building):
sudo apt-get update
sudo apt install liblapack-dev libeigen3-dev coinor-libipopt-dev libboost-all-dev libomp-dev clang python3 python3-dev python3-numpy python3-matplotlib
Then navigate to your control_toolbox directory and:
cd ct
sudo ./install_cppadcg.sh
Finally to generate code run:
cd PATH_TO_ROBCOGEN/run
./robcogen.sh /PATH_TO_KINDSL/FurutaPendulum.kindsl /PATH_TO_DTDSL/FurutaPendulum.dtdsl
You should see the following menu:
``` 0 - CTDSL - The coordinate transforms description file .ctdsl
1 - ALLMx - [All the Maxima targets] 2 - TMx - Maxima coordinate transforms 3 - JMx - Maxima geometric Jacobians
4 - ALLC++ - [All the C++ targets] 5 - CC++ - C++ common code 6 - TC++ - C++ coordinate Transform 7 - JC++ - C++ geometric Jacobians 8 - DC++ - C++ common code for dynamics 9 - IDC++ - C++ Inverse-Dynamics implementation 10 - FDC++ - C++ Forward-Dynamics implementation 11 - JSIMC++ - C++ Joint-Space-Inertia-Matrix calculation 12 - MKC++ - CMake file for C++ code
13 - ALLMt - [All the Matlab targets] 14 - CMt - Matlab common code 15 - TMt - Matlab coordinate transforms 16 - JMt - Matlab geometric Jacobians 17 - IDMt - Matlab Forward/Inverse-Dynamics implementation
File truncated at 100 lines see the full file
Changelog for package furuta_pendulum_control_toolbox
1.0.0 (2023-07-30)
- Working simulation
- Contributors: Maciej Stępień
Package Dependencies
Deps | Name |
---|---|
ct_core | |
ct_optcon | |
ct_rbd | |
ct_models | |
Eigen | |
sensor_msgs | |
std_msgs | |
geometry_msgs | |
ament_cmake | |
launch | |
launch_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged furuta_pendulum_control_toolbox at Robotics Stack Exchange
![]() |
furuta_pendulum_control_toolbox package from furuta_pendulum repofuruta_pendulum_bringup furuta_pendulum_control_toolbox furuta_pendulum_de furuta_pendulum_description furuta_pendulum_drake furuta_pendulum_gazebo furuta_pendulum_hardware furuta_pendulum_model furuta_pendulum_ocs2 furuta_pendulum_ocs2_ros furuta_pendulum_rl |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | GPLv3 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | LQR, MPC and DRL approaches to control the Furuta pendulum. |
Checkout URI | https://github.com/macstepien/furuta_pendulum.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-04-14 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | control robotics ros inverted-pendulum |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Maciej Stępień
Authors
- Maciej Stępień
furuta_pendulum_control_toolbox
Files
ct_demo_simulation
- simple simulation of Furuta pendulum with some hardcoded initial state, state trajectories are then plotted. Its main purpose is the initial verification of generated model
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation
ct_demo_simulation_node
- similar to the previous one, but this time initial state is read from parameters, and results are published in a joint_state
message, which can be later used to visualize the model in RViz. Used for further model verification.
ros2 launch furuta_pendulum_control_toolbox ct_simulation.launch.py
ct_lqr
- linearizes system and calculates LQR gains, which can be later used in the lqr_with_swing_up_controller
ros2 run furuta_pendulum_control_toolbox ct_lqr
ros2 launch furuta_pendulum_control_toolbox ct_lqr_controller.launch.py
ct_demo_simulation_mpc
- first attempt at creating an MPC controller for the Furuta pendulum. After creating the controller, it is then verified using simulation and results are printed.
ros2 run furuta_pendulum_control_toolbox ct_demo_simulation_mpc
ct_demo_simulation_mpc_node
- it is a previous demo, but with publishing joint_state
messages, so that everything could be visualized in RViz.
ros2 launch furuta_pendulum_control_toolbox ct_simulation_with_mpc_controller.launch.py
ct_mpc_controller_node
- MPC controller from previous demos, extracted into a standalone node. It subscribes to joint_state
messages (as this time it isn’t combined with the simulator) and calculates controls.
ros2 launch furuta_pendulum_control_toolbox ct_mpc_controller.launch.py
Setup
Based on tutorial from control_toolbox.
Generating dtdsl and kindsl
urdf2robcogen is used. Clone this to repos into your ROS1 workspace:
git clone https://github.com/leggedrobotics/urdf2robcogen.git
git clone https://github.com/ANYbotics/kindr_ros.git
Build and then run the following command to generate dtdsl
and kindsl
:
rosrun urdf2robcogen urdf2robcogen_script FurutaPendulum /PATH_TO_URDF/furuta_pendulum.urdf
Generating code
RobCoGen is used in this step. First install dependency:
sudo apt install maxima
Then download version 0.4ad.0
of RobCoGen from this page.
Then, before generating code, it is necessary to fix some problems.
First one is described in this github issue, as in the issue I removed a “/” sign from the ./run/framework.properties
(generator.maxima.libs.path = ../etc/maxima-libs
, without “/” at the end).
Now install iit
:
cd /PATH_TO_ROBCOGEN/robcogen-0.4ad.0/etc/cpp-iitrbd
chmod +x install.sh
sudo ./install.sh
Install dependencies (based on install_deps.sh
control_toolbox, without running install_cmake.sh
, as it caused problems with ROS2 building):
sudo apt-get update
sudo apt install liblapack-dev libeigen3-dev coinor-libipopt-dev libboost-all-dev libomp-dev clang python3 python3-dev python3-numpy python3-matplotlib
Then navigate to your control_toolbox directory and:
cd ct
sudo ./install_cppadcg.sh
Finally to generate code run:
cd PATH_TO_ROBCOGEN/run
./robcogen.sh /PATH_TO_KINDSL/FurutaPendulum.kindsl /PATH_TO_DTDSL/FurutaPendulum.dtdsl
You should see the following menu:
``` 0 - CTDSL - The coordinate transforms description file .ctdsl
1 - ALLMx - [All the Maxima targets] 2 - TMx - Maxima coordinate transforms 3 - JMx - Maxima geometric Jacobians
4 - ALLC++ - [All the C++ targets] 5 - CC++ - C++ common code 6 - TC++ - C++ coordinate Transform 7 - JC++ - C++ geometric Jacobians 8 - DC++ - C++ common code for dynamics 9 - IDC++ - C++ Inverse-Dynamics implementation 10 - FDC++ - C++ Forward-Dynamics implementation 11 - JSIMC++ - C++ Joint-Space-Inertia-Matrix calculation 12 - MKC++ - CMake file for C++ code
13 - ALLMt - [All the Matlab targets] 14 - CMt - Matlab common code 15 - TMt - Matlab coordinate transforms 16 - JMt - Matlab geometric Jacobians 17 - IDMt - Matlab Forward/Inverse-Dynamics implementation
File truncated at 100 lines see the full file
Changelog for package furuta_pendulum_control_toolbox
1.0.0 (2023-07-30)
- Working simulation
- Contributors: Maciej Stępień
Package Dependencies
Deps | Name |
---|---|
ct_core | |
ct_optcon | |
ct_rbd | |
ct_models | |
Eigen | |
sensor_msgs | |
std_msgs | |
geometry_msgs | |
ament_cmake | |
launch | |
launch_ros |