姿态和旋转矩阵的探究
(包括旋转向量,旋转矩阵,欧拉角等)
前言:在分析问题前,明确一个知识点,矩阵左乘和右乘的区别,简单理解,左乘为绕固定坐标系旋转,右乘为绕可变坐标系旋转即绕转动后的坐标系所对应的轴进行旋转
姿态是指两个坐标系之间的关系,也就是描述一个坐标系怎么旋转才能和另一个坐标系重合。那么欧拉角所采用的方法就是分别沿三个轴转动三个角度;要真的对一个向量实施这个旋转操作,还是需要将欧拉角转换为相应的旋转矩阵,因此可以把欧拉角称为姿态的“描述”,而旋转矩阵则既可以对姿态进行描述,也可以直接用来处理两个坐标系中的矢量。(引用自知乎https://zhuanlan.zhihu.com/p/110178247)
类似的,轴-角也更像是一种姿态的“描述”,因为它既不直观,也不利于运算(欧拉角在小扰动时还是可以用来近似计算的),而四元数则是一种兼顾描述和计算的表示方法。下面来给出它们的定义以及和旋转矩阵间的关系。
首先我们对基础的概念进行一个认识
轴-角
一个坐标系既然可以通过绕三轴的三次转动与另一坐标系重合,那当然也可以直接绕一个空间矢量旋转一次来与另一坐标系重合。这个空间矢量就是所谓的“轴”,定义为单位矢量,而转动的角度就是“角”,定义为标量。
旋转向量和欧拉角:
SO(3)的旋转矩阵有9个量,但是只有3个自由度,同理SE(3)有16个量,但是也只有6个自由度。在实际的旋转中,任意的旋转都可用一个旋转轴和一个旋转角来表示,我们使用一个向量,方向与旋转轴一致,长度等于旋转角,这样只需要一个三维向量即可描述旋转。对于SE(3),用一个旋转向量和一个平移向量即可表达,恰好自由度为6.如果用旋转向量来描述R:旋转轴为一个单位长度的向量n,角度为θ,那么θn可以表示这个旋转。旋转矩阵R和旋转向量θn的转换过程为罗德里格斯变换:(https://www.cnblogs.com/fuzhuoxin/p/12609720.html)
R = \cos \theta I + (1 - \cos \theta )n{n^T} + \sin \theta {n^ \wedge }
此处末尾的n∧ 如上面所示,代表矩阵表示的向量。那么反过来通过旋转矩阵获取转角 θ;
\theta {\rm{ = arccos}}\frac{{tr® - 1}}{2}
tr®为矩阵R的迹。对于转轴n,Rn=n;表示为转轴绕自身转动不生改变,从数学来说n是矩阵R特征值为1时对应的特征向量。从现在来看旋转轴和旋转角来表示的旋转是紧凑的,没有冗余性,但是欧拉角RPY的空间中,当一个旋转达到+––90∘是就出现了奇异性。相当于地球的经纬度中当纬度为+––90∘时,经度无意义。
那么如何解决冗余性和奇异性呢,于是又提出了四元数,既不冗余有没有奇异性。