ros2 control 2

controller

创建一个pkg,在pkg中新建一个controller.yaml。

点击查看代码
controller_manager:ros__parameters:update_rate: 50joint_state_broadcaster:type: joint_state_broadcaster/JointStateBroadcasterdiff_drive_controller:type: diff_drive_controller/DiffDriveControllerdiff_drive_controller:ros__parameters:left_wheel_names: ["base_left_wheel_joint"]right_wheel_names: ["base_right_wheel_joint"]wheel_separation: 0.45wheel_radius: 0.1odom_frame_id: "odom"base_frame_id: "base_footprint"pose_covariance_diagonal: [0.001, 0.001, 0.001, 0.001, 0.001, 0.01]twist_covariance_diagonal: [0.001, 0.001, 0.001, 0.001, 0.001, 0.01]enable_odom_tf: truepublish_rate: 50.0linear.x.max_velocity: 1.0linear.x.min_velocity: -1.0angular.z.max_velocity: 1.0angular.z.min_velocity: -1.0
update_rate为数据频率。 joint_state_broadcaster从硬件资源获取数据然后发布。写法仿照https://github.com/ros-controls/ros2_controllers/tree/humble/joint_state_broadcaster文档。起了两个名字分别是joint_state_broadcaster和diff_drive_controller,名字可以随意起,它们的type为文档中的class的那么属性。接下来这两个会成为节点,为这两个节点添加参数。diff_drive_controller的params参考https://github.com/ros-controls/ros2_controllers/blob/humble/diff_drive_controller/src/diff_drive_controller_parameter.yaml,将左右轮的名字添加进去。wheel_separation代表两个轮子的距离。diff_drive_controller接受速度命令,将其转化为两个轮子各自的速度,并且接受速度用来闭环控制。添加odom_frame_id,base_frame_id,base_frame_id为底盘的名字。params里的publish_rate不会超过controller_manager中的。增加速度限制范围。