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-controllersURDF 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: trueLaunch
bash
ros2 run controller_manager ros2_control_node
ros2 control load_controller diff_drive_controller --set-state active