Ros

geometry_msgs::Twist

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地图界面在用的测试速度值

方向 linearangular.z
正前(forward)1, 0, 00
前右(forwardright)1, 0, 0-1
前左(forwardleft)1, 0, 01
正后backward-1, 0, 00
后右backwardright-1, 0, 01
后左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)}

 

全部评论: 0

    写评论: