[具身智能-708]:ros2 topic pub --rate 10 /turtle1/cmd_vel 消息解析
·
完整逐段拆解这条命令
bash
运行
ros2 topic pub --rate 10 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 1.0, z: 0.0}, angular: {x: 1.0, y: 1.0, z: 0.0}}"
1. 基础命令分段
表格
| 片段 | 含义 |
|---|---|
ros2 topic pub |
ROS2 命令:向话题发布消息 |
--rate 10 |
发送频率,10Hz,每秒发送 10 条消息 |
/turtle1/cmd_vel |
目标话题名称(海龟仿真速度指令话题) |
geometry_msgs/msg/Twist |
消息类型:速度指令消息 话题对应的消息名称 |
| 后面大括号内容 | 消息内部数据(YAML 格式) |
2. Twist 消息字段详解
yaml
{
linear: {x: 2.0, y: 1.0, z: 0.0},
angular: {x: 1.0, y: 1.0, z: 0.0}
}
linear 线速度(单位 m/s)
- linear.x = 2.0:向前直线速度(前进方向的速度) 2m/s(正数向前,负数向后)
- linear.y = 1.0:横向速度,向右横移(平移方向的速度) 1m/s ✅ 麦克纳姆轮小车支持 y 方向横移 ❌ 阿克曼小车、turtlesim 海龟【不支持 linear.y】,这个参数会被直接忽略!
- linear.z = 0.0:上下方向(垂直方向的速度),2D 机器人一律不用
angular 角速度(单位 rad/s)
- angular.z:水平面旋转(左右转向) 👉 重点!2D 移动机器人只使用 angular.z!
- angular.x、angular.y:对应俯仰、翻滚(三维空间旋转) 👉 小车、turtlesim 完全用不到,设置任何数值都不会产生任何效果!
3. 这条命令实际运行效果
-
如果是 turtlesim 海龟仿真 linear.y、angular.x、angular.y 无效 最终等效:向前直行,不转弯
-
如果把话题改为
/cmd_vel,发送给亚博 M1 麦克纳姆轮小车 小车会:向前 + 向右斜向平移 但是依然不会旋转(angular.z=0); angular.x=1 angular.y=1 依旧无效,底盘驱动直接丢弃这两个值。
4. 常见实操修正示范
示例 1:麦轮小车斜向移动(无旋转,有效指令)
bash
运行
ros2 topic pub --rate 10 /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 1.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}"
示例 2:小车前进同时左转(最常用)
bash
运行
ros2 topic pub --rate 10 /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 1.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.3}}"
核心总结(机器人开发必记)
二维地面移动机器人只使用三个参数:linear.x,linear.y,angular.z。 angular.x、angular.y、linear.z 永远填 0,写了也不生效。
额外小知识点
停止小车通用指令(所有底盘通用)
bash
运行
ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}"
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)