├── ros2_control_demos-not-released.humble.repos
├── ros2_control_demos-not-released.jazzy.repos
├── ros2_control_demos-not-released.kilted.repos
├── ros2_control_demos-not-released.rolling.repos
├── example_1
├── doc
│ └── rrbot.png
├── bringup
│ ├── config
│ │ ├── rrbot_forward_position_publisher.yaml
│ │ ├── rrbot_controllers.yaml
│ │ ├── rrbot_joint_trajectory_publisher.yaml
│ │ └── rrbot_jtc.yaml
│ └── launch
│ │ ├── test_forward_position_controller.launch.py
│ │ └── test_joint_trajectory_controller.launch.py
├── README.md
├── ros2_control_demo_example_1.xml
├── description
│ ├── urdf
│ │ └── rrbot.urdf.xacro
│ └── ros2_control
│ │ └── rrbot.ros2_control.xacro
├── package.xml
└── hardware
│ └── include
│ └── ros2_control_demo_example_1
│ └── rrbot.hpp
├── example_12
├── doc
│ └── rrbot.png
├── controllers
│ └── src
│ │ └── passthrough_controller_parameters.yaml
├── README.md
├── passthrough_controller.xml
├── ros2_control_demo_example_12.xml
├── description
│ ├── urdf
│ │ └── rrbot.urdf.xacro
│ └── ros2_control
│ │ └── rrbot.ros2_control.xacro
├── bringup
│ ├── config
│ │ └── rrbot_chained_controllers.yaml
│ └── launch
│ │ └── launch_chained_controllers.launch.py
└── package.xml
├── example_2
├── doc
│ └── diffbot.png
├── README.md
├── ros2_control_demo_example_2.xml
├── description
│ ├── urdf
│ │ └── diffbot.urdf.xacro
│ └── ros2_control
│ │ └── diffbot.ros2_control.xacro
├── bringup
│ └── config
│ │ └── diffbot_controllers.yaml
└── package.xml
├── example_15
├── doc
│ └── two_rrbot.png
├── README.md
├── bringup
│ ├── config
│ │ ├── rrbot_namespace_forward_position_publisher.yaml
│ │ ├── rrbot_namespace_joint_trajectory_publisher.yaml
│ │ ├── multi_controller_manager_forward_position_publisher.yaml
│ │ ├── rrbot_namespace_controllers.yaml
│ │ ├── multi_controller_manager_joint_trajectory_publisher.yaml
│ │ └── multi_controller_manager_rrbot_generic_controllers.yaml
│ └── launch
│ │ ├── test_forward_position_controller.launch.py
│ │ ├── test_joint_trajectory_controller.launch.py
│ │ ├── test_multi_controller_manager_joint_trajectory_controller.launch.py
│ │ └── test_multi_controller_manager_forward_position_controller.launch.py
├── CMakeLists.txt
└── package.xml
├── example_11
├── doc
│ └── carlikebot.png
├── README.md
├── ros2_control_demo_example_11.xml
├── description
│ ├── urdf
│ │ └── carlikebot.urdf.xacro
│ └── ros2_control
│ │ └── carlikebot.ros2_control.xacro
├── bringup
│ └── config
│ │ └── carlikebot_controllers.yaml
└── package.xml
├── example_5
├── doc
│ └── rrbot_wrench.png
├── bringup
│ ├── config
│ │ ├── wrench_transformer_params.yaml
│ │ ├── rrbot_forward_position_publisher.yaml
│ │ └── rrbot_with_external_sensor_controllers.yaml
│ └── launch
│ │ └── test_forward_position_controller.launch.py
├── README.md
├── ros2_control_demo_example_5.xml
├── description
│ ├── ros2_control
│ │ ├── rrbot_system_position_only.ros2_control.xacro
│ │ └── external_rrbot_force_torque_sensor.ros2_control.xacro
│ └── urdf
│ │ └── rrbot_system_with_external_sensor.urdf.xacro
├── package.xml
└── hardware
│ └── include
│ └── ros2_control_demo_example_5
│ └── external_rrbot_force_torque_sensor.hpp
├── example_9
├── doc
│ └── rrbot_gazebo.png
├── README.md
├── bringup
│ ├── config
│ │ ├── rrbot_forward_position_publisher.yaml
│ │ └── rrbot_controllers.yaml
│ └── launch
│ │ └── test_forward_position_controller.launch.py
├── ros2_control_demo_example_9.xml
├── description
│ ├── ros2_control
│ │ └── rrbot.ros2_control.xacro
│ ├── urdf
│ │ └── rrbot.urdf.xacro
│ └── gazebo
│ │ └── rrbot.gazebo.xacro
└── package.xml
├── example_7
├── doc
│ └── resources
│ │ ├── robot.png
│ │ ├── link_1.png
│ │ ├── link_2.png
│ │ ├── trajectory.gif
│ │ ├── link_2_roll.png
│ │ ├── link_2_aligned.png
│ │ ├── link_2_roll_yaw.png
│ │ └── link_2_roll_yaw_trans.png
├── README.md
├── bringup
│ ├── config
│ │ └── r6bot_controller.yaml
│ └── launch
│ │ └── send_trajectory.launch.py
├── description
│ └── urdf
│ │ └── r6bot.urdf.xacro
├── ros2_control_demo_example_7.xml
├── hardware
│ └── include
│ │ └── ros2_control_demo_example_7
│ │ └── r6bot_hardware.hpp
└── package.xml
├── Dockerfile
├── entrypoint.sh
└── Dockerfile
├── example_16
├── doc
│ └── diffbot_velocities.png
├── README.md
├── ros2_control_demo_example_16.xml
├── description
│ ├── urdf
│ │ └── diffbot.urdf.xacro
│ └── ros2_control
│ │ └── diffbot.ros2_control.xacro
└── package.xml
├── ros2_control_demos
├── CMakeLists.txt
└── package.xml
├── ros2_control_demo_description
├── r6bot
│ ├── meshes
│ │ └── collision
│ │ │ ├── link_0.stl
│ │ │ ├── link_1.stl
│ │ │ ├── link_2.stl
│ │ │ ├── link_3.stl
│ │ │ ├── link_4.stl
│ │ │ ├── link_5.stl
│ │ │ └── link_6.stl
│ ├── urdf
│ │ └── inc
│ │ │ └── create_link.xacro
│ └── srdf
│ │ └── r6bot.srdf
├── CMakeLists.txt
├── package.xml
├── diffbot
│ └── urdf
│ │ └── diffbot.materials.xacro
├── rrbot
│ └── urdf
│ │ └── rrbot.materials.xacro
└── carlikebot
│ └── urdf
│ └── carlikebot.materials.xacro
├── example_3
├── README.md
├── bringup
│ ├── config
│ │ ├── rrbot_forward_position_publisher.yaml
│ │ └── rrbot_multi_interface_forward_controllers.yaml
│ └── launch
│ │ └── test_forward_position_controller.launch.py
├── ros2_control_demo_example_3.xml
├── description
│ └── urdf
│ │ └── rrbot_system_multi_interface.urdf.xacro
└── package.xml
├── example_4
├── README.md
├── bringup
│ ├── config
│ │ ├── rrbot_forward_position_publisher.yaml
│ │ └── rrbot_with_sensor_controllers.yaml
│ └── launch
│ │ └── test_forward_position_controller.launch.py
├── ros2_control_demo_example_4.xml
├── description
│ ├── urdf
│ │ └── rrbot_system_with_sensor.urdf.xacro
│ └── ros2_control
│ │ └── rrbot_system_with_sensor.ros2_control.xacro
└── package.xml
├── example_8
├── README.md
├── bringup
│ ├── config
│ │ ├── rrbot_forward_position_publisher.yaml
│ │ └── rrbot_controllers.yaml
│ └── launch
│ │ └── test_forward_position_controller.launch.py
├── ros2_control_demo_example_8.xml
├── description
│ ├── urdf
│ │ └── rrbot_transmissions_system_position_only.urdf.xacro
│ └── ros2_control
│ │ └── rrbot_transmissions_system_position_only.ros2_control.xacro
└── package.xml
├── doc
└── run_from_docker.rst
├── example_10
├── README.md
├── bringup
│ ├── config
│ │ ├── rrbot_forward_position_publisher.yaml
│ │ └── rrbot_controllers.yaml
│ └── launch
│ │ └── test_forward_position_controller.launch.py
├── ros2_control_demo_example_10.xml
├── description
│ ├── urdf
│ │ └── rrbot.urdf.xacro
│ └── ros2_control
│ │ └── rrbot.ros2_control.xacro
├── package.xml
└── hardware
│ └── include
│ └── ros2_control_demo_example_10
│ └── rrbot.hpp
├── example_13
├── README.md
├── bringup
│ └── config
│ │ └── three_robots_position_command_publishers.yaml
├── description
│ └── ros2_control
│ │ └── threedofbot.ros2_control.xacro
├── CMakeLists.txt
└── package.xml
├── example_6
├── README.md
├── bringup
│ ├── config
│ │ ├── rrbot_forward_position_publisher.yaml
│ │ └── rrbot_modular_actuators.yaml
│ └── launch
│ │ └── test_forward_position_controller.launch.py
├── ros2_control_demo_example_6.xml
├── description
│ ├── urdf
│ │ └── rrbot_modular_actuators.urdf.xacro
│ └── ros2_control
│ │ └── rrbot_modular_actuators.ros2_control.xacro
└── package.xml
├── example_14
├── README.md
├── bringup
│ └── config
│ │ └── rrbot_modular_actuators_without_feedback_sensors_for_position_feedback.yaml
├── ros2_control_demo_example_14.xml
├── description
│ └── urdf
│ │ └── rrbot_modular_actuators_without_feedback_sensors_for_position_feedback.urdf.xacro
└── package.xml
├── example_17
├── README.md
├── bringup
│ ├── config
│ │ ├── rrbot_forward_position_publisher.yaml
│ │ └── rrbot_controllers.yaml
│ └── launch
│ │ ├── test_forward_position_controller.launch.xml
│ │ └── test_joint_trajectory_controller.launch.xml
├── ros2_control_demo_example_17.xml
├── description
│ ├── urdf
│ │ └── rrbot.urdf.xacro
│ ├── ros2_control
│ │ └── rrbot.ros2_control.xacro
│ └── launch
│ │ └── view_robot.launch.xml
└── package.xml
├── .github
├── workflows
│ ├── jazzy-pre-commit.yml
│ ├── humble-pre-commit.yml
│ ├── reviewer_lottery.yml
│ ├── update-pre-commit.yml
│ ├── rolling-pre-commit.yml
│ ├── jazzy-check-docs.yml
│ ├── humble-check-docs.yml
│ ├── rolling-check-docs.yml
│ ├── jazzy-docker-build.yml
│ ├── humble-docker-build.yml
│ ├── jazzy-semi-binary-build.yml
│ ├── humble-semi-binary-build.yml
│ ├── jazzy-binary-build.yml
│ ├── rolling-docker-build.yaml
│ ├── humble-binary-build.yml
│ ├── rolling-semi-binary-build.yml
│ ├── stale.yml
│ └── rolling-binary-build.yml
├── pull_request_template.md
├── dependabot.yml
└── mergify.yml
├── .clang-format
├── ros2_control_demos.humble.repos
├── ros2_control_demos.jazzy.repos
├── ros2_control_demos.kilted.repos
├── ros2_control_demos.rolling.repos
└── stale.yml
/ros2_control_demos-not-released.humble.repos:
--------------------------------------------------------------------------------
1 | repositories:
2 |
--------------------------------------------------------------------------------
/ros2_control_demos-not-released.jazzy.repos:
--------------------------------------------------------------------------------
1 | repositories:
2 |
--------------------------------------------------------------------------------
/ros2_control_demos-not-released.kilted.repos:
--------------------------------------------------------------------------------
1 | repositories:
2 |
--------------------------------------------------------------------------------
/ros2_control_demos-not-released.rolling.repos:
--------------------------------------------------------------------------------
1 | repositories:
2 |
--------------------------------------------------------------------------------
/example_1/doc/rrbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/example_1/doc/rrbot.png
--------------------------------------------------------------------------------
/example_12/doc/rrbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/example_12/doc/rrbot.png
--------------------------------------------------------------------------------
/example_2/doc/diffbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/example_2/doc/diffbot.png
--------------------------------------------------------------------------------
/example_15/doc/two_rrbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/example_15/doc/two_rrbot.png
--------------------------------------------------------------------------------
/example_11/doc/carlikebot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/example_11/doc/carlikebot.png
--------------------------------------------------------------------------------
/example_5/doc/rrbot_wrench.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/example_5/doc/rrbot_wrench.png
--------------------------------------------------------------------------------
/example_9/doc/rrbot_gazebo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/example_9/doc/rrbot_gazebo.png
--------------------------------------------------------------------------------
/example_7/doc/resources/robot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/example_7/doc/resources/robot.png
--------------------------------------------------------------------------------
/example_7/doc/resources/link_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/example_7/doc/resources/link_1.png
--------------------------------------------------------------------------------
/example_7/doc/resources/link_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/example_7/doc/resources/link_2.png
--------------------------------------------------------------------------------
/Dockerfile/entrypoint.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | . /opt/ros/"${ROS_DISTRO}"/setup.sh
4 | cd /home/ros2_ws
5 | . install/setup.sh
6 | exec "$@"
7 |
--------------------------------------------------------------------------------
/example_16/doc/diffbot_velocities.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/example_16/doc/diffbot_velocities.png
--------------------------------------------------------------------------------
/example_7/doc/resources/trajectory.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/example_7/doc/resources/trajectory.gif
--------------------------------------------------------------------------------
/example_7/doc/resources/link_2_roll.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/example_7/doc/resources/link_2_roll.png
--------------------------------------------------------------------------------
/example_7/doc/resources/link_2_aligned.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/example_7/doc/resources/link_2_aligned.png
--------------------------------------------------------------------------------
/example_7/doc/resources/link_2_roll_yaw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/example_7/doc/resources/link_2_roll_yaw.png
--------------------------------------------------------------------------------
/example_7/doc/resources/link_2_roll_yaw_trans.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/example_7/doc/resources/link_2_roll_yaw_trans.png
--------------------------------------------------------------------------------
/ros2_control_demos/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.10)
2 | project(ros2_control_demos)
3 |
4 | find_package(ament_cmake REQUIRED)
5 | ament_package()
6 |
--------------------------------------------------------------------------------
/example_5/bringup/config/wrench_transformer_params.yaml:
--------------------------------------------------------------------------------
1 | fts_wrench_transformer:
2 | ros__parameters:
3 | target_frames:
4 | - "base_link"
5 | - "link1"
6 | tf_timeout: 0.1
7 |
--------------------------------------------------------------------------------
/ros2_control_demo_description/r6bot/meshes/collision/link_0.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/ros2_control_demo_description/r6bot/meshes/collision/link_0.stl
--------------------------------------------------------------------------------
/ros2_control_demo_description/r6bot/meshes/collision/link_1.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/ros2_control_demo_description/r6bot/meshes/collision/link_1.stl
--------------------------------------------------------------------------------
/ros2_control_demo_description/r6bot/meshes/collision/link_2.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/ros2_control_demo_description/r6bot/meshes/collision/link_2.stl
--------------------------------------------------------------------------------
/ros2_control_demo_description/r6bot/meshes/collision/link_3.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/ros2_control_demo_description/r6bot/meshes/collision/link_3.stl
--------------------------------------------------------------------------------
/ros2_control_demo_description/r6bot/meshes/collision/link_4.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/ros2_control_demo_description/r6bot/meshes/collision/link_4.stl
--------------------------------------------------------------------------------
/ros2_control_demo_description/r6bot/meshes/collision/link_5.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/ros2_control_demo_description/r6bot/meshes/collision/link_5.stl
--------------------------------------------------------------------------------
/ros2_control_demo_description/r6bot/meshes/collision/link_6.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ros-controls/ros2_control_demos/HEAD/ros2_control_demo_description/r6bot/meshes/collision/link_6.stl
--------------------------------------------------------------------------------
/example_3/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_3
2 |
3 | *RRBot* with multiple interfaces.
4 |
5 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_3/doc/userdoc.html).
6 |
--------------------------------------------------------------------------------
/example_4/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_4
2 |
3 | *RRBot* with an integrated sensor.
4 |
5 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_4/doc/userdoc.html).
6 |
--------------------------------------------------------------------------------
/example_5/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_5
2 |
3 | *RRBot* with an externally connected sensor.
4 |
5 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_5/doc/userdoc.html).
6 |
--------------------------------------------------------------------------------
/example_8/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_8
2 |
3 | *RRBot* with an exposed transmission interface.
4 |
5 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_8/doc/userdoc.html).
6 |
--------------------------------------------------------------------------------
/doc/run_from_docker.rst:
--------------------------------------------------------------------------------
1 | .. note::
2 |
3 | The commands below are given for a local installation of this repository and its dependencies as well as for running them from a docker container. For more information on the docker usage see :ref:`doc/ros2_control_demos/doc/index:using docker`.
4 |
--------------------------------------------------------------------------------
/example_10/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_10
2 |
3 | *RRBot* - or ''Revolute-Revolute Manipulator Robot'' - with GPIO interfaces.
4 |
5 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_10/doc/userdoc.html).
6 |
--------------------------------------------------------------------------------
/example_13/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_13
2 |
3 | This example shows how to handle multiple robots in a single controller manager instance.
4 |
5 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_13/doc/userdoc.html).
6 |
--------------------------------------------------------------------------------
/example_6/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_6
2 |
3 | The example shows how to implement robot hardware with separate communication to each actuator.
4 |
5 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_6/doc/userdoc.html).
6 |
--------------------------------------------------------------------------------
/example_15/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_15
2 |
3 | This example shows how to integrate multiple robots under different controller manager instances.
4 |
5 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_15/doc/userdoc.html).
6 |
--------------------------------------------------------------------------------
/example_12/controllers/src/passthrough_controller_parameters.yaml:
--------------------------------------------------------------------------------
1 | passthrough_controller:
2 | interfaces: {
3 | type: string_array,
4 | default_value: [],
5 | description: "Names of the interfaces to be forwarded",
6 | validation: {
7 | not_empty<>: null,
8 | unique<>: null,
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/example_14/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_14
2 |
3 | The example shows how to implement robot hardware with actuators not providing states and with additional sensors.
4 |
5 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_14/doc/userdoc.html).
6 |
--------------------------------------------------------------------------------
/example_17/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_17
2 |
3 | This example shows how to publish diagnostics from a hardware component using the Executor passed from Controller Manager.
4 |
5 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_17/doc/userdoc.html).
6 |
--------------------------------------------------------------------------------
/example_12/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_12
2 |
3 | This example shows how to write a simple chainable controller, and how to integrate it properly to have a functional controller chaining.
4 |
5 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_12/doc/userdoc.html).
6 |
--------------------------------------------------------------------------------
/.github/workflows/jazzy-pre-commit.yml:
--------------------------------------------------------------------------------
1 | name: Pre-Commit - Jazzy
2 |
3 | on:
4 | workflow_dispatch:
5 | pull_request:
6 | branches:
7 | - jazzy
8 | push:
9 | branches:
10 | - jazzy
11 |
12 | jobs:
13 | pre-commit:
14 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-pre-commit.yml@master
15 | with:
16 | ros_distro: jazzy
17 |
--------------------------------------------------------------------------------
/example_9/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_9
2 |
3 | This example demonstrates the switching between simulation and real hardware by means of the *RRBot* - or ''Revolute-Revolute Manipulator Robot''.
4 |
5 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_9/doc/userdoc.html).
6 |
--------------------------------------------------------------------------------
/.github/workflows/humble-pre-commit.yml:
--------------------------------------------------------------------------------
1 | name: Pre-Commit - Humble
2 |
3 | on:
4 | workflow_dispatch:
5 | pull_request:
6 | branches:
7 | - humble
8 | push:
9 | branches:
10 | - humble
11 |
12 | jobs:
13 | pre-commit:
14 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-pre-commit.yml@master
15 | with:
16 | ros_distro: humble
17 |
--------------------------------------------------------------------------------
/.clang-format:
--------------------------------------------------------------------------------
1 | ---
2 | Language: Cpp
3 | BasedOnStyle: Google
4 |
5 | ColumnLimit: 100
6 | AccessModifierOffset: -2
7 | AlignAfterOpenBracket: AlwaysBreak
8 | BreakBeforeBraces: Allman
9 | ConstructorInitializerIndentWidth: 0
10 | ContinuationIndentWidth: 2
11 | DerivePointerAlignment: false
12 | PointerAlignment: Middle
13 | ReflowComments: true
14 | IncludeBlocks: Preserve
15 | ...
16 |
--------------------------------------------------------------------------------
/example_15/bringup/config/rrbot_namespace_forward_position_publisher.yaml:
--------------------------------------------------------------------------------
1 | publisher_forward_position_controller:
2 | ros__parameters:
3 |
4 | wait_sec_between_publish: 5
5 |
6 | publish_topic: /position_commands
7 |
8 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
9 | pos1: [0.785, 0.785]
10 | pos2: [0.0, 0.0]
11 | pos3: [-0.785, -0.785]
12 | pos4: [0.0, 0.0]
13 |
--------------------------------------------------------------------------------
/example_1/bringup/config/rrbot_forward_position_publisher.yaml:
--------------------------------------------------------------------------------
1 | publisher_forward_position_controller:
2 | ros__parameters:
3 |
4 | wait_sec_between_publish: 5
5 | publish_topic: "/forward_position_controller/commands"
6 |
7 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
8 | pos1: [0.785, 0.785]
9 | pos2: [0.0, 0.0]
10 | pos3: [-0.785, -0.785]
11 | pos4: [0.0, 0.0]
12 |
--------------------------------------------------------------------------------
/example_10/bringup/config/rrbot_forward_position_publisher.yaml:
--------------------------------------------------------------------------------
1 | publisher_forward_position_controller:
2 | ros__parameters:
3 |
4 | wait_sec_between_publish: 5
5 | publish_topic: "/forward_position_controller/commands"
6 |
7 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
8 | pos1: [0.785, 0.785]
9 | pos2: [0.0, 0.0]
10 | pos3: [-0.785, -0.785]
11 | pos4: [0.0, 0.0]
12 |
--------------------------------------------------------------------------------
/example_17/bringup/config/rrbot_forward_position_publisher.yaml:
--------------------------------------------------------------------------------
1 | publisher_forward_position_controller:
2 | ros__parameters:
3 |
4 | wait_sec_between_publish: 5
5 | publish_topic: "/forward_position_controller/commands"
6 |
7 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
8 | pos1: [0.785, 0.785]
9 | pos2: [0.0, 0.0]
10 | pos3: [-0.785, -0.785]
11 | pos4: [0.0, 0.0]
12 |
--------------------------------------------------------------------------------
/example_3/bringup/config/rrbot_forward_position_publisher.yaml:
--------------------------------------------------------------------------------
1 | publisher_forward_position_controller:
2 | ros__parameters:
3 |
4 | wait_sec_between_publish: 5
5 | publish_topic: "/forward_position_controller/commands"
6 |
7 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
8 | pos1: [0.785, 0.785]
9 | pos2: [0.0, 0.0]
10 | pos3: [-0.785, -0.785]
11 | pos4: [0.0, 0.0]
12 |
--------------------------------------------------------------------------------
/example_4/bringup/config/rrbot_forward_position_publisher.yaml:
--------------------------------------------------------------------------------
1 | publisher_forward_position_controller:
2 | ros__parameters:
3 |
4 | wait_sec_between_publish: 5
5 | publish_topic: /forward_position_controller/commands
6 |
7 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
8 | pos1: [0.785, 0.785]
9 | pos2: [0.0, 0.0]
10 | pos3: [-0.785, -0.785]
11 | pos4: [0.0, 0.0]
12 |
--------------------------------------------------------------------------------
/example_5/bringup/config/rrbot_forward_position_publisher.yaml:
--------------------------------------------------------------------------------
1 | publisher_forward_position_controller:
2 | ros__parameters:
3 |
4 | wait_sec_between_publish: 5
5 | publish_topic: /forward_position_controller/commands
6 |
7 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
8 | pos1: [0.785, 0.785]
9 | pos2: [0.0, 0.0]
10 | pos3: [-0.785, -0.785]
11 | pos4: [0.0, 0.0]
12 |
--------------------------------------------------------------------------------
/example_6/bringup/config/rrbot_forward_position_publisher.yaml:
--------------------------------------------------------------------------------
1 | publisher_forward_position_controller:
2 | ros__parameters:
3 |
4 | wait_sec_between_publish: 5
5 | publish_topic: "/forward_position_controller/commands"
6 |
7 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
8 | pos1: [0.785, 0.785]
9 | pos2: [0.0, 0.0]
10 | pos3: [-0.785, -0.785]
11 | pos4: [0.0, 0.0]
12 |
--------------------------------------------------------------------------------
/example_8/bringup/config/rrbot_forward_position_publisher.yaml:
--------------------------------------------------------------------------------
1 | publisher_forward_position_controller:
2 | ros__parameters:
3 |
4 | wait_sec_between_publish: 5
5 | publish_topic: "/forward_position_controller/commands"
6 |
7 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
8 | pos1: [0.785, 0.785]
9 | pos2: [0.0, 0.0]
10 | pos3: [-0.785, -0.785]
11 | pos4: [0.0, 0.0]
12 |
--------------------------------------------------------------------------------
/example_9/bringup/config/rrbot_forward_position_publisher.yaml:
--------------------------------------------------------------------------------
1 | publisher_forward_position_controller:
2 | ros__parameters:
3 |
4 | wait_sec_between_publish: 5
5 | publish_topic: "/forward_position_controller/commands"
6 |
7 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
8 | pos1: [0.785, 0.785]
9 | pos2: [0.0, 0.0]
10 | pos3: [-0.785, -0.785]
11 | pos4: [0.0, 0.0]
12 |
--------------------------------------------------------------------------------
/example_2/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_2
2 |
3 | *DiffBot*, or ''Differential Mobile Robot'', is a simple mobile base with differential drive.
4 | The robot is basically a box moving according to differential drive kinematics.
5 |
6 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_2/doc/userdoc.html).
7 |
--------------------------------------------------------------------------------
/.github/workflows/reviewer_lottery.yml:
--------------------------------------------------------------------------------
1 | name: Reviewer lottery
2 | # pull_request_target takes the same events as pull_request,
3 | # but it runs on the base branch instead of the head branch.
4 | on:
5 | pull_request_target:
6 | types: [opened, ready_for_review, reopened]
7 |
8 | jobs:
9 | assign_reviewers:
10 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-reviewer-lottery.yml@master
11 |
--------------------------------------------------------------------------------
/example_1/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_1
2 |
3 | *RRBot* - or ''Revolute-Revolute Manipulator Robot'' - a simple position controlled robot with one hardware interface. This example also demonstrates the switching between different controllers.
4 |
5 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_1/doc/userdoc.html).
6 |
--------------------------------------------------------------------------------
/example_1/bringup/config/rrbot_controllers.yaml:
--------------------------------------------------------------------------------
1 | controller_manager:
2 | ros__parameters:
3 | update_rate: 10 # Hz
4 |
5 | joint_state_broadcaster:
6 | type: joint_state_broadcaster/JointStateBroadcaster
7 |
8 |
9 | forward_position_controller:
10 | ros__parameters:
11 | type: forward_command_controller/ForwardCommandController
12 | joints:
13 | - joint1
14 | - joint2
15 | interface_name: position
16 |
--------------------------------------------------------------------------------
/example_17/bringup/config/rrbot_controllers.yaml:
--------------------------------------------------------------------------------
1 | controller_manager:
2 | ros__parameters:
3 | update_rate: 10 # Hz
4 |
5 | joint_state_broadcaster:
6 | type: joint_state_broadcaster/JointStateBroadcaster
7 |
8 |
9 | forward_position_controller:
10 | ros__parameters:
11 | type: forward_command_controller/ForwardCommandController
12 | joints:
13 | - joint1
14 | - joint2
15 | interface_name: position
16 |
--------------------------------------------------------------------------------
/example_8/bringup/config/rrbot_controllers.yaml:
--------------------------------------------------------------------------------
1 | controller_manager:
2 | ros__parameters:
3 | update_rate: 10 # Hz
4 |
5 | joint_state_broadcaster:
6 | type: joint_state_broadcaster/JointStateBroadcaster
7 |
8 |
9 | forward_position_controller:
10 | ros__parameters:
11 | type: forward_command_controller/ForwardCommandController
12 | joints:
13 | - joint1
14 | - joint2
15 | interface_name: position
16 |
--------------------------------------------------------------------------------
/example_9/bringup/config/rrbot_controllers.yaml:
--------------------------------------------------------------------------------
1 | controller_manager:
2 | ros__parameters:
3 | update_rate: 1000 # Hz
4 |
5 | joint_state_broadcaster:
6 | type: joint_state_broadcaster/JointStateBroadcaster
7 |
8 |
9 | forward_position_controller:
10 | ros__parameters:
11 | type: forward_command_controller/ForwardCommandController
12 | joints:
13 | - joint1
14 | - joint2
15 | interface_name: position
16 |
--------------------------------------------------------------------------------
/example_10/ros2_control_demo_example_10.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | The ros2_control RRbot example with GPIO interfaces.
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/example_4/ros2_control_demo_example_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | The ros2_control RRbot example with an integrated sensor.
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/example_6/bringup/config/rrbot_modular_actuators.yaml:
--------------------------------------------------------------------------------
1 | controller_manager:
2 | ros__parameters:
3 | update_rate: 10 # Hz
4 |
5 | joint_state_broadcaster:
6 | type: joint_state_broadcaster/JointStateBroadcaster
7 |
8 |
9 | forward_position_controller:
10 | ros__parameters:
11 | type: forward_command_controller/ForwardCommandController
12 | joints:
13 | - joint1
14 | - joint2
15 | interface_name: position
16 |
--------------------------------------------------------------------------------
/example_12/passthrough_controller.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | A simple demo of chainable controllers. It passes commands through without change.
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/example_16/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_16
2 |
3 | *DiffBot*, or ''Differential Mobile Robot'', is a simple mobile base with differential drive. This example shows how to create chained controllers using diff_drive_controller and pid_controllers to control a differential drive robot.
4 |
5 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_16/doc/userdoc.html).
6 |
--------------------------------------------------------------------------------
/.github/workflows/update-pre-commit.yml:
--------------------------------------------------------------------------------
1 | name: Auto Update pre-commit
2 | # Update pre-commit config and create PR if changes are detected
3 | # author: Christoph Fröhlich
4 |
5 | on:
6 | workflow_dispatch:
7 | schedule:
8 | - cron: '0 0 1 * *' # Runs at 00:00, on day 1 of the month
9 |
10 | jobs:
11 | auto_update_and_create_pr:
12 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-update-pre-commit.yml@master
13 |
--------------------------------------------------------------------------------
/example_1/ros2_control_demo_example_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | The ros2_control RRbot example using a system hardware interface-type.
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/example_6/ros2_control_demo_example_6.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | The ros2_control robot with 2 separate actuators which can be controlled by 2 different endpoints.
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/example_9/ros2_control_demo_example_9.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | The ros2_control RRbot example using a system hardware interface-type.
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/example_12/ros2_control_demo_example_12.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | The ros2_control RRbot example using a system hardware interface-type.
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/example_3/ros2_control_demo_example_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | The ros2_control RRbot example using a multi-interface hardware interface-type.
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/example_8/ros2_control_demo_example_8.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | The ros2_control minimal robot protocol with transmissions.
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/example_14/bringup/config/rrbot_modular_actuators_without_feedback_sensors_for_position_feedback.yaml:
--------------------------------------------------------------------------------
1 | controller_manager:
2 | ros__parameters:
3 | update_rate: 10 # Hz
4 |
5 | joint_state_broadcaster:
6 | type: joint_state_broadcaster/JointStateBroadcaster
7 |
8 |
9 | forward_velocity_controller:
10 | ros__parameters:
11 | type: forward_command_controller/ForwardCommandController
12 | joints:
13 | - joint1
14 | - joint2
15 | interface_name: velocity
16 |
--------------------------------------------------------------------------------
/example_17/ros2_control_demo_example_17.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | The ros2_control RRbot example using a system hardware interface-type what publishes diagnostics.
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.github/workflows/rolling-pre-commit.yml:
--------------------------------------------------------------------------------
1 | name: Pre-Commit - Rolling
2 |
3 | on:
4 | workflow_dispatch:
5 | pull_request:
6 | branches:
7 | - master
8 | push:
9 | branches:
10 | - master
11 |
12 | jobs:
13 | pre-commit:
14 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-pre-commit.yml@master
15 | strategy:
16 | fail-fast: false
17 | matrix:
18 | ROS_DISTRO: [rolling, kilted]
19 | with:
20 | ros_distro: ${{ matrix.ROS_DISTRO }}
21 |
--------------------------------------------------------------------------------
/example_11/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_11
2 |
3 | *CarlikeBot*, or ''Carlike Mobile Robot'', is a simple mobile base with bicycle drive.
4 | The robot has two wheels in the front that steer the robot and two wheels in the back that power the robot forward and backwards. However, since each pair of wheels (steering and traction) are controlled by one interface, a bicycle steering model is used.
5 |
6 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_11/doc/userdoc.html).
7 |
--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
1 | ## General
2 | Please consider the guidelines from [CONTRIBUTING.md](https://github.com/ros-controls/.github/blob/master/CONTRIBUTING.md) before you open a pull request.
3 |
4 | ## New Examples
5 | If you propose adding a new example, make sure that your new example has:
6 |
7 | - [ ] The correct folder structure (described in the main [README.md](README.md))
8 | - [ ] Example has *doc/README.rst* with description
9 | - [ ] Detailed commands how to run an example
10 | - [ ] Output examples of CLI commands
11 | - [ ] Screenshots with expected visualizations (if applicable)
12 |
--------------------------------------------------------------------------------
/example_2/ros2_control_demo_example_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | The ros2_control DiffBot example using a system hardware interface-type. It uses velocity command and position state interface. The example is the starting point to implement a hardware interface for differential-drive mobile robots.
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/example_16/ros2_control_demo_example_16.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | The ros2_control DiffBot example using a system hardware interface-type. It uses velocity command and position state interface. The example is the starting point to implement a hardware interface for differential-drive mobile robots.
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/example_7/README.md:
--------------------------------------------------------------------------------
1 | # ros2_control_demo_example_7
2 |
3 | A full tutorial for a 6 DOF robot for intermediate ROS 2 users.
4 |
5 | It consists of the following:
6 | * bringup: launch files and ros2_controller configuration
7 | * controller: a controller for the 6-DOF robot
8 | * description: the 6-DOF robot description
9 | * hardware: ros2_control hardware interface
10 | * reference_generator: A KDL-based reference generator for a fixed trajectory
11 |
12 | Find the documentation in [doc/userdoc.rst](doc/userdoc.rst) or on [control.ros.org](https://control.ros.org/master/doc/ros2_control_demos/example_7/doc/userdoc.html).
13 |
--------------------------------------------------------------------------------
/example_7/bringup/config/r6bot_controller.yaml:
--------------------------------------------------------------------------------
1 | controller_manager:
2 | ros__parameters:
3 | update_rate: 10 # Hz
4 |
5 | joint_state_broadcaster:
6 | type: joint_state_broadcaster/JointStateBroadcaster
7 |
8 |
9 | r6bot_controller:
10 | ros__parameters:
11 | type: ros2_control_demo_example_7/RobotController
12 | joints:
13 | - joint_1
14 | - joint_2
15 | - joint_3
16 | - joint_4
17 | - joint_5
18 | - joint_6
19 |
20 | command_interfaces:
21 | - position
22 | - velocity
23 |
24 | state_interfaces:
25 | - position
26 | - velocity
27 |
--------------------------------------------------------------------------------
/example_7/description/urdf/r6bot.urdf.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/example_5/bringup/config/rrbot_with_external_sensor_controllers.yaml:
--------------------------------------------------------------------------------
1 | controller_manager:
2 | ros__parameters:
3 | update_rate: 100 # Hz
4 |
5 | joint_state_broadcaster:
6 | type: joint_state_broadcaster/JointStateBroadcaster
7 |
8 | forward_position_controller:
9 | ros__parameters:
10 | type: forward_command_controller/ForwardCommandController
11 | joints:
12 | - joint1
13 | - joint2
14 | interface_name: position
15 |
16 | fts_broadcaster:
17 | ros__parameters:
18 | type: force_torque_sensor_broadcaster/ForceTorqueSensorBroadcaster
19 | sensor_name: tcp_fts_sensor
20 | frame_id: tool_link
21 |
--------------------------------------------------------------------------------
/example_1/bringup/config/rrbot_joint_trajectory_publisher.yaml:
--------------------------------------------------------------------------------
1 | publisher_joint_trajectory_controller:
2 | ros__parameters:
3 |
4 | controller_name: "joint_trajectory_position_controller"
5 | wait_sec_between_publish: 6
6 |
7 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
8 | pos1:
9 | positions: [0.785, 0.785]
10 | pos2:
11 | positions: [0.0, 0.0]
12 | pos3:
13 | positions: [-0.785, -0.785]
14 | pos4:
15 | positions: [0.0, 0.0]
16 |
17 | joints:
18 | - joint1
19 | - joint2
20 |
21 | check_starting_point: false
22 | starting_point_limits:
23 | joint1: [-0.1,0.1]
24 | joint2: [-0.1,0.1]
25 |
--------------------------------------------------------------------------------
/example_15/bringup/config/rrbot_namespace_joint_trajectory_publisher.yaml:
--------------------------------------------------------------------------------
1 | publisher_joint_trajectory_controller:
2 | ros__parameters:
3 |
4 | controller_name: "rrbot/position_trajectory_controller"
5 | wait_sec_between_publish: 6
6 |
7 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
8 | pos1:
9 | positions: [0.785, 0.785]
10 | pos2:
11 | positions: [0.0, 0.0]
12 | pos3:
13 | positions: [-0.785, -0.785]
14 | pos4:
15 | positions: [0.0, 0.0]
16 |
17 | joints:
18 | - joint1
19 | - joint2
20 |
21 | check_starting_point: false
22 | starting_point_limits:
23 | joint1: [-0.1,0.1]
24 | joint2: [-0.1,0.1]
25 |
--------------------------------------------------------------------------------
/example_1/bringup/config/rrbot_jtc.yaml:
--------------------------------------------------------------------------------
1 | joint_trajectory_position_controller:
2 | ros__parameters:
3 | type: joint_trajectory_controller/JointTrajectoryController
4 |
5 | joints:
6 | - joint1
7 | - joint2
8 |
9 | command_interfaces:
10 | - position
11 |
12 | state_interfaces:
13 | - position
14 |
15 | action_monitor_rate: 20.0 # Defaults to 20
16 |
17 | allow_partial_joints_goal: false # Defaults to false
18 | interpolate_from_desired_state: true
19 | allow_integration_in_goal_trajectories: true
20 | constraints:
21 | stopped_velocity_tolerance: 0.01 # Defaults to 0.01
22 | goal_time: 0.0 # Defaults to 0.0 (start immediately)
23 |
--------------------------------------------------------------------------------
/example_11/ros2_control_demo_example_11.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | The ros2_control CarlikeBot example using a system hardware interface-type. It uses velocity and position command and state interface for the drive motor and position command and state interface for the steering. The example is the starting point to implement a hardware interface for Ackermann and bicycle drive robots.
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/example_4/bringup/config/rrbot_with_sensor_controllers.yaml:
--------------------------------------------------------------------------------
1 | controller_manager:
2 | ros__parameters:
3 | update_rate: 100 # Hz
4 |
5 | joint_state_broadcaster:
6 | type: joint_state_broadcaster/JointStateBroadcaster
7 |
8 | forward_position_controller:
9 | ros__parameters:
10 | type: forward_command_controller/ForwardCommandController
11 | joints:
12 | - joint1
13 | - joint2
14 | interface_name: position
15 |
16 | fts_broadcaster:
17 | ros__parameters:
18 | type: force_torque_sensor_broadcaster/ForceTorqueSensorBroadcaster
19 | interface_names.force.x: tcp_fts_sensor/force.x
20 | interface_names.torque.z: tcp_fts_sensor/torque.z
21 | frame_id: tool_link
22 |
--------------------------------------------------------------------------------
/example_7/ros2_control_demo_example_7.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | Robot hardware plugin for 6 dof robot tutorial.
7 |
8 |
9 |
12 |
13 | Robot controller plugin for 6 dof robot tutorial.
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/ros2_control_demo_description/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.10)
2 | project(ros2_control_demo_description)
3 |
4 | find_package(ament_cmake REQUIRED)
5 |
6 | install(
7 | DIRECTORY rrbot/urdf rrbot/rviz
8 | DESTINATION share/${PROJECT_NAME}/rrbot
9 | )
10 |
11 | install(
12 | DIRECTORY diffbot/urdf diffbot/rviz
13 | DESTINATION share/${PROJECT_NAME}/diffbot
14 | )
15 |
16 | install(
17 | DIRECTORY carlikebot/urdf carlikebot/rviz
18 | DESTINATION share/${PROJECT_NAME}/carlikebot
19 | )
20 |
21 | install(
22 | DIRECTORY r3bot/urdf
23 | DESTINATION share/${PROJECT_NAME}/r3bot
24 | )
25 |
26 | install(
27 | DIRECTORY r6bot/meshes r6bot/srdf r6bot/urdf r6bot/rviz
28 | DESTINATION share/${PROJECT_NAME}/r6bot
29 | )
30 |
31 | ament_package()
32 |
--------------------------------------------------------------------------------
/ros2_control_demo_description/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_description
5 | 0.0.0
6 | Package with URDF and description files of test robots.
7 |
8 | Denis Štogl
9 | Christoph Fröhlich
10 |
11 | Apache-2.0
12 |
13 | ament_cmake
14 |
15 | rviz2
16 |
17 |
18 | ament_cmake
19 |
20 |
21 |
--------------------------------------------------------------------------------
/example_15/bringup/config/multi_controller_manager_forward_position_publisher.yaml:
--------------------------------------------------------------------------------
1 | /rrbot_1/publisher_forward_position_controller:
2 | ros__parameters:
3 |
4 |
5 | publish_topic: "forward_position_controller/commands"
6 | wait_sec_between_publish: 5
7 |
8 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
9 | pos1: [0.785, 0.785]
10 | pos2: [0.0, 0.0]
11 | pos3: [-0.785, -0.785]
12 | pos4: [0.0, 0.0]
13 |
14 |
15 | /rrbot_2/publisher_forward_position_controller:
16 | ros__parameters:
17 |
18 | publish_topic: "forward_position_controller/commands"
19 | wait_sec_between_publish: 5
20 |
21 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
22 | pos1: [-0.785, 0.0]
23 | pos2: [0.0, -0.785]
24 | pos3: [+0.785, -1.57]
25 | pos4: [+1.57, -0.785]
26 |
--------------------------------------------------------------------------------
/.github/workflows/jazzy-check-docs.yml:
--------------------------------------------------------------------------------
1 | name: Jazzy Check Docs
2 |
3 | on:
4 | workflow_dispatch:
5 | pull_request:
6 | branches:
7 | - jazzy
8 | paths:
9 | - '**.rst'
10 | - '**.md'
11 | - '**.jpg'
12 | - '**.jpeg'
13 | - '**.png'
14 | - '**.svg'
15 | - '**.yml'
16 | - '**.yaml'
17 | - '!.github/**' # exclude yaml files in .github directory
18 | - '.github/workflows/jazzy-check-docs.yml'
19 |
20 | concurrency:
21 | group: ${{ github.workflow }}-${{ github.ref }}
22 | cancel-in-progress: true
23 |
24 | jobs:
25 | check-docs:
26 | name: Check Docs
27 | uses: ros-controls/control.ros.org/.github/workflows/reusable-sphinx-check-single-version.yml@jazzy
28 | with:
29 | ROS2_CONTROL_DEMOS_PR: ${{ github.ref }}
30 |
--------------------------------------------------------------------------------
/.github/workflows/humble-check-docs.yml:
--------------------------------------------------------------------------------
1 | name: Humble Check Docs
2 |
3 | on:
4 | workflow_dispatch:
5 | pull_request:
6 | branches:
7 | - humble
8 | paths:
9 | - '**.rst'
10 | - '**.md'
11 | - '**.jpg'
12 | - '**.jpeg'
13 | - '**.png'
14 | - '**.svg'
15 | - '**.yml'
16 | - '**.yaml'
17 | - '!.github/**' # exclude yaml files in .github directory
18 | - '.github/workflows/humble-check-docs.yml'
19 |
20 | concurrency:
21 | group: ${{ github.workflow }}-${{ github.ref }}
22 | cancel-in-progress: true
23 |
24 | jobs:
25 | check-docs:
26 | name: Check Docs
27 | uses: ros-controls/control.ros.org/.github/workflows/reusable-sphinx-check-single-version.yml@humble
28 | with:
29 | ROS2_CONTROL_DEMOS_PR: ${{ github.ref }}
30 |
--------------------------------------------------------------------------------
/example_10/bringup/config/rrbot_controllers.yaml:
--------------------------------------------------------------------------------
1 | controller_manager:
2 | ros__parameters:
3 | update_rate: 10 # Hz
4 |
5 | joint_state_broadcaster:
6 | type: joint_state_broadcaster/JointStateBroadcaster
7 |
8 |
9 | forward_position_controller:
10 | ros__parameters:
11 | type: forward_command_controller/ForwardCommandController
12 | joints:
13 | - joint1
14 | - joint2
15 | interface_name: position
16 |
17 | gpio_controller:
18 | ros__parameters:
19 | type: gpio_controllers/GpioCommandController
20 | gpios:
21 | - flange_analog_IOs
22 | - flange_vacuum
23 | command_interfaces:
24 | flange_analog_IOs:
25 | - interfaces:
26 | - analog_output1
27 | flange_vacuum:
28 | - interfaces:
29 | - vacuum
30 |
--------------------------------------------------------------------------------
/.github/workflows/rolling-check-docs.yml:
--------------------------------------------------------------------------------
1 | name: Rolling Check Docs
2 |
3 | on:
4 | workflow_dispatch:
5 | pull_request:
6 | branches:
7 | - master
8 | paths:
9 | - '**.rst'
10 | - '**.md'
11 | - '**.jpg'
12 | - '**.jpeg'
13 | - '**.png'
14 | - '**.svg'
15 | - '**.yml'
16 | - '**.yaml'
17 | - '!.github/**' # exclude yaml files in .github directory
18 | - '.github/workflows/rolling-check-docs.yml'
19 |
20 | concurrency:
21 | group: ${{ github.workflow }}-${{ github.ref }}
22 | cancel-in-progress: true
23 |
24 | jobs:
25 | check-docs:
26 | name: Check Docs
27 | uses: ros-controls/control.ros.org/.github/workflows/reusable-sphinx-check-single-version.yml@rolling
28 | with:
29 | ROS2_CONTROL_DEMOS_PR: ${{ github.ref }}
30 |
--------------------------------------------------------------------------------
/example_14/ros2_control_demo_example_14.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | The ros2_control RRBot's actuators without feedback that can be controlled by different endpoints.
7 |
8 |
9 |
12 |
13 | The ros2_control RRBot's position sensors that can be used with actuators without feedback.
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/example_5/ros2_control_demo_example_5.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | The ros2_control RRBot example using external Force Torque Sensor where it is separate from the RRBot.
7 |
8 |
9 |
12 |
13 | The ros2_control RRbot example using a system hardware interface-type.
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/example_11/description/urdf/carlikebot.urdf.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/example_11/bringup/config/carlikebot_controllers.yaml:
--------------------------------------------------------------------------------
1 | controller_manager:
2 | ros__parameters:
3 | update_rate: 10 # Hz
4 |
5 | joint_state_broadcaster:
6 | type: joint_state_broadcaster/JointStateBroadcaster
7 |
8 |
9 | bicycle_steering_controller:
10 | ros__parameters:
11 | type: bicycle_steering_controller/BicycleSteeringController
12 |
13 | traction_joints_names: ['virtual_rear_wheel_joint']
14 | steering_joints_names: ['virtual_front_wheel_joint']
15 | wheelbase: 0.325
16 | traction_wheel_radius: 0.05
17 |
18 | reference_timeout: 2.0
19 |
20 | open_loop: false
21 | position_feedback: false
22 | velocity_rolling_window_size: 10
23 | base_frame_id: base_link
24 | odom_frame_id: odom
25 | enable_odom_tf: true
26 | twist_covariance_diagonal: [0.0, 7.0, 14.0, 21.0, 28.0, 35.0]
27 | pose_covariance_diagonal: [0.0, 7.0, 14.0, 21.0, 28.0, 35.0]
28 |
--------------------------------------------------------------------------------
/example_16/description/urdf/diffbot.urdf.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/example_2/description/urdf/diffbot.urdf.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/ros2_control_demos.humble.repos:
--------------------------------------------------------------------------------
1 | repositories:
2 | control_msgs:
3 | type: git
4 | url: https://github.com/ros-controls/control_msgs.git
5 | version: humble
6 | realtime_tools:
7 | type: git
8 | url: https://github.com/ros-controls/realtime_tools.git
9 | version: humble
10 | ros2_control:
11 | type: git
12 | url: https://github.com/ros-controls/ros2_control.git
13 | version: humble
14 | ros2_controllers:
15 | type: git
16 | url: https://github.com/ros-controls/ros2_controllers.git
17 | version: humble
18 | gz_ros2_control:
19 | type: git
20 | url: https://github.com/ros-controls/gz_ros2_control.git
21 | version: humble
22 | control_toolbox:
23 | type: git
24 | url: https://github.com/ros-controls/control_toolbox.git
25 | version: humble
26 | kinematics_interface:
27 | type: git
28 | url: https://github.com/ros-controls/kinematics_interface.git
29 | version: humble
30 |
--------------------------------------------------------------------------------
/.github/workflows/jazzy-docker-build.yml:
--------------------------------------------------------------------------------
1 | name: Build Jazzy Dockerfile
2 | # description: builds the dockerfile contained within the repo
3 |
4 | on:
5 | pull_request: &event
6 | branches:
7 | - jazzy
8 | paths:
9 | - '**.hpp'
10 | - '**.cpp'
11 | - Dockerfile/**
12 | - '.github/workflows/jazzy-docker-build.yml'
13 | - '**/package.xml'
14 | - '**/CMakeLists.txt'
15 | - '**.xacro'
16 | - '**.py'
17 | - '**.yaml'
18 | - 'ros2_control_demos.jazzy.repos'
19 | push: *event
20 | schedule:
21 | # Run every morning to detect broken dependencies
22 | - cron: '40 1 * * MON-FRI'
23 |
24 |
25 | jobs:
26 | build:
27 | runs-on: ubuntu-latest
28 | steps:
29 | - uses: actions/checkout@v6
30 | with:
31 | ref: jazzy
32 | - name: Build the Docker image
33 | run: docker build --file Dockerfile/Dockerfile --tag ros2_control_demos_jazzy --build-arg ROS_DISTRO=jazzy .
34 |
--------------------------------------------------------------------------------
/.github/workflows/humble-docker-build.yml:
--------------------------------------------------------------------------------
1 | name: Build Humble Dockerfile
2 | # description: builds the dockerfile contained within the repo
3 |
4 | on:
5 | pull_request: &event
6 | branches:
7 | - humble
8 | paths:
9 | - '**.hpp'
10 | - '**.cpp'
11 | - Dockerfile/**
12 | - '.github/workflows/humble-docker-build.yml'
13 | - '**/package.xml'
14 | - '**/CMakeLists.txt'
15 | - '**.xacro'
16 | - '**.py'
17 | - '**.yaml'
18 | - 'ros2_control_demos.humble.repos'
19 | push: *event
20 | schedule:
21 | # Run every morning to detect broken dependencies
22 | - cron: '40 1 * * MON-FRI'
23 |
24 |
25 | jobs:
26 | build:
27 | runs-on: ubuntu-latest
28 | steps:
29 | - uses: actions/checkout@v6
30 | with:
31 | ref: humble
32 | - name: Build the Docker image
33 | run: docker build --file Dockerfile/Dockerfile --tag ros2_control_demos_humble --build-arg ROS_DISTRO=humble .
34 |
--------------------------------------------------------------------------------
/.github/workflows/jazzy-semi-binary-build.yml:
--------------------------------------------------------------------------------
1 | name: Jazzy Semi-Binary Build
2 | # description: 'Build & test that compiles the main dependencies from source.'
3 |
4 | on:
5 | pull_request: &event
6 | branches:
7 | - jazzy
8 | paths:
9 | - '**.hpp'
10 | - '**.cpp'
11 | - '.github/workflows/jazzy-semi-binary-build.yml'
12 | - '**/package.xml'
13 | - '**/CMakeLists.txt'
14 | - '**.xacro'
15 | - '**.py'
16 | - '**.yaml'
17 | - 'ros2_control_demos.jazzy.repos'
18 | - '**.xml'
19 | push: *event
20 | schedule:
21 | # Run every morning to detect flakiness and broken dependencies
22 | - cron: '33 1 * * MON-FRI'
23 |
24 | jobs:
25 | semi_binary:
26 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master
27 | with:
28 | ros_distro: jazzy
29 | ros_repo: testing
30 | upstream_workspace: ros2_control_demos.jazzy.repos
31 | ref_for_scheduled_build: jazzy
32 |
--------------------------------------------------------------------------------
/.github/workflows/humble-semi-binary-build.yml:
--------------------------------------------------------------------------------
1 | name: Humble Semi-Binary Build
2 | # description: 'Build & test that compiles the main dependencies from source.'
3 |
4 | on:
5 | pull_request: &event
6 | branches:
7 | - humble
8 | paths:
9 | - '**.hpp'
10 | - '**.cpp'
11 | - '.github/workflows/humble-semi-binary-build.yml'
12 | - '**/package.xml'
13 | - '**/CMakeLists.txt'
14 | - '**.xacro'
15 | - '**.py'
16 | - '**.yaml'
17 | - 'ros2_control_demos.humble.repos'
18 | - '**.xml'
19 | push: *event
20 | schedule:
21 | # Run every morning to detect flakiness and broken dependencies
22 | - cron: '33 1 * * MON-FRI'
23 |
24 | jobs:
25 | semi_binary:
26 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master
27 | with:
28 | ros_distro: humble
29 | ros_repo: testing
30 | upstream_workspace: ros2_control_demos.humble.repos
31 | ref_for_scheduled_build: humble
32 |
--------------------------------------------------------------------------------
/example_11/description/ros2_control/carlikebot.ros2_control.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | ros2_control_demo_example_11/CarlikeBotSystemHardware
9 | 0
10 | 3.0
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/ros2_control_demo_description/r6bot/urdf/inc/create_link.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # To get started with Dependabot version updates, you'll need to specify which
2 | # package ecosystems to update and where the package manifests are located.
3 | # Please see the documentation for all configuration options:
4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5 |
6 | version: 2
7 | updates:
8 | - package-ecosystem: "github-actions"
9 | # Workflow files stored in the
10 | # default location of `.github/workflows`
11 | directory: "/"
12 | schedule:
13 | interval: "weekly"
14 | - package-ecosystem: "github-actions"
15 | # Workflow files stored in the
16 | # default location of `.github/workflows`
17 | directory: "/"
18 | schedule:
19 | interval: "weekly"
20 | target-branch: "jazzy"
21 | - package-ecosystem: "github-actions"
22 | # Workflow files stored in the
23 | # default location of `.github/workflows`
24 | directory: "/"
25 | schedule:
26 | interval: "weekly"
27 | target-branch: "humble"
28 |
--------------------------------------------------------------------------------
/ros2_control_demo_description/diffbot/urdf/diffbot.materials.xacro:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/ros2_control_demos.jazzy.repos:
--------------------------------------------------------------------------------
1 | repositories:
2 | control_msgs:
3 | type: git
4 | url: https://github.com/ros-controls/control_msgs.git
5 | version: jazzy
6 | realtime_tools:
7 | type: git
8 | url: https://github.com/ros-controls/realtime_tools.git
9 | version: jazzy
10 | ros2_control:
11 | type: git
12 | url: https://github.com/ros-controls/ros2_control.git
13 | version: jazzy
14 | ros2_controllers:
15 | type: git
16 | url: https://github.com/ros-controls/ros2_controllers.git
17 | version: jazzy
18 | gz_ros2_control:
19 | type: git
20 | url: https://github.com/ros-controls/gz_ros2_control.git
21 | version: jazzy
22 | control_toolbox:
23 | type: git
24 | url: https://github.com/ros-controls/control_toolbox.git
25 | version: jazzy
26 | ros2_control_cmake:
27 | type: git
28 | url: https://github.com/ros-controls/ros2_control_cmake.git
29 | version: master
30 | kinematics_interface:
31 | type: git
32 | url: https://github.com/ros-controls/kinematics_interface.git
33 | version: jazzy
34 |
--------------------------------------------------------------------------------
/ros2_control_demos.kilted.repos:
--------------------------------------------------------------------------------
1 | repositories:
2 | control_msgs:
3 | type: git
4 | url: https://github.com/ros-controls/control_msgs.git
5 | version: master
6 | realtime_tools:
7 | type: git
8 | url: https://github.com/ros-controls/realtime_tools.git
9 | version: kilted
10 | ros2_control:
11 | type: git
12 | url: https://github.com/ros-controls/ros2_control.git
13 | version: kilted
14 | ros2_controllers:
15 | type: git
16 | url: https://github.com/ros-controls/ros2_controllers.git
17 | version: kilted
18 | gz_ros2_control:
19 | type: git
20 | url: https://github.com/ros-controls/gz_ros2_control.git
21 | version: rolling
22 | control_toolbox:
23 | type: git
24 | url: https://github.com/ros-controls/control_toolbox.git
25 | version: kilted
26 | ros2_control_cmake:
27 | type: git
28 | url: https://github.com/ros-controls/ros2_control_cmake.git
29 | version: master
30 | kinematics_interface:
31 | type: git
32 | url: https://github.com/ros-controls/kinematics_interface.git
33 | version: master
34 |
--------------------------------------------------------------------------------
/ros2_control_demos.rolling.repos:
--------------------------------------------------------------------------------
1 | repositories:
2 | control_msgs:
3 | type: git
4 | url: https://github.com/ros-controls/control_msgs.git
5 | version: master
6 | realtime_tools:
7 | type: git
8 | url: https://github.com/ros-controls/realtime_tools.git
9 | version: master
10 | ros2_control:
11 | type: git
12 | url: https://github.com/ros-controls/ros2_control.git
13 | version: master
14 | ros2_controllers:
15 | type: git
16 | url: https://github.com/ros-controls/ros2_controllers.git
17 | version: master
18 | gz_ros2_control:
19 | type: git
20 | url: https://github.com/ros-controls/gz_ros2_control.git
21 | version: rolling
22 | control_toolbox:
23 | type: git
24 | url: https://github.com/ros-controls/control_toolbox.git
25 | version: master
26 | ros2_control_cmake:
27 | type: git
28 | url: https://github.com/ros-controls/ros2_control_cmake.git
29 | version: master
30 | kinematics_interface:
31 | type: git
32 | url: https://github.com/ros-controls/kinematics_interface.git
33 | version: master
34 |
--------------------------------------------------------------------------------
/example_13/bringup/config/three_robots_position_command_publishers.yaml:
--------------------------------------------------------------------------------
1 | rrbot_position_command_publisher:
2 | ros__parameters:
3 |
4 | publish_topic: "/rrbot_position_controller/commands"
5 | wait_sec_between_publish: 5
6 |
7 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
8 | pos1: [0.785, 0.785]
9 | pos2: [0.0, 0.0]
10 | pos3: [-0.785, -0.785]
11 | pos4: [0.0, 0.0]
12 |
13 |
14 | rrbot_with_sensor_position_command_publisher:
15 | ros__parameters:
16 |
17 | publish_topic: "/rrbot_with_sensor_position_controller/commands"
18 | wait_sec_between_publish: 4
19 |
20 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
21 | pos1: [0.785, 0.785]
22 | pos2: [0.0, 0.0]
23 | pos3: [-0.785, -0.785]
24 | pos4: [0.0, 0.0]
25 |
26 |
27 | threedofbot_position_command_publisher:
28 | ros__parameters:
29 |
30 | publish_topic: "/threedofbot_position_controller/commands"
31 | wait_sec_between_publish: 3
32 |
33 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
34 | pos1: [0.785, 0.785, 0.785]
35 | pos2: [0.0, 0.0, 0.0]
36 | pos3: [-0.785, -0.785, -0.785]
37 | pos4: [0.0, 0.0, 0.0]
38 |
--------------------------------------------------------------------------------
/example_12/description/urdf/rrbot.urdf.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
28 |
29 |
--------------------------------------------------------------------------------
/example_1/description/urdf/rrbot.urdf.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/example_17/description/urdf/rrbot.urdf.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/ros2_control_demo_description/rrbot/urdf/rrbot.materials.xacro:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/.github/workflows/jazzy-binary-build.yml:
--------------------------------------------------------------------------------
1 | name: Jazzy Binary Build
2 | # author: Denis Štogl
3 | # description: 'Build & test all dependencies from released (binary) packages.'
4 |
5 | on:
6 | pull_request: &event
7 | branches:
8 | - jazzy
9 | paths:
10 | - '**.hpp'
11 | - '**.cpp'
12 | - '.github/workflows/jazzy-binary-build.yml'
13 | - '**/package.xml'
14 | - '**/CMakeLists.txt'
15 | - '**.xacro'
16 | - '**.py'
17 | - '**.yaml'
18 | - 'ros2_control_demos-not-released.jazzy.repos'
19 | - '**.xml'
20 | push: *event
21 | schedule:
22 | # Run every morning to detect flakiness and broken dependencies
23 | - cron: '03 1 * * MON-FRI'
24 |
25 | jobs:
26 | binary:
27 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master
28 | strategy:
29 | fail-fast: false
30 | matrix:
31 | ROS_REPO: [main, testing]
32 | with:
33 | ros_distro: jazzy
34 | ros_repo: ${{ matrix.ROS_REPO }}
35 | upstream_workspace: ros2_control_demos-not-released.jazzy.repos
36 | ref_for_scheduled_build: jazzy
37 |
--------------------------------------------------------------------------------
/ros2_control_demo_description/carlikebot/urdf/carlikebot.materials.xacro:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/.github/workflows/rolling-docker-build.yaml:
--------------------------------------------------------------------------------
1 | name: Build Rolling Dockerfile
2 | # description: builds the dockerfile contained within the repo
3 |
4 | on:
5 | pull_request: &event
6 | branches:
7 | - master
8 | paths:
9 | - '**.hpp'
10 | - '**.cpp'
11 | - Dockerfile/**
12 | - '.github/workflows/rolling-docker-build.yml'
13 | - '**/package.xml'
14 | - '**/CMakeLists.txt'
15 | - '**.xacro'
16 | - '**.py'
17 | - '**.yaml'
18 | - 'ros2_control_demos.rolling.repos'
19 | - 'ros2_control_demos.kilted.repos'
20 | - '**.xml'
21 | push: *event
22 | schedule:
23 | # Run every morning to detect broken dependencies
24 | - cron: '50 1 * * MON-FRI'
25 |
26 |
27 | jobs:
28 | build:
29 | runs-on: ubuntu-latest
30 | strategy:
31 | fail-fast: false
32 | matrix:
33 | ROS_DISTRO: [rolling, kilted]
34 | steps:
35 | - uses: actions/checkout@v6
36 | with:
37 | ref: master
38 | - name: Build the Docker image
39 | run: docker build --file Dockerfile/Dockerfile --tag ros2_control_demos_${{ matrix.ROS_DISTRO }} --build-arg ROS_DISTRO=${{ matrix.ROS_DISTRO }} .
40 |
--------------------------------------------------------------------------------
/example_12/bringup/config/rrbot_chained_controllers.yaml:
--------------------------------------------------------------------------------
1 | controller_manager:
2 | ros__parameters:
3 | update_rate: 10 # Hz
4 |
5 | joint_state_broadcaster:
6 | type: joint_state_broadcaster/JointStateBroadcaster
7 |
8 |
9 | # First-level controllers
10 | joint1_position_controller:
11 | ros__parameters:
12 | type: passthrough_controller/PassthroughController
13 | interfaces: ["joint1/position"]
14 |
15 | joint2_position_controller:
16 | ros__parameters:
17 | type: passthrough_controller/PassthroughController
18 | interfaces: ["joint2/position"]
19 |
20 | # Second-level controller
21 | position_controller:
22 | ros__parameters:
23 | type: passthrough_controller/PassthroughController
24 | interfaces:
25 | - joint1_position_controller/joint1/position
26 | - joint2_position_controller/joint2/position
27 |
28 | # Third-level controllers
29 | forward_position_controller:
30 | ros__parameters:
31 | type: forward_command_controller/ForwardCommandController
32 | joints:
33 | - position_controller/joint1_position_controller/joint1
34 | - position_controller/joint2_position_controller/joint2
35 | interface_name: position
36 |
--------------------------------------------------------------------------------
/example_15/bringup/config/rrbot_namespace_controllers.yaml:
--------------------------------------------------------------------------------
1 | /rrbot/controller_manager:
2 | ros__parameters:
3 | update_rate: 10 # Hz
4 |
5 | joint_state_broadcaster:
6 | type: joint_state_broadcaster/JointStateBroadcaster
7 |
8 |
9 | /rrbot/forward_position_controller:
10 | ros__parameters:
11 | type: forward_command_controller/ForwardCommandController
12 | joints:
13 | - joint1
14 | - joint2
15 | interface_name: position
16 |
17 |
18 | /rrbot/position_trajectory_controller:
19 | ros__parameters:
20 | type: joint_trajectory_controller/JointTrajectoryController
21 | joints:
22 | - joint1
23 | - joint2
24 |
25 | command_interfaces:
26 | - position
27 |
28 | state_interfaces:
29 | - position
30 |
31 | state_publish_rate: 200.0 # Defaults to 50
32 | action_monitor_rate: 20.0 # Defaults to 20
33 |
34 | allow_partial_joints_goal: false # Defaults to false
35 | interpolate_from_desired_state: true
36 | allow_integration_in_goal_trajectories: true
37 | constraints:
38 | stopped_velocity_tolerance: 0.01 # Defaults to 0.01
39 | goal_time: 0.0 # Defaults to 0.0 (start immediately)
40 |
--------------------------------------------------------------------------------
/.github/workflows/humble-binary-build.yml:
--------------------------------------------------------------------------------
1 | name: Humble Binary Build
2 | # description: 'Build & test all dependencies from released (binary) packages.'
3 |
4 | on:
5 | pull_request: &event
6 | branches:
7 | - humble
8 | paths:
9 | - '**.hpp'
10 | - '**.cpp'
11 | - '.github/workflows/humble-binary-build.yml'
12 | - '**/package.xml'
13 | - '**/CMakeLists.txt'
14 | - '**.xacro'
15 | - '**.py'
16 | - '**.yaml'
17 | - 'ros2_control_demos-not-released.humble.repos'
18 | - '**.xml'
19 | push: *event
20 | schedule:
21 | # Run every morning to detect flakiness and broken dependencies
22 | - cron: '03 1 * * MON-FRI'
23 |
24 | jobs:
25 | binary:
26 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master
27 | strategy:
28 | fail-fast: false
29 | matrix:
30 | ROS_DISTRO: [humble]
31 | ROS_REPO: [main, testing]
32 | with:
33 | ros_distro: ${{ matrix.ROS_DISTRO }}
34 | ros_repo: ${{ matrix.ROS_REPO }}
35 | upstream_workspace: ros2_control_demos-not-released.${{ matrix.ROS_DISTRO }}.repos
36 | ref_for_scheduled_build: humble
37 |
--------------------------------------------------------------------------------
/.github/workflows/rolling-semi-binary-build.yml:
--------------------------------------------------------------------------------
1 | name: Rolling Semi-Binary Build
2 | # description: 'Build & test that compiles the main dependencies from source.'
3 |
4 | on:
5 | pull_request: &event
6 | branches:
7 | - master
8 | paths:
9 | - '**.hpp'
10 | - '**.cpp'
11 | - '.github/workflows/rolling-semi-binary-build.yml'
12 | - '**/package.xml'
13 | - '**/CMakeLists.txt'
14 | - '**.xacro'
15 | - '**.py'
16 | - '**.yaml'
17 | - 'ros2_control_demos.rolling.repos'
18 | - 'ros2_control_demos.kilted.repos'
19 | - '**.xml'
20 | push: *event
21 | schedule:
22 | # Run every morning to detect flakiness and broken dependencies
23 | - cron: '33 1 * * MON-FRI'
24 |
25 | jobs:
26 | semi_binary:
27 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master
28 | strategy:
29 | fail-fast: false
30 | matrix:
31 | ROS_DISTRO: [rolling, kilted]
32 | with:
33 | ros_distro: ${{ matrix.ROS_DISTRO }}
34 | ros_repo: testing
35 | upstream_workspace: ros2_control_demos.${{ matrix.ROS_DISTRO }}.repos
36 | ref_for_scheduled_build: master
37 |
--------------------------------------------------------------------------------
/example_1/description/ros2_control/rrbot.ros2_control.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | ros2_control_demo_example_1/RRBotSystemPositionOnlyHardware
9 | 0
10 | 3.0
11 | 100
12 |
13 |
14 |
15 |
16 | -1
17 | 1
18 |
19 |
20 |
21 |
22 |
23 | -1
24 | 1
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/example_3/bringup/config/rrbot_multi_interface_forward_controllers.yaml:
--------------------------------------------------------------------------------
1 | controller_manager:
2 | ros__parameters:
3 | update_rate: 100 # Hz
4 |
5 | joint_state_broadcaster:
6 | type: joint_state_broadcaster/JointStateBroadcaster
7 |
8 | forward_position_controller:
9 | ros__parameters:
10 | type: position_controllers/JointGroupPositionController
11 | joints:
12 | - joint1
13 | - joint2
14 |
15 | forward_velocity_controller:
16 | ros__parameters:
17 | type: velocity_controllers/JointGroupVelocityController
18 | joints:
19 | - joint1
20 | - joint2
21 |
22 | forward_acceleration_controller:
23 | ros__parameters:
24 | type: forward_command_controller/ForwardCommandController
25 | joints:
26 | - joint1
27 | - joint2
28 | interface_name: acceleration
29 |
30 | forward_illegal1_controller:
31 | ros__parameters:
32 | type: forward_command_controller/ForwardCommandController
33 | joints:
34 | - joint1
35 | interface_name: position
36 |
37 | forward_illegal2_controller:
38 | ros__parameters:
39 | type: forward_command_controller/ForwardCommandController
40 | joints:
41 | - joint2
42 | interface_name: position
43 |
--------------------------------------------------------------------------------
/example_12/description/ros2_control/rrbot.ros2_control.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | ros2_control_demo_example_12/RRBotSystemPositionOnlyHardware
9 | 0
10 | 3.0
11 | 100
12 |
13 |
14 |
15 |
16 | -1
17 | 1
18 |
19 |
20 |
21 |
22 |
23 | -1
24 | 1
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/stale.yml:
--------------------------------------------------------------------------------
1 | name: 'Stale issues and PRs'
2 | on:
3 | workflow_dispatch:
4 | schedule:
5 | # UTC noon every workday
6 | - cron: '0 12 * * MON-FRI'
7 |
8 | jobs:
9 | stale:
10 | runs-on: ubuntu-latest
11 | permissions:
12 | issues: write
13 | pull-requests: write
14 | steps:
15 | - uses: actions/stale@v9
16 | with:
17 | stale-issue-label: 'stale'
18 | stale-pr-label: 'stale'
19 | stale-issue-message: 'This issue is being labeled as stale because it has been open 45 days with no activity. It will be automatically closed after another 45 days without follow-ups.'
20 | close-issue-message: 'This issue was closed because it has been stalled for 45 days with no activity.'
21 | stale-pr-message: 'This PR is stale because it has been open for 45 days with no activity. Please tag a maintainer for help on completing this PR, or close it if you think it has become obsolete.'
22 | days-before-stale: 45
23 | days-before-close: 45
24 | days-before-pr-close: -1
25 | exempt-all-milestones: true
26 | exempt-issue-labels: good first issue,good second issue,persistent,release,roadmap,Epic
27 | operations-per-run: 100
28 |
--------------------------------------------------------------------------------
/example_10/description/urdf/rrbot.urdf.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/.github/workflows/stale.yml:
--------------------------------------------------------------------------------
1 | name: 'Stale issues and PRs'
2 | on:
3 | workflow_dispatch:
4 | schedule:
5 | # UTC noon every workday
6 | - cron: '0 12 * * MON-FRI'
7 |
8 | jobs:
9 | stale:
10 | runs-on: ubuntu-latest
11 | permissions:
12 | issues: write
13 | pull-requests: write
14 | steps:
15 | - uses: actions/stale@v10
16 | with:
17 | stale-issue-label: 'stale'
18 | stale-pr-label: 'stale'
19 | stale-issue-message: 'This issue is being labeled as stale because it has been open 45 days with no activity. It will be automatically closed after another 45 days without follow-ups.'
20 | close-issue-message: 'This issue was closed because it has been stalled for 45 days with no activity.'
21 | stale-pr-message: 'This PR is stale because it has been open for 45 days with no activity. Please tag a maintainer for help on completing this PR, or close it if you think it has become obsolete.'
22 | days-before-stale: 45
23 | days-before-close: 45
24 | days-before-pr-close: -1
25 | exempt-all-milestones: true
26 | exempt-issue-labels: good first issue,good second issue,persistent,release,roadmap,Epic
27 | operations-per-run: 100
28 |
--------------------------------------------------------------------------------
/example_17/description/ros2_control/rrbot.ros2_control.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | ros2_control_demo_example_17/RRBotSystemPositionOnlyHardware
9 | 0
10 | 3.0
11 | 100
12 | 10
13 |
14 |
15 |
16 |
17 | -1
18 | 1
19 |
20 |
21 |
22 |
23 |
24 | -1
25 | 1
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/.github/workflows/rolling-binary-build.yml:
--------------------------------------------------------------------------------
1 | name: Rolling Binary Build
2 | # author: Denis Štogl
3 | # description: 'Build & test all dependencies from released (binary) packages.'
4 |
5 | on:
6 | pull_request: &event
7 | branches:
8 | - master
9 | paths:
10 | - '**.hpp'
11 | - '**.cpp'
12 | - '.github/workflows/rolling-binary-build.yml'
13 | - '**/package.xml'
14 | - '**/CMakeLists.txt'
15 | - '**.xacro'
16 | - '**.py'
17 | - '**.yaml'
18 | - 'ros2_control_demos-not-released.rolling.repos'
19 | - 'ros2_control_demos-not-released.kilted.repos'
20 | - '**.xml'
21 | push: *event
22 | schedule:
23 | # Run every morning to detect flakiness and broken dependencies
24 | - cron: '03 1 * * MON-FRI'
25 |
26 | jobs:
27 | binary:
28 | uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master
29 | strategy:
30 | fail-fast: false
31 | matrix:
32 | ROS_DISTRO: [rolling, kilted]
33 | ROS_REPO: [main, testing]
34 | with:
35 | ros_distro: ${{ matrix.ROS_DISTRO }}
36 | ros_repo: ${{ matrix.ROS_REPO }}
37 | upstream_workspace: ros2_control_demos-not-released.${{ matrix.ROS_DISTRO }}.repos
38 | ref_for_scheduled_build: master
39 |
--------------------------------------------------------------------------------
/Dockerfile/Dockerfile:
--------------------------------------------------------------------------------
1 | ARG ROS_DISTRO=rolling
2 |
3 | FROM ros:${ROS_DISTRO}-ros-base
4 |
5 | ENV DEBIAN_FRONTEND noninteractive
6 |
7 | RUN apt-get update \
8 | && apt-get upgrade -y \
9 | && \
10 | : "remove cache" && \
11 | apt-get autoremove -y -qq && \
12 | rm -rf /var/lib/apt/lists/*
13 |
14 | COPY . /home/ros2_ws/src/ros2_control_demos
15 |
16 | RUN cd /home/ros2_ws/src \
17 | && rosdep update --rosdistro ${ROS_DISTRO} \
18 | # uncomment this line if you want to use the latest version of ros2_control
19 | # && vcs import --input https://raw.githubusercontent.com/ros-controls/ros2_control_ci/master/ros_controls.rolling-on-$ROS_DISTRO.repos \
20 | && apt-get update \
21 | && rosdep install --from-paths ./ -i -y --rosdistro ${ROS_DISTRO} \
22 | --skip-keys ros-${ROS_DISTRO}-joint-state-publisher-gui --skip-keys ros-${ROS_DISTRO}-rviz2 \
23 | && \
24 | : "remove cache" && \
25 | apt-get autoremove -y -qq && \
26 | rm -rf /var/lib/apt/lists/*
27 |
28 | RUN cd /home/ros2_ws/ \
29 | && . /opt/ros/${ROS_DISTRO}/setup.sh \
30 | && colcon build --cmake-args -DBUILD_TESTING=OFF --symlink-install --packages-up-to ros2_control_demos
31 |
32 | COPY Dockerfile/entrypoint.sh /entrypoint.sh
33 | ENTRYPOINT ["/entrypoint.sh"]
34 |
35 | CMD ros2 launch ros2_control_demo_example_1 rrbot.launch.py gui:=false
36 |
--------------------------------------------------------------------------------
/example_6/description/urdf/rrbot_modular_actuators.urdf.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/example_15/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.16)
2 | project(ros2_control_demo_example_15 LANGUAGES CXX)
3 |
4 | find_package(ros2_control_cmake REQUIRED)
5 | set_compiler_options()
6 | export_windows_symbols()
7 |
8 | # find dependencies
9 | set(THIS_PACKAGE_INCLUDE_DEPENDS
10 | )
11 |
12 | # find dependencies
13 | find_package(ament_cmake REQUIRED)
14 | foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
15 | find_package(${Dependency} REQUIRED)
16 | endforeach()
17 |
18 | # INSTALL
19 | install(
20 | DIRECTORY description/rviz
21 | DESTINATION share/ros2_control_demo_example_15
22 | )
23 | install(
24 | DIRECTORY bringup/launch bringup/config
25 | DESTINATION share/ros2_control_demo_example_15
26 | )
27 |
28 | if(BUILD_TESTING)
29 | # Integration (launch) tests
30 | find_package(ament_cmake_ros REQUIRED)
31 | find_package(launch_testing_ament_cmake REQUIRED)
32 | function(add_ros_isolated_launch_test path)
33 | set(RUNNER "${ament_cmake_ros_DIR}/run_test_isolated.py")
34 | add_launch_test("${path}" RUNNER "${RUNNER}" ${ARGN})
35 | endfunction()
36 | add_ros_isolated_launch_test(test/test_rrbot_namespace_launch.py)
37 | add_ros_isolated_launch_test(test/test_multi_controller_manager_launch.py)
38 | endif()
39 |
40 | ## EXPORTS
41 | ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS})
42 | ament_package()
43 |
--------------------------------------------------------------------------------
/example_16/description/ros2_control/diffbot.ros2_control.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | ros2_control_demo_example_16/DiffBotSystemHardware
10 | 0
11 | 3.0
12 |
13 |
14 |
15 |
16 | mock_components/GenericSystem
17 | true
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/example_2/description/ros2_control/diffbot.ros2_control.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | ros2_control_demo_example_2/DiffBotSystemHardware
10 | 0
11 | 3.0
12 |
13 |
14 |
15 |
16 | mock_components/GenericSystem
17 | true
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/example_15/bringup/config/multi_controller_manager_joint_trajectory_publisher.yaml:
--------------------------------------------------------------------------------
1 | /rrbot_1/publisher_joint_trajectory_controller:
2 | ros__parameters:
3 |
4 | controller_name: "rrbot_1/position_trajectory_controller"
5 | wait_sec_between_publish: 6
6 |
7 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
8 | pos1:
9 | positions: [0.785, 0.785]
10 | pos2:
11 | positions: [0.0, 0.0]
12 | pos3:
13 | positions: [-0.785, -0.785]
14 | pos4:
15 | positions: [0.0, 0.0]
16 |
17 | joints:
18 | - rrbot_1_joint1
19 | - rrbot_1_joint2
20 |
21 | check_starting_point: false
22 | starting_point_limits:
23 | joint1: [-0.1,0.1]
24 | joint2: [-0.1,0.1]
25 |
26 |
27 | /rrbot_2/publisher_joint_trajectory_controller:
28 | ros__parameters:
29 |
30 | controller_name: "rrbot_2/position_trajectory_controller"
31 | wait_sec_between_publish: 6
32 |
33 | goal_names: ["pos1", "pos2", "pos3", "pos4"]
34 | pos1:
35 | positions: [-0.785, 0.0]
36 | pos2:
37 | positions: [0.0, -0.785]
38 | pos3:
39 | positions: [+0.785, -1.57]
40 | pos4:
41 | positions: [+1.57, -0.785]
42 |
43 | joints:
44 | - rrbot_2_joint1
45 | - rrbot_2_joint2
46 |
47 | check_starting_point: false
48 | starting_point_limits:
49 | joint1: [-0.1,0.1]
50 | joint2: [-0.1,0.1]
51 |
--------------------------------------------------------------------------------
/ros2_control_demo_description/r6bot/srdf/r6bot.srdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/example_8/description/urdf/rrbot_transmissions_system_position_only.urdf.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/example_9/description/ros2_control/rrbot.ros2_control.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | gz_ros2_control/GazeboSimSystem
10 |
11 |
12 | ros2_control_demo_example_9/RRBotSystemPositionOnlyHardware
13 | 0
14 | 3.0
15 | 100
16 |
17 |
18 |
19 |
20 |
21 | -1
22 | 1
23 |
24 |
25 |
26 |
27 |
28 | -1
29 | 1
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/example_9/description/urdf/rrbot.urdf.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/example_13/description/ros2_control/threedofbot.ros2_control.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | mock_components/GenericSystem
9 |
10 |
11 |
12 |
13 | -1
14 | 1
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | -1
23 | 1
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | -1
32 | 1
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/example_1/bringup/launch/test_forward_position_controller.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Stogl Robotics Consulting UG (haftungsbeschränkt)
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | from launch import LaunchDescription
16 | from launch.substitutions import PathJoinSubstitution
17 | from launch_ros.actions import Node
18 | from launch_ros.substitutions import FindPackageShare
19 |
20 |
21 | def generate_launch_description():
22 |
23 | position_goals = PathJoinSubstitution(
24 | [
25 | FindPackageShare("ros2_control_demo_example_1"),
26 | "config",
27 | "rrbot_forward_position_publisher.yaml",
28 | ]
29 | )
30 |
31 | return LaunchDescription(
32 | [
33 | Node(
34 | package="ros2_controllers_test_nodes",
35 | executable="publisher_forward_position_controller",
36 | name="publisher_forward_position_controller",
37 | parameters=[position_goals],
38 | output="both",
39 | )
40 | ]
41 | )
42 |
--------------------------------------------------------------------------------
/example_1/bringup/launch/test_joint_trajectory_controller.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Stogl Robotics Consulting UG (haftungsbeschränkt)
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | from launch import LaunchDescription
16 | from launch.substitutions import PathJoinSubstitution
17 | from launch_ros.actions import Node
18 | from launch_ros.substitutions import FindPackageShare
19 |
20 |
21 | def generate_launch_description():
22 |
23 | position_goals = PathJoinSubstitution(
24 | [
25 | FindPackageShare("ros2_control_demo_example_1"),
26 | "config",
27 | "rrbot_joint_trajectory_publisher.yaml",
28 | ]
29 | )
30 |
31 | return LaunchDescription(
32 | [
33 | Node(
34 | package="ros2_controllers_test_nodes",
35 | executable="publisher_joint_trajectory_controller",
36 | name="publisher_joint_trajectory_controller",
37 | parameters=[position_goals],
38 | output="both",
39 | )
40 | ]
41 | )
42 |
--------------------------------------------------------------------------------
/example_10/bringup/launch/test_forward_position_controller.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Stogl Robotics Consulting UG (haftungsbeschränkt)
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | from launch import LaunchDescription
16 | from launch.substitutions import PathJoinSubstitution
17 | from launch_ros.actions import Node
18 | from launch_ros.substitutions import FindPackageShare
19 |
20 |
21 | def generate_launch_description():
22 |
23 | position_goals = PathJoinSubstitution(
24 | [
25 | FindPackageShare("ros2_control_demo_example_1"),
26 | "config",
27 | "rrbot_forward_position_publisher.yaml",
28 | ]
29 | )
30 |
31 | return LaunchDescription(
32 | [
33 | Node(
34 | package="ros2_controllers_test_nodes",
35 | executable="publisher_forward_position_controller",
36 | name="publisher_forward_position_controller",
37 | parameters=[position_goals],
38 | output="both",
39 | )
40 | ]
41 | )
42 |
--------------------------------------------------------------------------------
/example_3/bringup/launch/test_forward_position_controller.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Stogl Robotics Consulting UG (haftungsbeschränkt)
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | from launch import LaunchDescription
16 | from launch.substitutions import PathJoinSubstitution
17 | from launch_ros.actions import Node
18 | from launch_ros.substitutions import FindPackageShare
19 |
20 |
21 | def generate_launch_description():
22 |
23 | position_goals = PathJoinSubstitution(
24 | [
25 | FindPackageShare("ros2_control_demo_example_3"),
26 | "config",
27 | "rrbot_forward_position_publisher.yaml",
28 | ]
29 | )
30 |
31 | return LaunchDescription(
32 | [
33 | Node(
34 | package="ros2_controllers_test_nodes",
35 | executable="publisher_forward_position_controller",
36 | name="publisher_forward_position_controller",
37 | parameters=[position_goals],
38 | output="both",
39 | )
40 | ]
41 | )
42 |
--------------------------------------------------------------------------------
/example_4/bringup/launch/test_forward_position_controller.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Stogl Robotics Consulting UG (haftungsbeschränkt)
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | from launch import LaunchDescription
16 | from launch.substitutions import PathJoinSubstitution
17 | from launch_ros.actions import Node
18 | from launch_ros.substitutions import FindPackageShare
19 |
20 |
21 | def generate_launch_description():
22 |
23 | position_goals = PathJoinSubstitution(
24 | [
25 | FindPackageShare("ros2_control_demo_example_4"),
26 | "config",
27 | "rrbot_forward_position_publisher.yaml",
28 | ]
29 | )
30 |
31 | return LaunchDescription(
32 | [
33 | Node(
34 | package="ros2_controllers_test_nodes",
35 | executable="publisher_forward_position_controller",
36 | name="publisher_forward_position_controller",
37 | parameters=[position_goals],
38 | output="both",
39 | )
40 | ]
41 | )
42 |
--------------------------------------------------------------------------------
/example_5/bringup/launch/test_forward_position_controller.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Stogl Robotics Consulting UG (haftungsbeschränkt)
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | from launch import LaunchDescription
16 | from launch.substitutions import PathJoinSubstitution
17 | from launch_ros.actions import Node
18 | from launch_ros.substitutions import FindPackageShare
19 |
20 |
21 | def generate_launch_description():
22 |
23 | position_goals = PathJoinSubstitution(
24 | [
25 | FindPackageShare("ros2_control_demo_example_5"),
26 | "config",
27 | "rrbot_forward_position_publisher.yaml",
28 | ]
29 | )
30 |
31 | return LaunchDescription(
32 | [
33 | Node(
34 | package="ros2_controllers_test_nodes",
35 | executable="publisher_forward_position_controller",
36 | name="publisher_forward_position_controller",
37 | parameters=[position_goals],
38 | output="both",
39 | )
40 | ]
41 | )
42 |
--------------------------------------------------------------------------------
/example_6/bringup/launch/test_forward_position_controller.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Stogl Robotics Consulting UG (haftungsbeschränkt)
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | from launch import LaunchDescription
16 | from launch.substitutions import PathJoinSubstitution
17 | from launch_ros.actions import Node
18 | from launch_ros.substitutions import FindPackageShare
19 |
20 |
21 | def generate_launch_description():
22 |
23 | position_goals = PathJoinSubstitution(
24 | [
25 | FindPackageShare("ros2_control_demo_example_6"),
26 | "config",
27 | "rrbot_forward_position_publisher.yaml",
28 | ]
29 | )
30 |
31 | return LaunchDescription(
32 | [
33 | Node(
34 | package="ros2_controllers_test_nodes",
35 | executable="publisher_forward_position_controller",
36 | name="publisher_forward_position_controller",
37 | parameters=[position_goals],
38 | output="both",
39 | )
40 | ]
41 | )
42 |
--------------------------------------------------------------------------------
/example_8/bringup/launch/test_forward_position_controller.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Stogl Robotics Consulting UG (haftungsbeschränkt)
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | from launch import LaunchDescription
16 | from launch.substitutions import PathJoinSubstitution
17 | from launch_ros.actions import Node
18 | from launch_ros.substitutions import FindPackageShare
19 |
20 |
21 | def generate_launch_description():
22 |
23 | position_goals = PathJoinSubstitution(
24 | [
25 | FindPackageShare("ros2_control_demo_example_8"),
26 | "config",
27 | "rrbot_forward_position_publisher.yaml",
28 | ]
29 | )
30 |
31 | return LaunchDescription(
32 | [
33 | Node(
34 | package="ros2_controllers_test_nodes",
35 | executable="publisher_forward_position_controller",
36 | name="publisher_forward_position_controller",
37 | parameters=[position_goals],
38 | output="both",
39 | )
40 | ]
41 | )
42 |
--------------------------------------------------------------------------------
/example_9/bringup/launch/test_forward_position_controller.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Stogl Robotics Consulting UG (haftungsbeschränkt)
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | from launch import LaunchDescription
16 | from launch.substitutions import PathJoinSubstitution
17 | from launch_ros.actions import Node
18 | from launch_ros.substitutions import FindPackageShare
19 |
20 |
21 | def generate_launch_description():
22 |
23 | position_goals = PathJoinSubstitution(
24 | [
25 | FindPackageShare("ros2_control_demo_example_9"),
26 | "config",
27 | "rrbot_forward_position_publisher.yaml",
28 | ]
29 | )
30 |
31 | return LaunchDescription(
32 | [
33 | Node(
34 | package="ros2_controllers_test_nodes",
35 | executable="publisher_forward_position_controller",
36 | name="publisher_forward_position_controller",
37 | parameters=[position_goals],
38 | output="both",
39 | )
40 | ]
41 | )
42 |
--------------------------------------------------------------------------------
/example_3/description/urdf/rrbot_system_multi_interface.urdf.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/example_14/description/urdf/rrbot_modular_actuators_without_feedback_sensors_for_position_feedback.urdf.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | true
27 |
28 |
29 |
30 |
31 |
32 |
33 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/example_4/description/urdf/rrbot_system_with_sensor.urdf.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/example_15/bringup/config/multi_controller_manager_rrbot_generic_controllers.yaml:
--------------------------------------------------------------------------------
1 | /**/controller_manager:
2 | ros__parameters:
3 | update_rate: 10 # Hz
4 |
5 | joint_state_broadcaster:
6 | type: joint_state_broadcaster/JointStateBroadcaster
7 |
8 |
9 | /**/forward_position_controller:
10 | ros__parameters:
11 | type: forward_command_controller/ForwardCommandController
12 | interface_name: position
13 |
14 | /rrbot_1/forward_position_controller:
15 | ros__parameters:
16 | joints:
17 | - rrbot_1_joint1
18 | - rrbot_1_joint2
19 |
20 | /rrbot_2/forward_position_controller:
21 | ros__parameters:
22 | joints:
23 | - rrbot_2_joint1
24 | - rrbot_2_joint2
25 |
26 | /rrbot_1/position_trajectory_controller:
27 | ros__parameters:
28 | joints:
29 | - rrbot_1_joint1
30 | - rrbot_1_joint2
31 |
32 | /rrbot_2/position_trajectory_controller:
33 | ros__parameters:
34 | joints:
35 | - rrbot_2_joint1
36 | - rrbot_2_joint2
37 |
38 | /**/position_trajectory_controller:
39 | ros__parameters:
40 | type: joint_trajectory_controller/JointTrajectoryController
41 |
42 | command_interfaces:
43 | - position
44 |
45 | state_interfaces:
46 | - position
47 |
48 | state_publish_rate: 200.0 # Defaults to 50
49 | action_monitor_rate: 20.0 # Defaults to 20
50 |
51 | allow_partial_joints_goal: false # Defaults to false
52 | interpolate_from_desired_state: true
53 | allow_integration_in_goal_trajectories: true
54 | constraints:
55 | stopped_velocity_tolerance: 0.01 # Defaults to 0.01
56 | goal_time: 0.0 # Defaults to 0.0 (start immediately)
57 |
--------------------------------------------------------------------------------
/example_9/description/gazebo/rrbot.gazebo.xacro:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | $(find ros2_control_demo_example_9)/config/rrbot_controllers.yaml
14 |
15 |
16 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 | 0.2
30 | 0.2
31 |
32 |
36 |
37 |
38 |
39 |
40 |
41 | 0.2
42 | 0.2
43 |
44 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/example_6/description/ros2_control/rrbot_modular_actuators.ros2_control.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | ros2_control_demo_example_6/RRBotModularJoint
9 | 2.0
10 | 3.0
11 | ${slowdown}
12 |
13 |
14 |
15 | -100
16 | 100
17 |
18 |
19 |
20 |
21 |
22 |
23 | ros2_control_demo_example_6/RRBotModularJoint
24 | 2.0
25 | 3.0
26 | ${slowdown}
27 |
28 |
29 |
30 | -100
31 | 100
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/.github/mergify.yml:
--------------------------------------------------------------------------------
1 | pull_request_rules:
2 | - name: Backport to humble at reviewers discretion
3 | conditions:
4 | - base=master
5 | - "label=backport-humble"
6 | actions:
7 | backport:
8 | branches:
9 | - humble
10 |
11 | - name: Backport to jazzy at reviewers discretion
12 | conditions:
13 | - base=master
14 | - "label=backport-jazzy"
15 | actions:
16 | backport:
17 | branches:
18 | - jazzy
19 |
20 | - name: Ask to resolve conflict
21 | conditions:
22 | - conflict
23 | - author!=mergify[bot]
24 | - author!=dependabot[bot]
25 | actions:
26 | comment:
27 | message: This pull request is in conflict. Could you fix it @{{author}}?
28 |
29 | - name: Ask to resolve conflict for backports
30 | conditions:
31 | - conflict
32 | - author=mergify[bot]
33 | actions:
34 | comment:
35 | message: This pull request is in conflict. Could you fix it @bmagyar @destogl @christophfroehlich @saikishor?
36 |
37 | - name: development targets master branch
38 | conditions:
39 | - base!=master
40 | - author!=bmagyar
41 | - author!=destogl
42 | - author!=christophfroehlich
43 | - author!=saikishor
44 | - author!=mergify[bot]
45 | - author!=dependabot[bot]
46 | actions:
47 | comment:
48 | message: |
49 | @{{author}}, all pull requests must be targeted towards the `master` development branch.
50 | Once merged into `master`, it is possible to backport to `{{base}}`, but it must be in `master`
51 | to have these changes reflected into new distributions.
52 |
--------------------------------------------------------------------------------
/example_5/description/ros2_control/rrbot_system_position_only.ros2_control.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | mock_components/GenericSystem
11 | ${mock_sensor_commands}
12 | 0.0
13 |
14 |
15 | ros2_control_demo_example_5/RRBotSystemPositionOnlyHardware
16 | 0.0
17 | 3.0
18 | ${slowdown}
19 |
20 |
21 |
22 |
23 |
24 | -1
25 | 1
26 |
27 |
28 |
29 |
30 |
31 | -1
32 | 1
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/example_17/bringup/launch/test_forward_position_controller.launch.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
23 |
25 |
26 |
30 |
34 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/ros2_control_demos/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | ros2_control_demos
4 | 0.0.0
5 | Metapackage for `ros2_control` demos packages
6 |
7 | Denis Štogl
8 |
9 | Denis Štogl
10 | Bence Magyar
11 | Christoph Froehlich
12 |
13 | Apache-2.0
14 |
15 | ament_cmake
16 |
17 | ros2_control_demo_example_1
18 | ros2_control_demo_example_2
19 | ros2_control_demo_example_3
20 | ros2_control_demo_example_4
21 | ros2_control_demo_example_5
22 | ros2_control_demo_example_6
23 | ros2_control_demo_example_7
24 | ros2_control_demo_example_8
25 | ros2_control_demo_example_9
26 | ros2_control_demo_example_10
27 | ros2_control_demo_example_11
28 | ros2_control_demo_example_12
29 | ros2_control_demo_example_13
30 | ros2_control_demo_example_14
31 | ros2_control_demo_example_15
32 | ros2_control_demo_example_16
33 | ros2_control_demo_example_17
34 |
35 |
36 | ament_cmake
37 |
38 |
39 |
--------------------------------------------------------------------------------
/example_13/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.16)
2 | project(ros2_control_demo_example_13 LANGUAGES CXX)
3 |
4 | find_package(ros2_control_cmake REQUIRED)
5 | set_compiler_options()
6 | export_windows_symbols()
7 |
8 | # find dependencies
9 | set(THIS_PACKAGE_INCLUDE_DEPENDS
10 | )
11 |
12 | # Specify the required version of ros2_control
13 | find_package(controller_manager 4.0.0)
14 | # Handle the case where the required version is not found
15 | if(NOT controller_manager_FOUND)
16 | message(FATAL_ERROR "ros2_control version 4.0.0 or higher is required. "
17 | "Are you using the correct branch of the ros2_control_demos repository?")
18 | endif()
19 |
20 | # find dependencies
21 | find_package(ament_cmake REQUIRED)
22 | foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
23 | find_package(${Dependency} REQUIRED)
24 | endforeach()
25 |
26 | # INSTALL
27 | install(
28 | DIRECTORY description/ros2_control description/urdf description/rviz
29 | DESTINATION share/ros2_control_demo_example_13
30 | )
31 | install(
32 | DIRECTORY bringup/launch bringup/config
33 | DESTINATION share/ros2_control_demo_example_13
34 | )
35 |
36 | if(BUILD_TESTING)
37 | find_package(ament_cmake_ros REQUIRED)
38 | find_package(launch_testing_ament_cmake REQUIRED)
39 | find_package(ament_cmake_pytest REQUIRED)
40 |
41 | ament_add_pytest_test(example_13_urdf_xacro test/test_urdf_xacro.py)
42 |
43 | function(add_ros_isolated_launch_test path)
44 | set(RUNNER "${ament_cmake_ros_DIR}/run_test_isolated.py")
45 | add_launch_test("${path}" RUNNER "${RUNNER}" ${ARGN})
46 | endfunction()
47 | add_ros_isolated_launch_test(test/test_three_robots_launch.py)
48 | endif()
49 |
50 | ## EXPORTS
51 | ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS})
52 | ament_package()
53 |
--------------------------------------------------------------------------------
/example_7/bringup/launch/send_trajectory.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2023 ros2_control Development Team
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | from launch import LaunchDescription
16 | from launch.substitutions import Command, FindExecutable, PathJoinSubstitution
17 | from launch_ros.actions import Node
18 | from launch_ros.substitutions import FindPackageShare
19 |
20 |
21 | def generate_launch_description():
22 | # Get URDF via xacro
23 | robot_description_content = Command(
24 | [
25 | PathJoinSubstitution([FindExecutable(name="xacro")]),
26 | " ",
27 | PathJoinSubstitution(
28 | [
29 | FindPackageShare("ros2_control_demo_example_7"),
30 | "urdf",
31 | "r6bot.urdf.xacro",
32 | ]
33 | ),
34 | ]
35 | )
36 | robot_description = {"robot_description": robot_description_content}
37 |
38 | send_trajectory_node = Node(
39 | package="ros2_control_demo_example_7",
40 | executable="send_trajectory",
41 | name="send_trajectory_node",
42 | parameters=[robot_description],
43 | )
44 |
45 | nodes_to_start = [send_trajectory_node]
46 | return LaunchDescription(nodes_to_start)
47 |
--------------------------------------------------------------------------------
/example_17/bringup/launch/test_joint_trajectory_controller.launch.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
23 |
25 |
26 |
30 |
34 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/example_5/description/ros2_control/external_rrbot_force_torque_sensor.ros2_control.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | mock_components/GenericSystem
10 | ${mock_sensor_commands}
11 | 0.0
12 |
13 |
14 | ros2_control_demo_example_5/ExternalRRBotForceTorqueSensorHardware
15 | 0.0
16 | 3.0
17 | 5.0
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 | tool_link
29 | 100
30 | 100
31 | 100
32 | 15
33 | 15
34 | 15
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/example_2/bringup/config/diffbot_controllers.yaml:
--------------------------------------------------------------------------------
1 | controller_manager:
2 | ros__parameters:
3 | update_rate: 10 # Hz
4 |
5 | joint_state_broadcaster:
6 | type: joint_state_broadcaster/JointStateBroadcaster
7 |
8 | diffbot_base_controller:
9 | ros__parameters:
10 | type: diff_drive_controller/DiffDriveController
11 |
12 | left_wheel_names: ["left_wheel_joint"]
13 | right_wheel_names: ["right_wheel_joint"]
14 |
15 | wheel_separation: 0.10
16 | #wheels_per_side: 1 # actually 2, but both are controlled by 1 signal
17 | wheel_radius: 0.015
18 |
19 | wheel_separation_multiplier: 1.0
20 | left_wheel_radius_multiplier: 1.0
21 | right_wheel_radius_multiplier: 1.0
22 |
23 | publish_rate: 50.0
24 | odom_frame_id: odom
25 | base_frame_id: base_link
26 | pose_covariance_diagonal : [0.001, 0.001, 0.001, 0.001, 0.001, 0.01]
27 | twist_covariance_diagonal: [0.001, 0.001, 0.001, 0.001, 0.001, 0.01]
28 |
29 | open_loop: true
30 | enable_odom_tf: true
31 |
32 | cmd_vel_timeout: 0.5
33 | #publish_limited_velocity: true
34 | #velocity_rolling_window_size: 10
35 |
36 | # Velocity and acceleration limits
37 | # Whenever a min_* is unspecified, default to -max_*
38 | linear.x.has_velocity_limits: true
39 | linear.x.has_acceleration_limits: true
40 | linear.x.has_jerk_limits: false
41 | linear.x.max_velocity: 1.0
42 | linear.x.min_velocity: -1.0
43 | linear.x.max_acceleration: 1.0
44 | linear.x.max_jerk: 0.0
45 | linear.x.min_jerk: 0.0
46 |
47 | angular.z.has_velocity_limits: true
48 | angular.z.has_acceleration_limits: true
49 | angular.z.has_jerk_limits: false
50 | angular.z.max_velocity: 1.0
51 | angular.z.min_velocity: -1.0
52 | angular.z.max_acceleration: 1.0
53 | angular.z.min_acceleration: -1.0
54 | angular.z.max_jerk: 0.0
55 | angular.z.min_jerk: 0.0
56 |
--------------------------------------------------------------------------------
/example_8/description/ros2_control/rrbot_transmissions_system_position_only.ros2_control.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | ros2_control_demo_example_8/RRBotTransmissionsSystemPositionOnlyHardware
10 | ${slowdown}
11 |
12 |
13 |
14 |
15 | -1
16 | 1
17 |
18 |
19 |
20 |
21 |
22 |
23 | -1
24 | 1
25 |
26 |
27 |
28 |
29 |
30 | transmission_interface/SimpleTransmission
31 |
32 |
33 | 2.0
34 | 0.0
35 |
36 |
37 |
38 |
39 | transmission_interface/SimpleTransmission
40 |
41 |
42 | 4.0
43 | 0.0
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/example_17/description/launch/view_robot.launch.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
10 |
11 |
14 |
15 |
18 |
19 |
20 |
22 |
23 |
24 |
26 |
27 |
28 |
31 |
32 |
33 |
36 |
37 |
38 |
39 |
40 |
46 |
47 |
--------------------------------------------------------------------------------
/example_14/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_14
5 | 0.0.0
6 | Modular Robots with actuators not providing states and with additional sensors.
7 |
8 | Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | ament_cmake
16 | ros2_control_cmake
17 |
18 | hardware_interface
19 | pluginlib
20 | rclcpp
21 | rclcpp_lifecycle
22 | realtime_tools
23 |
24 | controller_manager
25 | forward_command_controller
26 | joint_state_broadcaster
27 | joint_state_publisher_gui
28 | robot_state_publisher
29 | ros2_control_demo_description
30 | ros2_controllers_test_nodes
31 | ros2controlcli
32 | ros2launch
33 | rviz2
34 | xacro
35 |
36 | ament_cmake_pytest
37 | ament_cmake_ros
38 | launch_testing_ament_cmake
39 | launch_testing
40 | launch
41 | liburdfdom-tools
42 | rclpy
43 |
44 |
45 | ament_cmake
46 |
47 |
48 |
--------------------------------------------------------------------------------
/example_5/description/urdf/rrbot_system_with_external_sensor.urdf.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
39 |
40 |
44 |
45 |
--------------------------------------------------------------------------------
/example_6/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_6
5 | 0.0.0
6 | Demo package of `ros2_control` hardware for RRbot with separate communication to each actuator.
7 |
8 | Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | ament_cmake
16 | ros2_control_cmake
17 |
18 | backward_ros
19 | hardware_interface
20 | pluginlib
21 | rclcpp
22 | rclcpp_lifecycle
23 |
24 | controller_manager
25 | forward_command_controller
26 | joint_state_broadcaster
27 | joint_state_publisher_gui
28 | robot_state_publisher
29 | ros2_control_demo_description
30 | ros2_controllers_test_nodes
31 | ros2controlcli
32 | ros2launch
33 | rviz2
34 | xacro
35 |
36 | ament_cmake_pytest
37 | ament_cmake_ros
38 | launch_testing_ament_cmake
39 | launch_testing
40 | launch
41 | liburdfdom-tools
42 | rclpy
43 |
44 |
45 | ament_cmake
46 |
47 |
48 |
--------------------------------------------------------------------------------
/example_4/description/ros2_control/rrbot_system_with_sensor.ros2_control.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | mock_components/GenericSystem
11 | ${mock_sensor_commands}
12 | 0.0
13 |
14 |
15 | ros2_control_demo_example_4/RRBotSystemWithSensorHardware
16 | 0.0
17 | 3.0
18 | ${slowdown}
19 | 5.0
20 |
21 |
22 |
23 |
24 |
25 | -1
26 | 1
27 |
28 |
29 |
30 |
31 |
32 | -1
33 | 1
34 |
35 |
36 |
37 |
38 |
39 |
40 | tool_link
41 | 100
42 | 15
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/example_7/hardware/include/ros2_control_demo_example_7/r6bot_hardware.hpp:
--------------------------------------------------------------------------------
1 | // Copyright 2023 ros2_control Development Team
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #ifndef ROS2_CONTROL_DEMO_EXAMPLE_7__R6BOT_HARDWARE_HPP_
16 | #define ROS2_CONTROL_DEMO_EXAMPLE_7__R6BOT_HARDWARE_HPP_
17 |
18 | #include "string"
19 | #include "unordered_map"
20 | #include "vector"
21 |
22 | #include "hardware_interface/handle.hpp"
23 | #include "hardware_interface/hardware_info.hpp"
24 | #include "hardware_interface/system_interface.hpp"
25 | #include "hardware_interface/types/hardware_interface_return_values.hpp"
26 | #include "hardware_interface/types/hardware_interface_type_values.hpp"
27 |
28 | using hardware_interface::return_type;
29 |
30 | namespace ros2_control_demo_example_7
31 | {
32 | using CallbackReturn = rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn;
33 |
34 | class RobotSystem : public hardware_interface::SystemInterface
35 | {
36 | public:
37 | CallbackReturn on_init(
38 | const hardware_interface::HardwareComponentInterfaceParams & params) override;
39 |
40 | CallbackReturn on_configure(const rclcpp_lifecycle::State & previous_state) override;
41 |
42 | return_type read(const rclcpp::Time & time, const rclcpp::Duration & period) override;
43 |
44 | return_type write(const rclcpp::Time & /*time*/, const rclcpp::Duration & /*period*/) override;
45 |
46 | protected:
47 | };
48 |
49 | } // namespace ros2_control_demo_example_7
50 |
51 | #endif // ROS2_CONTROL_DEMO_EXAMPLE_7__R6BOT_HARDWARE_HPP_
52 |
--------------------------------------------------------------------------------
/example_15/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_15
5 | 0.0.0
6 | Demo package of `ros2_control` namespaced controller managers.
7 |
8 | Dr.-Ing. Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | Dr.-Ing. Denis Štogl
16 | Christoph Froehlich
17 |
18 | ament_cmake
19 | ros2_control_cmake
20 |
21 | controller_manager
22 | forward_command_controller
23 | joint_state_broadcaster
24 | joint_trajectory_controller
25 | robot_state_publisher
26 | ros2_control_demo_example_1
27 | ros2_control_demo_example_5
28 | ros2_controllers_test_nodes
29 | ros2controlcli
30 | ros2launch
31 | rviz2
32 | xacro
33 |
34 | ament_cmake_pytest
35 | ament_cmake_ros
36 | launch_testing_ament_cmake
37 | launch_testing
38 | launch
39 | liburdfdom-tools
40 | rclpy
41 |
42 |
43 | ament_cmake
44 |
45 |
46 |
--------------------------------------------------------------------------------
/example_4/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_4
5 | 0.0.0
6 | Demo package of `ros2_control` hardware for RRbot with integrated sensor.
7 |
8 | Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | ament_cmake
16 | ros2_control_cmake
17 |
18 | backward_ros
19 | hardware_interface
20 | pluginlib
21 | rclcpp
22 | rclcpp_lifecycle
23 |
24 | controller_manager
25 | force_torque_sensor_broadcaster
26 | forward_command_controller
27 | joint_state_broadcaster
28 | joint_state_publisher_gui
29 | robot_state_publisher
30 | ros2_control_demo_description
31 | ros2_controllers_test_nodes
32 | ros2controlcli
33 | ros2launch
34 | rviz2
35 | xacro
36 |
37 | ament_cmake_pytest
38 | ament_cmake_ros
39 | launch_testing_ament_cmake
40 | launch_testing
41 | launch
42 | liburdfdom-tools
43 | rclpy
44 |
45 |
46 | ament_cmake
47 |
48 |
49 |
--------------------------------------------------------------------------------
/example_5/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_5
5 | 0.0.0
6 | Demo package of `ros2_control` hardware for RRbot with externally connected sensor.
7 |
8 | Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | ament_cmake
16 | ros2_control_cmake
17 |
18 | backward_ros
19 | hardware_interface
20 | pluginlib
21 | rclcpp
22 | rclcpp_lifecycle
23 |
24 | controller_manager
25 | force_torque_sensor_broadcaster
26 | forward_command_controller
27 | joint_state_broadcaster
28 | joint_state_publisher_gui
29 | robot_state_publisher
30 | ros2_control_demo_description
31 | ros2_controllers_test_nodes
32 | ros2controlcli
33 | ros2launch
34 | rviz2
35 | xacro
36 |
37 | ament_cmake_pytest
38 | ament_cmake_ros
39 | launch_testing_ament_cmake
40 | launch_testing
41 | launch
42 | liburdfdom-tools
43 | rclpy
44 |
45 |
46 | ament_cmake
47 |
48 |
49 |
--------------------------------------------------------------------------------
/example_2/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_2
5 | 0.0.0
6 | Demo package of `ros2_control` hardware for DiffBot.
7 |
8 | Dr.-Ing. Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | Dr.-Ing. Denis Štogl
16 |
17 | ament_cmake
18 | ros2_control_cmake
19 |
20 | backward_ros
21 | hardware_interface
22 | pluginlib
23 | rclcpp
24 | rclcpp_lifecycle
25 |
26 | controller_manager
27 | diff_drive_controller
28 | joint_state_broadcaster
29 | joint_state_publisher_gui
30 | robot_state_publisher
31 | ros2_control_demo_description
32 | ros2_controllers_test_nodes
33 | ros2controlcli
34 | ros2launch
35 | rviz2
36 | xacro
37 |
38 | ament_cmake_pytest
39 | ament_cmake_ros
40 | launch_testing_ament_cmake
41 | launch_testing
42 | launch
43 | liburdfdom-tools
44 | rclpy
45 |
46 |
47 | ament_cmake
48 |
49 |
50 |
--------------------------------------------------------------------------------
/example_15/bringup/launch/test_forward_position_controller.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Stogl Robotics Consulting UG (haftungsbeschränkt)
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | from launch import LaunchDescription
16 | from launch.actions import DeclareLaunchArgument
17 | from launch.substitutions import LaunchConfiguration, PathJoinSubstitution
18 | from launch_ros.actions import Node
19 | from launch_ros.substitutions import FindPackageShare
20 |
21 |
22 | def generate_launch_description():
23 |
24 | # Declare arguments
25 | declared_arguments = []
26 | declared_arguments.append(
27 | DeclareLaunchArgument(
28 | "publisher_config",
29 | default_value="rrbot_forward_position_publisher.yaml",
30 | description="Name of the publisher config file stored inside \
31 | ros2_control_demo_bringup/config/",
32 | )
33 | )
34 |
35 | # Initialize Arguments
36 | publisher_config = LaunchConfiguration("publisher_config")
37 |
38 | position_goals = PathJoinSubstitution(
39 | [
40 | FindPackageShare("ros2_control_demo_example_15"),
41 | "config",
42 | publisher_config,
43 | ]
44 | )
45 |
46 | return LaunchDescription(
47 | [
48 | Node(
49 | package="ros2_controllers_test_nodes",
50 | executable="publisher_forward_position_controller",
51 | name="publisher_forward_position_controller",
52 | parameters=[position_goals],
53 | output="both",
54 | )
55 | ]
56 | )
57 |
--------------------------------------------------------------------------------
/example_15/bringup/launch/test_joint_trajectory_controller.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Stogl Robotics Consulting UG (haftungsbeschränkt)
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | from launch import LaunchDescription
16 | from launch.actions import DeclareLaunchArgument
17 | from launch.substitutions import LaunchConfiguration, PathJoinSubstitution
18 | from launch_ros.actions import Node
19 | from launch_ros.substitutions import FindPackageShare
20 |
21 |
22 | def generate_launch_description():
23 |
24 | # Declare arguments
25 | declared_arguments = []
26 | declared_arguments.append(
27 | DeclareLaunchArgument(
28 | "publisher_config",
29 | default_value="rrbot_joint_trajectory_publisher.yaml",
30 | description="Name of the publisher config file stored inside \
31 | ros2_control_demo_bringup/config/",
32 | )
33 | )
34 |
35 | # Initialize Arguments
36 | publisher_config = LaunchConfiguration("publisher_config")
37 |
38 | position_goals = PathJoinSubstitution(
39 | [
40 | FindPackageShare("ros2_control_demo_example_15"),
41 | "config",
42 | publisher_config,
43 | ]
44 | )
45 |
46 | return LaunchDescription(
47 | [
48 | Node(
49 | package="ros2_controllers_test_nodes",
50 | executable="publisher_joint_trajectory_controller",
51 | name="publisher_joint_trajectory_controller",
52 | parameters=[position_goals],
53 | output="both",
54 | )
55 | ]
56 | )
57 |
--------------------------------------------------------------------------------
/example_3/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_3
5 | 0.0.0
6 | Demo package of `ros2_control` hardware for RRbot with multi interface.
7 |
8 | Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | ament_cmake
16 | ros2_control_cmake
17 |
18 | backward_ros
19 | hardware_interface
20 | pluginlib
21 | rclcpp
22 | rclcpp_lifecycle
23 |
24 | controller_manager
25 | forward_command_controller
26 | joint_state_broadcaster
27 | joint_state_publisher_gui
28 | position_controllers
29 | robot_state_publisher
30 | ros2_control_demo_description
31 | ros2_controllers_test_nodes
32 | ros2controlcli
33 | ros2launch
34 | rviz2
35 | velocity_controllers
36 | xacro
37 |
38 | ament_cmake_pytest
39 | ament_cmake_ros
40 | launch_testing_ament_cmake
41 | launch_testing
42 | launch
43 | liburdfdom-tools
44 | rclpy
45 |
46 |
47 | ament_cmake
48 |
49 |
50 |
--------------------------------------------------------------------------------
/example_16/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_16
5 | 0.0.0
6 | Demo package of `ros2_control` hardware for DiffBot.
7 |
8 | Dr.-Ing. Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | Julia Jia
16 |
17 | ament_cmake
18 | ros2_control_cmake
19 |
20 | backward_ros
21 | hardware_interface
22 | pluginlib
23 | rclcpp
24 | rclcpp_lifecycle
25 |
26 | controller_manager
27 | diff_drive_controller
28 | pid_controller
29 | joint_state_broadcaster
30 | joint_state_publisher_gui
31 | robot_state_publisher
32 | ros2_control_demo_description
33 | ros2_controllers_test_nodes
34 | ros2controlcli
35 | ros2launch
36 | rviz2
37 | xacro
38 |
39 | ament_cmake_pytest
40 | ament_cmake_ros
41 | launch_testing_ament_cmake
42 | launch_testing
43 | launch
44 | liburdfdom-tools
45 | rclpy
46 |
47 |
48 | ament_cmake
49 |
50 |
51 |
--------------------------------------------------------------------------------
/example_13/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_13
5 | 0.0.0
6 | Demo package of `ros2_control` simulation with multiple robots.
7 |
8 | Dr.-Ing. Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | Dr.-Ing. Denis Štogl
16 | Christoph Froehlich
17 |
18 | ament_cmake
19 | ros2_control_cmake
20 |
21 | controller_manager
22 | force_torque_sensor_broadcaster
23 | forward_command_controller
24 | joint_state_broadcaster
25 | robot_state_publisher
26 | ros2_control_demo_description
27 | ros2_control_demo_example_4
28 | ros2_control_demo_example_5
29 | ros2_controllers_test_nodes
30 | ros2controlcli
31 | ros2launch
32 | rviz2
33 | xacro
34 |
35 | ament_cmake_pytest
36 | ament_cmake_ros
37 | launch_testing_ament_cmake
38 | launch_testing
39 | launch
40 | liburdfdom-tools
41 | rclpy
42 |
43 |
44 | ament_cmake
45 |
46 |
47 |
--------------------------------------------------------------------------------
/example_11/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_11
5 | 0.0.0
6 | Demo package of `ros2_control` hardware for a carlike robot with two wheels in front that steer and two wheels in the back that drive.
7 |
8 | Dr.-Ing. Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | Reza Kermani
16 |
17 | ament_cmake
18 | ros2_control_cmake
19 |
20 | backward_ros
21 | hardware_interface
22 | pluginlib
23 | rclcpp
24 | rclcpp_lifecycle
25 |
26 | bicycle_steering_controller
27 | controller_manager
28 | joint_state_broadcaster
29 | joint_state_publisher_gui
30 | robot_state_publisher
31 | ros2_control_demo_description
32 | ros2controlcli
33 | ros2launch
34 | rviz2
35 | xacro
36 |
37 | ament_cmake_pytest
38 | ament_cmake_ros
39 | launch_testing_ament_cmake
40 | launch_testing_ros
41 | launch_testing
42 | launch
43 | liburdfdom-tools
44 | rclpy
45 |
46 |
47 | ament_cmake
48 |
49 |
50 |
--------------------------------------------------------------------------------
/example_10/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_10
5 | 0.0.0
6 | Demo package of `ros2_control` hardware for RRbot with GPIO interfaces.
7 |
8 | Dr.-Ing. Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | Christoph Froehlich
16 |
17 | ament_cmake
18 | ros2_control_cmake
19 |
20 | backward_ros
21 | hardware_interface
22 | pluginlib
23 | rclcpp
24 | rclcpp_lifecycle
25 |
26 | controller_manager
27 | forward_command_controller
28 | gpio_controllers
29 | joint_state_broadcaster
30 | joint_state_publisher_gui
31 | robot_state_publisher
32 | ros2_control_demo_description
33 | ros2_controllers_test_nodes
34 | ros2controlcli
35 | ros2launch
36 | rviz2
37 | xacro
38 |
39 | ament_cmake_pytest
40 | ament_cmake_ros
41 | launch_testing_ament_cmake
42 | launch_testing
43 | launch
44 | liburdfdom-tools
45 | rclpy
46 |
47 |
48 | ament_cmake
49 |
50 |
51 |
--------------------------------------------------------------------------------
/example_8/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_8
5 | 0.0.0
6 | Demo package of `ros2_control` hardware for RRbot with transmission interface.
7 |
8 | Dr.-Ing. Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | Jordan Palacios
16 |
17 | ament_cmake
18 | ros2_control_cmake
19 |
20 | backward_ros
21 | hardware_interface
22 | pluginlib
23 | rclcpp
24 | rclcpp_lifecycle
25 | transmission_interface
26 |
27 | controller_manager
28 | forward_command_controller
29 | joint_state_broadcaster
30 | joint_state_publisher_gui
31 | robot_state_publisher
32 | ros2_control_demo_description
33 | ros2_controllers_test_nodes
34 | ros2controlcli
35 | ros2launch
36 | rviz2
37 | xacro
38 |
39 | ament_cmake_pytest
40 | ament_cmake_ros
41 | launch_testing_ament_cmake
42 | launch_testing
43 | launch
44 | liburdfdom-tools
45 | rclpy
46 |
47 |
48 | ament_cmake
49 |
50 |
51 |
--------------------------------------------------------------------------------
/example_1/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_1
5 | 0.0.0
6 | Demo package of `ros2_control` hardware for RRbot.
7 |
8 | Dr.-Ing. Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | Dr.-Ing. Denis Štogl
16 |
17 | ament_cmake
18 | ros2_control_cmake
19 |
20 | backward_ros
21 | hardware_interface
22 | pluginlib
23 | rclcpp
24 | rclcpp_lifecycle
25 |
26 | controller_manager
27 | forward_command_controller
28 | joint_state_broadcaster
29 | joint_state_publisher_gui
30 | joint_trajectory_controller
31 | robot_state_publisher
32 | ros2_control_demo_description
33 | ros2_controllers_test_nodes
34 | ros2controlcli
35 | ros2launch
36 | rqt_joint_trajectory_controller
37 | rviz2
38 | xacro
39 |
40 | ament_cmake_pytest
41 | ament_cmake_ros
42 | launch_testing_ament_cmake
43 | launch_testing
44 | launch
45 | liburdfdom-tools
46 | rclpy
47 |
48 |
49 | ament_cmake
50 |
51 |
52 |
--------------------------------------------------------------------------------
/example_12/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_12
5 | 0.0.0
6 | Demo package of `ros2_control` simulation with RRbot.
7 |
8 | Dr.-Ing. Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | Dr.-Ing. Denis Štogl
16 | Sai Kishor Kothakota
17 |
18 | ament_cmake
19 | ros2_control_cmake
20 |
21 | backward_ros
22 | hardware_interface
23 | pluginlib
24 | rclcpp
25 | rclcpp_lifecycle
26 | std_msgs
27 |
28 | controller_manager
29 | forward_command_controller
30 | joint_state_broadcaster
31 | joint_state_publisher_gui
32 | joint_trajectory_controller
33 | robot_state_publisher
34 | ros2_control_demo_description
35 | ros2_controllers_test_nodes
36 | ros2controlcli
37 | rviz2
38 | xacro
39 |
40 | ament_cmake_pytest
41 | ament_cmake_ros
42 | launch_testing_ament_cmake
43 | launch_testing
44 | launch
45 | liburdfdom-tools
46 | rclpy
47 |
48 |
49 | ament_cmake
50 |
51 |
52 |
--------------------------------------------------------------------------------
/example_7/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_7
5 | 0.0.0
6 | Demo for 6 DOF robot.
7 |
8 | Dr.-Ing. Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | Paul Gesel
16 |
17 | ament_cmake
18 | ros2_control_cmake
19 |
20 | backward_ros
21 | control_msgs
22 | controller_interface
23 | hardware_interface
24 | kdl_parser
25 | pluginlib
26 | rclcpp_lifecycle
27 | rclcpp
28 | realtime_tools
29 | trajectory_msgs
30 |
31 | controller_manager
32 | joint_state_broadcaster
33 | joint_state_publisher_gui
34 | launch_ros
35 | launch
36 | robot_state_publisher
37 | ros2_control_demo_description
38 | ros2controlcli
39 | ros2launch
40 | rviz2
41 | urdf
42 | xacro
43 |
44 | ament_cmake_pytest
45 | ament_cmake_ros
46 | launch_testing_ament_cmake
47 | launch_testing
48 | launch
49 | liburdfdom-tools
50 | rclpy
51 |
52 |
53 | ament_cmake
54 |
55 |
56 |
--------------------------------------------------------------------------------
/example_10/description/ros2_control/rrbot.ros2_control.xacro:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | ros2_control_demo_example_10/RRBotSystemWithGPIOHardware
10 | 0
11 | 3.0
12 | 100
13 |
14 |
15 |
16 |
17 | mock_components/GenericSystem
18 | true
19 |
20 |
21 |
22 |
23 |
24 | -1
25 | 1
26 |
27 |
28 |
29 |
30 |
31 | -1
32 | 1
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 | 1.0
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/example_17/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_17
5 | 0.0.0
6 | Demo package of `ros2_control` hardware for RRBot with Hardware Component that publishes diagnostics
7 |
8 | Dr.-Ing. Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | Soham Patil
16 |
17 | ament_cmake
18 | ros2_control_cmake
19 |
20 | backward_ros
21 | diagnostic_updater
22 | hardware_interface
23 | pluginlib
24 | rclcpp
25 | rclcpp_lifecycle
26 |
27 | controller_manager
28 | forward_command_controller
29 | joint_state_broadcaster
30 | joint_state_publisher_gui
31 | joint_trajectory_controller
32 | robot_state_publisher
33 | ros2_control_demo_description
34 | ros2_controllers_test_nodes
35 | ros2controlcli
36 | ros2launch
37 | rqt_joint_trajectory_controller
38 | rviz2
39 | xacro
40 |
41 | ament_cmake_pytest
42 | ament_cmake_ros
43 | launch_testing_ament_cmake
44 | launch_testing
45 | launch
46 | liburdfdom-tools
47 | rclpy
48 |
49 |
50 | ament_cmake
51 |
52 |
53 |
--------------------------------------------------------------------------------
/example_9/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ros2_control_demo_example_9
5 | 0.0.0
6 | Demo package of `ros2_control` simulation with RRbot.
7 |
8 | Dr.-Ing. Denis Štogl
9 | Bence Magyar
10 | Christoph Froehlich
11 | Sai Kishor Kothakota
12 |
13 | Apache-2.0
14 |
15 | Dr.-Ing. Denis Štogl
16 | Christoph Froehlich
17 |
18 | ament_cmake
19 | ros2_control_cmake
20 |
21 | backward_ros
22 | hardware_interface
23 | pluginlib
24 | rclcpp
25 | rclcpp_lifecycle
26 |
27 | controller_manager
28 | forward_command_controller
29 | ros_gz_bridge
30 | ros_gz_sim
31 | gz_ros2_control
32 | joint_state_broadcaster
33 | joint_state_publisher_gui
34 | joint_trajectory_controller
35 | robot_state_publisher
36 | ros2_control_demo_description
37 | ros2_controllers_test_nodes
38 | ros2controlcli
39 | rviz2
40 | xacro
41 |
42 | ament_cmake_pytest
43 | ament_cmake_ros
44 | launch_testing_ament_cmake
45 | launch_testing
46 | launch
47 | liburdfdom-tools
48 | rclpy
49 |
50 |
51 | ament_cmake
52 |
53 |
54 |
--------------------------------------------------------------------------------
/example_5/hardware/include/ros2_control_demo_example_5/external_rrbot_force_torque_sensor.hpp:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2021, Stogl Robotics Consulting UG (haftungsbeschränkt)
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | //
16 | // Authors: Subhas Das, Denis Stogl
17 | //
18 |
19 | #ifndef ROS2_CONTROL_DEMO_EXAMPLE_5__EXTERNAL_RRBOT_FORCE_TORQUE_SENSOR_HPP_
20 | #define ROS2_CONTROL_DEMO_EXAMPLE_5__EXTERNAL_RRBOT_FORCE_TORQUE_SENSOR_HPP_
21 |
22 | #include
23 | #include
24 | #include
25 |
26 | #include "hardware_interface/handle.hpp"
27 | #include "hardware_interface/hardware_info.hpp"
28 | #include "hardware_interface/sensor_interface.hpp"
29 | #include "hardware_interface/types/hardware_interface_return_values.hpp"
30 | #include "rclcpp/macros.hpp"
31 |
32 | namespace ros2_control_demo_example_5
33 | {
34 | class ExternalRRBotForceTorqueSensorHardware : public hardware_interface::SensorInterface
35 | {
36 | public:
37 | RCLCPP_SHARED_PTR_DEFINITIONS(ExternalRRBotForceTorqueSensorHardware)
38 |
39 | hardware_interface::CallbackReturn on_init(
40 | const hardware_interface::HardwareComponentInterfaceParams & params) override;
41 |
42 | hardware_interface::CallbackReturn on_activate(
43 | const rclcpp_lifecycle::State & previous_state) override;
44 |
45 | hardware_interface::CallbackReturn on_deactivate(
46 | const rclcpp_lifecycle::State & previous_state) override;
47 |
48 | hardware_interface::return_type read(
49 | const rclcpp::Time & time, const rclcpp::Duration & period) override;
50 |
51 | private:
52 | // Parameters for the RRBot simulation
53 | double hw_start_sec_;
54 | double hw_stop_sec_;
55 | double hw_sensor_change_;
56 | };
57 |
58 | } // namespace ros2_control_demo_example_5
59 |
60 | #endif // ROS2_CONTROL_DEMO_EXAMPLE_5__EXTERNAL_RRBOT_FORCE_TORQUE_SENSOR_HPP_
61 |
--------------------------------------------------------------------------------
/example_12/bringup/launch/launch_chained_controllers.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Stogl Robotics Consulting UG (haftungsbeschränkt)
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 |
16 | from launch import LaunchDescription
17 | from launch.actions import RegisterEventHandler
18 | from launch.event_handlers import OnProcessExit
19 | from launch.substitutions import PathJoinSubstitution
20 | from launch_ros.actions import Node
21 | from launch_ros.substitutions import FindPackageShare
22 |
23 |
24 | def generate_launch_description():
25 |
26 | robot_controllers = PathJoinSubstitution(
27 | [
28 | FindPackageShare("ros2_control_demo_example_12"),
29 | "config",
30 | "rrbot_chained_controllers.yaml",
31 | ]
32 | )
33 |
34 | position_controller_spawner = Node(
35 | package="controller_manager",
36 | executable="spawner",
37 | arguments=["position_controller", "--param-file", robot_controllers],
38 | )
39 |
40 | forward_position_controller_spawner = Node(
41 | package="controller_manager",
42 | executable="spawner",
43 | arguments=["forward_position_controller", "--param-file", robot_controllers],
44 | )
45 |
46 | # Delay start of forward_position_controller_spawner after `position_controller_spawner`
47 | delay_forward_position_controller_spawner_after_position_controller_spawner = (
48 | RegisterEventHandler(
49 | event_handler=OnProcessExit(
50 | target_action=position_controller_spawner,
51 | on_exit=[forward_position_controller_spawner],
52 | )
53 | )
54 | )
55 |
56 | nodes = [
57 | position_controller_spawner,
58 | delay_forward_position_controller_spawner_after_position_controller_spawner,
59 | ]
60 |
61 | return LaunchDescription(nodes)
62 |
--------------------------------------------------------------------------------
/example_15/bringup/launch/test_multi_controller_manager_joint_trajectory_controller.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Stogl Robotics Consulting UG (haftungsbeschränkt)
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | from launch import LaunchDescription
16 | from launch.substitutions import PathJoinSubstitution
17 | from launch_ros.actions import Node
18 | from launch_ros.substitutions import FindPackageShare
19 |
20 |
21 | def generate_launch_description():
22 |
23 | # For example: the parameters for different node may be placed into the same yaml file
24 | position_goals = PathJoinSubstitution(
25 | [
26 | FindPackageShare("ros2_control_demo_example_15"),
27 | "config",
28 | "multi_controller_manager_joint_trajectory_publisher.yaml",
29 | ]
30 | )
31 |
32 | rrbot_1_publisher_joint_trajectory_controller_node = Node(
33 | package="ros2_controllers_test_nodes",
34 | executable="publisher_joint_trajectory_controller",
35 | namespace="rrbot_1",
36 | name="publisher_joint_trajectory_controller",
37 | parameters=[position_goals],
38 | output={
39 | "stdout": "screen",
40 | "stderr": "screen",
41 | },
42 | )
43 |
44 | rrbot_2_publisher_joint_trajectory_controller_node = Node(
45 | package="ros2_controllers_test_nodes",
46 | executable="publisher_joint_trajectory_controller",
47 | namespace="rrbot_2",
48 | name="publisher_joint_trajectory_controller",
49 | parameters=[position_goals],
50 | output={
51 | "stdout": "screen",
52 | "stderr": "screen",
53 | },
54 | )
55 |
56 | return LaunchDescription(
57 | [
58 | rrbot_1_publisher_joint_trajectory_controller_node,
59 | rrbot_2_publisher_joint_trajectory_controller_node,
60 | ]
61 | )
62 |
--------------------------------------------------------------------------------
/example_15/bringup/launch/test_multi_controller_manager_forward_position_controller.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2021 Stogl Robotics Consulting UG (haftungsbeschränkt)
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | from launch import LaunchDescription
16 | from launch.substitutions import PathJoinSubstitution
17 | from launch_ros.actions import Node
18 | from launch_ros.substitutions import FindPackageShare
19 |
20 |
21 | def generate_launch_description():
22 |
23 | # For example: the parameters for different node may be placed into the same yaml file
24 | position_goals = PathJoinSubstitution(
25 | [
26 | FindPackageShare("ros2_control_demo_example_15"),
27 | "config",
28 | "multi_controller_manager_forward_position_publisher.yaml",
29 | ]
30 | )
31 |
32 | rrbot_1_publisher_forward_position_controller_node = Node(
33 | package="ros2_controllers_test_nodes",
34 | executable="publisher_forward_position_controller",
35 | namespace="rrbot_1",
36 | name=["publisher_forward_position_controller"],
37 | parameters=[position_goals],
38 | output={
39 | "stdout": "screen",
40 | "stderr": "screen",
41 | },
42 | )
43 |
44 | rrbot_2_publisher_forward_position_controller_node = Node(
45 | package="ros2_controllers_test_nodes",
46 | executable="publisher_forward_position_controller",
47 | namespace="rrbot_2",
48 | name=["publisher_forward_position_controller"],
49 | parameters=[position_goals],
50 | output={
51 | "stdout": "screen",
52 | "stderr": "screen",
53 | },
54 | )
55 |
56 | return LaunchDescription(
57 | [
58 | rrbot_1_publisher_forward_position_controller_node,
59 | rrbot_2_publisher_forward_position_controller_node,
60 | ]
61 | )
62 |
--------------------------------------------------------------------------------
/example_10/hardware/include/ros2_control_demo_example_10/rrbot.hpp:
--------------------------------------------------------------------------------
1 | // Copyright 2023 ros2_control Development Team
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #ifndef ROS2_CONTROL_DEMO_EXAMPLE_10__RRBOT_HPP_
16 | #define ROS2_CONTROL_DEMO_EXAMPLE_10__RRBOT_HPP_
17 |
18 | #include
19 | #include
20 | #include
21 |
22 | #include "hardware_interface/handle.hpp"
23 | #include "hardware_interface/hardware_info.hpp"
24 | #include "hardware_interface/system_interface.hpp"
25 | #include "hardware_interface/types/hardware_interface_return_values.hpp"
26 | #include "rclcpp/macros.hpp"
27 | #include "rclcpp_lifecycle/node_interfaces/lifecycle_node_interface.hpp"
28 | #include "rclcpp_lifecycle/state.hpp"
29 |
30 | namespace ros2_control_demo_example_10
31 | {
32 | class RRBotSystemWithGPIOHardware : public hardware_interface::SystemInterface
33 | {
34 | public:
35 | RCLCPP_SHARED_PTR_DEFINITIONS(RRBotSystemWithGPIOHardware)
36 |
37 | hardware_interface::CallbackReturn on_init(
38 | const hardware_interface::HardwareComponentInterfaceParams & params) override;
39 |
40 | hardware_interface::CallbackReturn on_configure(
41 | const rclcpp_lifecycle::State & previous_state) override;
42 |
43 | hardware_interface::CallbackReturn on_activate(
44 | const rclcpp_lifecycle::State & previous_state) override;
45 |
46 | hardware_interface::CallbackReturn on_deactivate(
47 | const rclcpp_lifecycle::State & previous_state) override;
48 |
49 | hardware_interface::return_type read(
50 | const rclcpp::Time & time, const rclcpp::Duration & period) override;
51 |
52 | hardware_interface::return_type write(
53 | const rclcpp::Time & time, const rclcpp::Duration & period) override;
54 |
55 | private:
56 | // Parameters for the RRBot simulation
57 | double hw_slowdown_;
58 | };
59 |
60 | } // namespace ros2_control_demo_example_10
61 |
62 | #endif // ROS2_CONTROL_DEMO_EXAMPLE_10__RRBOT_HPP_
63 |
--------------------------------------------------------------------------------
/example_1/hardware/include/ros2_control_demo_example_1/rrbot.hpp:
--------------------------------------------------------------------------------
1 | // Copyright 2020 ros2_control Development Team
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 |
15 | #ifndef ROS2_CONTROL_DEMO_EXAMPLE_1__RRBOT_HPP_
16 | #define ROS2_CONTROL_DEMO_EXAMPLE_1__RRBOT_HPP_
17 |
18 | #include
19 | #include
20 | #include
21 |
22 | #include "hardware_interface/handle.hpp"
23 | #include "hardware_interface/hardware_info.hpp"
24 | #include "hardware_interface/system_interface.hpp"
25 | #include "hardware_interface/types/hardware_interface_return_values.hpp"
26 | #include "rclcpp/macros.hpp"
27 | #include "rclcpp_lifecycle/node_interfaces/lifecycle_node_interface.hpp"
28 | #include "rclcpp_lifecycle/state.hpp"
29 |
30 | namespace ros2_control_demo_example_1
31 | {
32 | class RRBotSystemPositionOnlyHardware : public hardware_interface::SystemInterface
33 | {
34 | public:
35 | RCLCPP_SHARED_PTR_DEFINITIONS(RRBotSystemPositionOnlyHardware)
36 |
37 | hardware_interface::CallbackReturn on_init(
38 | const hardware_interface::HardwareComponentInterfaceParams & params) override;
39 |
40 | hardware_interface::CallbackReturn on_configure(
41 | const rclcpp_lifecycle::State & previous_state) override;
42 |
43 | hardware_interface::CallbackReturn on_activate(
44 | const rclcpp_lifecycle::State & previous_state) override;
45 |
46 | hardware_interface::CallbackReturn on_deactivate(
47 | const rclcpp_lifecycle::State & previous_state) override;
48 |
49 | hardware_interface::return_type read(
50 | const rclcpp::Time & time, const rclcpp::Duration & period) override;
51 |
52 | hardware_interface::return_type write(
53 | const rclcpp::Time & time, const rclcpp::Duration & period) override;
54 |
55 | private:
56 | // Parameters for the RRBot simulation
57 | double hw_start_sec_;
58 | double hw_stop_sec_;
59 | double hw_slowdown_;
60 | };
61 |
62 | } // namespace ros2_control_demo_example_1
63 |
64 | #endif // ROS2_CONTROL_DEMO_EXAMPLE_1__RRBOT_HPP_
65 |
--------------------------------------------------------------------------------