ROS:四元数

本文最后更新于:2020年7月3日 下午

参考

pose

首先来看描述机器人位姿的pose,它包含一个机器人的位置坐标position和描述机器人旋转的orientation

1
2
3
4
5
6
7
8
9
10
geometry_msgs/Pose pose
geometry_msgs/Point position
float64 x
float64 y
float64 z
geometry_msgs/Quaternion orientation
float64 x
float64 y
float64 z
float64 w

position

其中位置坐标position包括x,y,z三个值,对于地面移动机器人,z一般为0。

orientation

描述机器人旋转的orientation是一个四元数,w为实部,x,y,z为虚部。

在描述机器人的旋转时欧拉角是比较直观的方式,但是欧拉角存在万象锁的问题,四元数可以很好的解决这个问题。

在欧拉角中一个常用的是“航偏-俯仰-翻滚”(yaw-pitch-roll)。可以简单记忆rpy-xyz。其中roll 对应着绕x轴旋转后的翻滚角。Pitch对应着绕y轴旋转后的俯仰值,yawd对应着绕z轴旋转后的航偏值。那么旋转部分就可以通过roll-pitch-yaw这三个量来描述。

显然对于一个地面移动机器人rollPitch都为0,借助欧拉角到四元数的转换公式。很容易判别,x,y都为0,而

$w=cos(yaw/2)$

$z=sin(yaw/2)$