Rotation Representations in Robotics
介绍了四种姿态表示方式:旋转矩阵、欧拉角、轴角 和 四元数,以及它们之间相互转换关系的推导
旋转矩阵 Rotation Matrix
对于物体坐标系
显然,这是一个正交矩阵
进一步,由于旋转矩阵的所有行向量的模长均为 1,且行向量之间两两正交,有
更普遍地,我们用
接下来我们推导绕任一轴旋转的旋转矩阵的表达形式
记三维空间中一任意向量
则
其中
而
上式就是 罗德里格斯旋转公式 Rodrigues' Rotation Formula,进一步我们令
解得
综上得到绕任意轴的旋转矩阵
欧拉角 Euler Angles
定义:
- 顺规:合法的欧拉角组中,任何两个连续的旋转,必须绕着不同的转动轴旋转,因此一共有 12 种顺规,被划分为两大类:
- 经典欧拉角 Proper Euler Angles:
zxz
,xyx
,yzy
,zyz
,xzx
,yxy
- 泰特-布莱恩角 Tait-Bryan Angles:
xyz
,yzx
,zxy
,xzy
,zyx
,yxz
其中按zyx
顺序旋转的情况又被称为 RPY 角或 XYZ 固定角
- 经典欧拉角 Proper Euler Angles:
- 内外旋:根据绕旋转后的新轴旋转还是绕世界坐标系中固定不动的轴旋转,欧拉角被分为内旋和外旋:
- 内旋 Intrisic Rotation, 又称为动态旋转,绕物体坐标系旋转
- 外旋 Extrinsic Rotation, 又称为静态旋转,绕世界坐标系旋转
- 内旋与外旋具有等价性
欧拉角 2 旋转矩阵
旋转矩阵 2 欧拉角
以旋转顺序为 zyx
的内旋欧拉角为例
由此
但当
轴角 Axis Angle
轴角通过两个参数描述一个旋转:一条轴和描述绕这个轴的旋转量的角度,记为
轴角 2 旋转矩阵
由罗德里格斯旋转公式可推出绕任意轴旋转的旋转矩阵,具体推导见 旋转矩阵 Rotation Matrix
旋转矩阵 2 轴角
观察上式,对给定旋转矩阵,有
欧拉角 2 轴角
愉快地,我们可以利用 欧拉角 --> 四元数 --> 轴角 的方式得到
轴角 2 欧拉角
直接从轴角转为欧拉角比较困难,我们可以利用 轴角 --> 旋转矩阵 --> 欧拉角 的间接转化方式减少计算难度
使用欧拉角进行表示时,某些情况会出现万向节锁和奇异的现象,需要特殊处理
四元数 Quaterions
不妨记四元数为
绕任意轴
轴角 2 四元数
四元数 2 轴角
四元数 2 旋转矩阵
由罗德里格斯旋转公式可推出绕任意轴旋转的旋转矩阵,具体推导见 旋转矩阵 Rotation Matrix
将
可以推出以下表达
旋转矩阵 2 四元数
当给定旋转矩阵后,观察得到
又有
进一步,可得
欧拉角 2 四元数
对于欧拉角转四元数,我们可以根据四元数的定义写出以下表达
四元数 2 欧拉角
直接从四元数转为欧拉角比较困难,我们可以利用 四元数 --> 旋转矩阵 --> 欧拉角 的间接转化方式减少计算难度
同样地,使用欧拉角进行表示,某些情况会出现万向节锁和奇异的现象,需要特殊处理
表示方法对比
旋转矩阵 Rotation Matrix | 欧拉角 Euler Angles | 轴角 Axis Angle | 四元数 Quarternions | |
---|---|---|---|---|
优 | 可以表示三维空间任一姿态,并推广到 n 维空间 | 符合直觉 | 解决了万向锁 | 可以平滑插值,无万向节锁现象(本质是从四维空间描述三维姿态) |
劣 | 三维空间的姿态却用了九个量进行表示,存储冗余 | 奇异和万向节锁现象无法克服,无法平滑插值 | 无法平滑插值(本质是三维的) | 只对三维空间有效 |
参考资料
影响 | 来源 |
---|---|
https://en.wikipedia.org/wiki/Rodrigues'_rotation_formula#/media/File:Orthogonal_decomposition_unit_vector_rodrigues_rotation_formula.svg |