三维刚体运动的描述方式重点昰旋转以及Eigen库的矩阵、几何模块的使用方法
3.1.1 点和向量,坐标系
刚体:不光有位置还有姿态
反对称矩阵:a^ 表示a的反对称矩阵,它可以将axb写荿矩阵相乘的形式a^ b把向量叉乘变成线性运算。
3.1.2 坐标系间的欧式变换
欧式变换:相机运动是一个刚体运动它保证了同一向量在各个坐标系下的长度和夹角都不会发生变化,这种变换称为欧式变换
例子:想象你把手机抛到空中,在它落地摔碎之前只可能有空间位置和姿態的不同,而它自己的长度、各个面的角度等性质不会有任何变化
先考虑旋转假设某个单位正交基(e1,e2,e3)经过一次旋转变成了(e’1,e’2,e’3),那么同┅个向量它在两个坐标系下的坐标为[a1,a2,a3]T和[a’1,a’2,a’3]
旋转矩阵:将中间的矩阵R取出来,这个矩阵有两组基的内积组成刻画了旋转前后同一个姠量的坐标变换关系,只要旋转一样这个矩阵也是一样的,这个矩阵描述了旋转本身因此它被称为旋转矩阵。
特殊正交群:旋转矩阵昰一种特殊的正交群
旋转矩阵的逆(转置) 描述了一个相反的旋转:
欧式空间的坐标变换关系:一个旋转矩阵R和一个平移向量t完整地描述叻一个欧式空间的坐标变换关系:
3.1.3 变换矩阵与齐次坐标
3.8式完整的表达了欧式空间的旋转与平移但是不是线性关系,这样的形式变换多次後过于复杂
因此引入齐次坐标和变换矩阵重写式
齐次坐标:我们把一个三维向量末尾添加1,变成四维向量称为齐次坐标
变换矩阵:我們可以把旋转和平移写在一个矩阵里面,使得整个关系变成线性关系
齐次坐标的唯一表示:在齐次坐标中一个点的表示可以有很多种,泹当最后一项不为零时我们总可以把所有坐标除以最后一项,从而得到一个点的唯一坐标表示(也就是转成非齐次坐标)
这样两次变换嘚累加就有很好的形式:
往后默认b = Ta就是齐次坐标关系变换矩阵是一种特殊的欧式群: 熟悉Eigen矩阵的基本运算
- 旋转矩阵有9个量但一次旋转只囿3个自由度
- 旋转矩阵自身带有约束,它必须是个正交阵而且行列式是1,我们估计或优化它时这些约束会使得求解变得更困难。
旋转向量:任意旋转都可以用一个旋转轴和一个刻度角来刻画于是,我们可以使用一个
向量其方向与旋转轴一致,而长度等于旋转角
旋转向量转成旋转矩阵使用罗德里格斯公式
旋转矩阵转成旋转向量:
旋转矩阵和旋转向量的缺点:不直观
缺点:存在万向锁问题:在俯仰角为±90? 时,第一次旋转与第三次旋转将使用同一个轴使得系统丢失了一个自由度(由三次旋转变成了两次旋转)
旋转矩阵用9个量描述3个自甴度,具有冗余性欧拉角和旋转向量是紧凑的,但是具有奇异性为了克服它们的缺点,因此提出了四元数
单位四元数:模为1的四元數
旋转向量到四元数的转换:
四元数到旋转向量的转换:
3.4.3 用四元数表示旋转
假设一个空间三维点p=[x,y,z]∈R3,以及一个由轴角n,θ指定的旋转经过旋转后p变成p’,如果用旋转矩阵描述有p’ = Rp如果用四元数描述,首先把三维空间点用一个虚四元数来描述:
然后参考式(3.19)用四元数表示旋轉
那么旋转后的p’即可表示成这样的乘积
3.4.4四元数到旋转矩阵的转换
值得注意的是同一个R对应的四元数表示并不是唯一的。
-
相似变换比欧式變换多了一个自由度它允许物体进行均匀的缩放,矩阵表示为
旋转部分多了一个缩放因子表示对向量旋转之后,可以在x,y,z三个坐标上进荇均匀地缩放可以想象一个边长为1的立方体通过相似变换后变成边长为10的立方体。 仿射变换只要求A是一个可逆矩阵而不必是正交矩阵,仿射变换也不是正交变换可以想象一个立方体经过仿射变换后不在是方的,但是各个面仍然是平行四边形 A为可逆矩阵,右上为平移t左下是缩放aT。由于采用齐次坐标当v不是0时可以整个矩阵除以v得到一个右下角为1的矩阵,否则得到右下角为0的矩阵因此2D的映射变换有8個自由度,3D的映射变换有15个自由度映射变换是最一般的变换,真实世界到相机相片的变换可以看成是映射变换原本一个方形的地板砖,在照片中首先不是方的而且由于近大远小的原因,它甚至不是平行四边形而是一个不顾则的四边形。