描述刚体变换的三种方法
一、旋转矩阵
1、必须是行列式为1的正交矩阵(逆为自身转置的矩阵),因此它的逆(即转置)描述了一个相反的旋转,而平移为(3×1)列向量,并不存在简单的正负相反变换。
2、在进行刚体变换时,待转换坐标左乘变换矩阵。
齐次坐标:
在末尾加上1,将三维的左边转换为四维,可以将旋转与平移写在一个矩阵,将多次变换的非线性关系转化为线性关系,这样的矩阵T称为变换矩阵(又称为特殊欧式群),该矩阵的逆同样表示一个反向的变换。
因此在Ra为使用非齐次坐标,Ta为使用齐次坐标。
总结:
旋转矩阵由SO(3)描述;
平移矩阵用一个R3表示;
将平移与旋转放在同一个矩阵中,组成变换矩阵SE(3)。
二、旋转向量
一个单位长度的向量表示旋转轴 + 一个旋转角来刻画。
这样的话可以用六维向量表示刚体变换,利用罗德里格斯公式可以将旋转矩阵转换为旋转向量。
上式为旋转向量转换为旋转矩阵R;
旋转矩阵到旋转向量之间的变换:
奇异性:当俯仰角(绕y轴旋转)为±90°时,第一次旋转与第三次旋转使用同一个轴,使系统丢失了一个自由度(3次旋转变成了2次旋转),也称为万向锁问题,因此欧拉角不适用于插值和迭代。
补充:绕z轴旋转—偏航角;绕x轴旋转—滚转角。
三、四元数
复数的乘法表示复平面上的旋转。
紧凑且无奇异性,但不够直观并运算稍微复杂一些。
在二维情况下,旋转可以用单位复数描述,任意一个三维旋转都可以用单位四元数表示。
四元数运算法则满足:加减、乘法、取模长、共轭、逆与数乘,其中四元数和自己逆的乘积为实四元数1。
用四元数表示旋转:
四元数与旋转矩阵、旋转向量之间可以进行互相转换。
其余变换包括:相似、仿射与射影变换,均可以用四元数表示(见SLAM十四讲—P58)。
四元数补充:对偶四元数
对比常规四元数只表示空间旋转变换,对偶四元数指实部和对偶部都是四元数,可以表示空间任意旋转和平移的组合。
满足:加减乘、取逆、共轭运算、计算范数。
可以表示:旋转+平移、纯平移、纯旋转组合。
具体公式推导见下面博主展示: