回顾第三章学习笔记。
1 旋转矩阵
1.1 点,向量,坐标
基本概念,在讨论坐标的过程中,必须基于某一个坐标系。
介绍了向量内积和向量外积的计算方式,向量的内积很容易理解,外积可以用来表示向量的旋转。
1.2 坐标系间的欧式变换
与向量之间的旋转类似,坐标系之间也可以进行旋转运算,再添加平移操作,综合起来叫做坐标系间的变换操作。
欧式变换,是同一个向量在不同的坐标系下的长度和夹角都不发生变化。
根据一个向量,在坐标系发生旋转变化的时候,坐标不会发生变化,推理出旋转矩阵R,旋转矩阵是正交矩阵,并且行列式为1,由此引出特殊正交群(SO)。
通过添加平移向量,以及齐次变换,计算得到变换矩阵T。
2 实践Eigen
eigen是一个矩阵运算库,可以很方便的进行矩阵运算。
3 旋转向量与欧拉角
3.1 旋转向量
旋转操作只有3个自由度,但是旋转矩阵需要9个量来表示,有变量冗余,同样,变换操作有6个自由度,但是变化矩阵需要16个量表示,也存在冗余。减少量的计算。
向量的外积可以表示两个向量的旋转向量。对于坐标系的旋转,可以用一个旋转轴和一个旋转角度表示,定义这样一个向量,方向与旋转轴一致,大小等于旋转角,这种向量乘坐旋转向量。
用三个变量的旋转向量表示旋转变换,再添加三个变量的平移向量,就可以表示变换操作。正好是6个变量。
旋转向量与旋转矩阵的变化是通过罗德里格斯公式计算。
3.2 欧拉角
欧拉角是另外一种使用角度的方式表示旋转,即三个坐标轴的旋转,表示整个坐标系的旋转。
最典型的是ZYX旋转,第一次Z轴旋转,表示偏航(yaw),第二次Y轴旋转,表示俯仰(pitch),第三次是X轴旋转,表示滚转(roll)。
但是第二次旋转若是90度的话,会遇到万向锁问题,失去一个自由度。
欧拉角直观理解很方便,但是不会直接用来计算。
4 四元数
4.1 四元数的定义
采用旋转向量或者欧拉角表示旋转会存在奇异性问题,用3个变量表示三维空间存在这样的问题,那就用4个变量表示三维空间。
四元数就是这个么个玩意儿,一个实部,3个虚部,紧凑并且没有奇异性。
关于四元数表示旋转的性质,有一大堆需要理解。
4.2 四元数的运算
类似于复数的运算。
4.3 用四元数表示旋转
四元数旋转运算的结果会是一个纯虚四元数,其中的三个虚部分别表示旋转后的坐标。
4.4 四元数到旋转矩阵的转换
5 相似、放射、影射变换
欧式变换是最简单的变换,保持了向量的尺度和角度都不变化,只是6个自由度的变换。
相似变换比欧式变化多了一个自由度,对物体的尺度进行了放缩,有7个自由度。
仿射变换只要有旋转矩阵是一个可逆矩阵,不必是正交矩阵,放射变换又被乘坐是正交变换,物体的形状发生了变换,但是保持平行,具有体积比。
射影变换是最一般的变换,自然界投影到相机就是射影变换。
6 实践Eigen的Geometry模块
Eigen中的几何模块介绍很详细,使用简单。