Ros用Twist封装速度数据。机器人驱动底血腥时,会发布“/cmd_vel”话题,该话题对应的消息类型就是Twist。
C:\Windows\System32>rosmsg show geometry_msgs/Twist geometry_msgs/Vector3 linear float64 x float64 y float64 z geometry_msgs/Vector3 angular float64 x float64 y float64 z
linear描述线速度,angular描述角速度。对二维情况,z分量都是0。理论上,主板可能会同时把linear、angular赋上一个不为0的速度。
疑问:当同linear、angular同时不为0时,那它表示出的合速度,值上是不能只靠linear就表示?——如果能表示,那存在不为0的angular还有什么意义?
一、launcher地图界面在用的测试速度值
方向 | linear | angular.z |
正前(forward) | 1, 0, 0 | 0 |
前右(forwardright) | 1, 0, 0 | -1 |
前左(forwardleft) | 1, 0, 0 | 1 |
正后backward | -1, 0, 0 | 0 |
后右backwardright | -1, 0, 0 | 1 |
后左backwardleft | -1, 0, 0 | -1 |
speed值。linear的speed/angular的speed
- 更慢速(slower):0.15/0.8
- 慢速(slow):0.3/0.8
- 普通(normal):0.5/1.0
- 快速(fast):0.7/1.2
最后Twist是这么来的:{linear * speed, angular * speed}。
- 正前(慢速):{(0.3, 0, 0), (0, 0, 0)}
- 前右(慢速):{(0.3, 0, 0), (0, 0, -0.8)}
- 前左(慢速):{(0.3, 0, 0), (0, 0, 0.8)}
- 正后(慢速):{(-0.3, 0, 0), (0, 0, 0)}
- 后右(慢速):{(-0.3, 0, 0), (0, 0, 0.8)}
- 后左(慢速):{(-0.3, 0, 0), (0, 0, -0.8)}
- 正前(普通):{(0.5, 0, 0), (0, 0, 0)}
- 前右(普通):{(0.5, 0, 0), (0, 0, -1)}
- 前左(普通):{(0.5, 0, 0), (0, 0, 1)}
- 正后(普通):{(-0.5, 0, 0), (0, 0, 0)}
- 后右(普通):{(-0.5, 0, 0), (0, 0, 1)}
- 后左(普通):{(-0.5, 0, 0), (0, 0, -1)}