主要内容:旋转矩阵、变换矩阵、四元数、欧拉角
3.1 旋转矩阵
3.1.1 点、向量和坐标系
- 刚体:三维空间中的物体,需要用三维坐标(xyz)和位姿(物体朝向)来描述
- 左/右手坐标系:将大拇指、食指、中指两两垂直,定义大拇指代表x轴,食指代表y轴,中指代表z轴;那么左手xyz三个方向合起来表示的即是左手坐标系,右手xyz三个方向合起来表示的即是右手坐标系;区别是,左手坐标系和右手坐标系对应的xyz轴,三轴不能同时重合
3.1.2 坐标系间的欧氏变换
- 世界坐标系/惯性坐标系:固定不动
- 移动坐标系:从世界坐标系看移动坐标系,会发现移动坐标系在世界坐标系中,原点会变化;而移动坐标系自己看自己,原点是不变的
- 刚体运动:两个坐标系之间的运动,由旋转加上平移组成
- 欧式变换:在世界坐标系下一个物体从一个点移动到另一个点的过程,由旋转和平移组成
- 旋转矩阵:旋转前后坐标系的两组基的內积构成的矩阵,描述了旋转本身;旋转矩阵是一个行列式为1的正交矩阵(充要)
- 平移矩阵:向量加减
3.1.3 变换矩阵与齐次坐标
变换并不是线性的,为了方便表示多次变换的结果,引入了矩阵的表示方法,即齐次坐标和变换矩阵,引入齐次坐标后,写成矩阵形式,变换即为线性了
- 齐次坐标:在某个向量坐标末尾增加一个数值为1的维度,使其变成四维向量,该向量则被称为齐次坐标
- 变换矩阵:包含旋转和平移,使变换关系为线性的矩阵。变换矩阵是一个分块矩阵,其左上角为旋转矩阵,右上角为平移向量,左下角为0向量,右下角为1;自由度为6(前,右,上,旋转,俯仰,偏航)
3.2 旋转向量和欧拉角
由于旋转矩阵用了4*4共16个数值来表达6个自由度之间的变换存在数据的冗余、旋转矩阵自身带有的行列式为1和正交的约束使得求解过程可能存在困难——从而引出了旋转向量和欧拉角
3.2.1 旋转向量
任意旋转都可以用一个旋转角和一个旋转轴来刻画,而旋转向量正好包含了这两个特性。
-
旋转向量:向量方向与旋转轴一致,向量长度等于旋转角,是一个三维向量,用于描述旋转
假定存在一个单位向量n,此时向量具有一个方向,为旋转轴的方向;假定旋转角为θ,那么θn即可描述一次旋转 -
变换矩阵的旋转向量表示:使用一个旋转向量和一个平移向量即可表示变换矩阵,表达一次旋转
-
旋转矩阵R和旋转向量θn之间的相互计算:
n -> R:
R -> θ:
旋转轴n与R之间的关系:由于旋转轴上的向量经过旋转后不发生改变,则有Rn = n,因此转轴n是矩阵R特征值1对应的特征向量
3.2.2 欧拉角
由于旋转矩阵和旋转向量的表述比较不直观,为了直观地表述旋转究竟是怎么回事,欧拉角的概念被引入
大部分领域使用欧拉角时的定义(旋转顺序,旋转方式)不一定相同
- 欧拉角:有三个分离的转角,将一次旋转分解成三次三个不同方向旋转的总和
存在多种分解方式:旋转轴旋转的先后顺序(xyz, zyx, yzx等),绕固定轴旋转还是绕最新旋转的轴旋转等 - 偏航(yaw)、俯仰(pitch)、翻滚(roll)
偏航:绕物体Z轴旋转得到
俯仰:绕物体Y轴旋转得到
翻滚:绕物体X轴旋转得到 - rpy角:一个脍炙人口的特定旋转流程的欧拉角描述,rpy角旋转顺序是zyx
欧拉角的使用过程中会碰到一个万向锁问题。具体自行查阅。
3.3 四元数
旋转矩阵用9个数值描述3个自由度的旋转存在一定的冗余,而欧拉角和旋转向量虽然紧凑但存在奇异性。