在 ROS2 中,要通過命令行發布速度控制指令來控制麥克娜姆輪機器人,你需要知道機器人所使用的速度控制話題和消息類型。通常麥克娜姆輪機器人使用geometry_msgs/Twist消息類型來接收速度指令。
以下是通過命令行發布速度控制指令的方法:
首先確認機器人的速度控制話題,通常可能是/cmd_vel或類似的話題,你可以使用以下命令查看:
ros2 topic list
查看話題使用的消息類型:
ros2 topic info /cmd_vel # 替換為你的實際話題名
如果確認使用geometry_msgs/Twist消息類型,可以使用以下命令發布速度指令:
向前移動(x 軸方向):
ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.5, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0}}"
向后移動:
ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: -0.5, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0}}"
向左平移(y 軸方向,麥克娜姆輪特色):
ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0, y: 0.5, z: 0}, angular: {x: 0, y: 0, z: 0}}"
向右平移:
ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0, y: -0.5, z: 0}, angular: {x: 0, y: 0, z: 0}}"
旋轉(z 軸方向):
ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.5}}"
如果需要持續發布指令,可以將–once參數改為–rate 10(表示以 10Hz 的頻率發布):
ros2 topic pub --rate 10 /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.5, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0}}"