【SLAM十四讲总结】第三讲
运动的表示/位姿的表示
旋转矩阵—>旋转向量—>欧拉角—>四元数(李代数)
旋转矩阵用九个量描述三自由度的旋转,具有冗余性;欧拉角和旋转向量是紧凑的,但具有奇异性。所以最后重任落到了四元数的头上
1. 旋转矩阵,变换矩阵
1.1 前提知识
向量的内积(点乘):
向量的外积(叉乘):
外积只对三维向量存在定义,可以用外积表示旋转
1.2 旋转矩阵
特殊正交阵,正交阵且行列式为1(表示只改变方向,不改变大小)是旋转矩阵的充要条件
1.3 变换矩阵与齐次坐标
在三维向量末尾加1,就变成四维向量,成为齐次坐标,这样就更加方便多次变换情况下的计算。
同样,变换矩阵的引入也是为了方便多次变换时候的计算。
两次变换,如果用R和t,那么如下:
如果用T1和T2,则如下:
旋转矩阵:特殊欧氏群:因为描述的是欧式变换,即只有旋转和平移,保持体积,长度,夹角都不变。
2. 旋转向量,欧拉角
2.1 旋转向量
- 一个旋转轴n(单位向量,只表示方向)和一个旋转角(θ,表示旋转的大小),轴角法
- 与T之间的转换–罗德里格斯公式
逆变换:
转轴 n 是矩阵 R 特征值 1 对应的特征向量,特征值为1是因为只改方向不改大小。
2.2 欧拉角
- 把一个旋转分解成三次绕不同轴的旋转。常用的是ZYX且是绕旋转之后的轴继续旋转。
- 根据ZYX具体在物体的哪个方向定义,所得到的俯仰,横滚,偏航三个角度的位置不一样。
- 欧拉角会引入万向锁,如下图,万向锁说的是三个轴的自由度现在降成了两个,具体到本题目就是,第一次旋转的转轴Z和第三次旋转的X轴处于共轴(不要扯方向不一样,这和方向没关系)的情况,那么俯仰,横滚,偏航中三个角现在有一个就消失了。之前的Z轴和现在的X轴表示三个中同一个含义。
- 只要是用欧拉角,都会发生万向锁的问题,所以欧拉角一般只用于显示不用于计算。
- 陀螺仪的工作原理,详解万向锁问题
万向锁问题
3 四元数
也是表示旋转,既是紧凑的,也是非奇异的。
3.1 基本的四元数
- 基本四元数
- 虚部之间关系
- 基本运算:
加减
乘
共轭、
模长
逆
数乘与点乘(不是向量的点乘哦!)
3.2 四元数与旋转
- 单位四元数表示三维空间中任意一个旋转,虚四元数用于表示一个点
- 单位四元数的这种表达方式和复数有着微妙的不同,在复数中,乘以 i 意味着旋转 90 度。但是,四元数这里表示旋转是:乘以 i 应该对应着旋转 180 度,这样才能保证 ij = k 的性质。而 i2 = −1,意味着绕 i 轴旋转 360 度后,你得到了一个相反的东西。而只有旋转两周才会和它原先的样子相等。
- 与旋转向量的关系:
- 这式子给我们一种微妙的“转了一半”的感觉。同样,对式(3.19)的 θ 加上 2π,我们得到一个相同的旋转,但此时对应的四元数变成了 −q。因此,在四元数中, 两个互为相反数的四元数表示一个相同的旋转,或者说任意的旋转都可以由两个互为相反数的四元数表示。
- 具体旋转
- 首先,将一个点表示成虚四元数
- 其次,将轴角或者R和t转换成四元数
- 对点p进行旋转得到p’,其仍然是一个虚四元数,坐标是其虚部。
- 首先,将一个点表示成虚四元数
3. 相似、仿射、射影变换
- 欧式变换(只有旋转和平移)
- 相似变换(增加缩放)
- 反射变换(A是一个可逆阵,不必是正交阵,也叫正交投影)
经过仿射变换之后,立方体就不再是方的了,但是各个面仍然是平行四边形。 - 射影变换(投射变换)
左上角为可逆矩阵 A,右上为平移 t,左下缩放 aT,v不等于0的时候,可以将v归一化为1.
从真实世界到相机照片的变换可以看成一个射影变换。
读者可以想象一个原本方形的地板砖,在照片当中是什么样子:首先,它不再是方形的。由于近大远小的关系,它甚至不是平行四边形,而是一个不规则的四边形。