Skip to content

ROS 2 Control

ros2_control is the standard hardware abstraction and control framework for ROS 2.

Installation

bash
sudo apt install ros-humble-ros2-control ros-humble-ros2-controllers

URDF Hardware Interface

xml
<ros2_control name="DiffDriveSystem" type="system">
  <hardware>
    <plugin>my_robot/DiffDriveHardware</plugin>
  </hardware>
  <joint name="left_wheel_joint">
    <command_interface name="velocity"/>
    <state_interface name="velocity"/>
    <state_interface name="position"/>
  </joint>
  <joint name="right_wheel_joint">
    <command_interface name="velocity"/>
    <state_interface name="velocity"/>
    <state_interface name="position"/>
  </joint>
</ros2_control>

Controller Config (controllers.yaml)

yaml
controller_manager:
  ros__parameters:
    update_rate: 50

diff_drive_controller:
  ros__parameters:
    left_wheel_names: ["left_wheel_joint"]
    right_wheel_names: ["right_wheel_joint"]
    wheel_separation: 0.3
    wheel_radius: 0.05
    publish_odom_to_tf: true

Launch

bash
ros2 run controller_manager ros2_control_node
ros2 control load_controller diff_drive_controller --set-state active

Released under the MIT License.