旋转矩阵/方向余弦矩阵
上一篇是与本篇紧密联系的欧拉角:
FrancisZhao:做控制要知道的刚体旋转知识(三)欧拉角zhuanlan.zhihu.com正如四元数之于轴角法一样,旋转矩阵之于欧拉角也是不可或缺的。
旋转矩阵为欧拉角提供了数学方法,使其能够相加相减,便于运算。
欧拉角为旋转矩阵提供了直观的理解方式。
先简单过一下rotation matrix,之后再讲一下哪些是使用中需要注意的。
旋转矩阵(rotation matrix)记作R,R是一个标准正交矩阵。从线性代数的角度,这种矩阵有什么性质呢?
1 三个行向量的模均为1,且相互正交。
2 三个列向量的模均为1,且相互正交。
3 行列式的值为1.(非标准正交矩阵的行列式值为-1)
4 RR’=I,乘其转置矩阵为单位阵,
5 自由度为3.(根据正交矩阵的凯莱公式可得)
标准正交矩阵的优点太多了,简直为旋转而生啊!!!
我们从两个角度去理解:欧拉角和方向余弦矩阵。
旋转矩阵
先看看如何从欧拉角推到出旋转矩阵。
先从二维简化来看。
一个点被旋转一个角度。
通过三角函数,我们很容易得出以下的公式:
我们可以把其中的2×2的矩阵定义为R,这就是一个在二维平面的旋转矩阵。这种二维的旋转的旋转轴是垂直于纸面的,因此相当于绕虚拟的Z轴旋转
我们在回归三维,还是以小飞机为例子,转序为ZYX。当我们仅仅绕着Z轴旋转的时候,这和上图中的旋转相同,z的值没有变化,只是x和y的值发生了变化。
接着,绕y轴的旋转
绕y轴的旋转可以表示为:
最后,绕X轴旋转:
绕x轴的旋转可以表示为:
将旋转叠加,也就是旋转矩阵分别的右乘,得到了表示最终姿态的旋转矩阵。
旋转矩阵不仅可以从欧拉角的旋转推到出来,作为欧拉角的数学工具,还可以直接从坐标系之间关系推导出来,这时候R又可以叫做方向余弦矩阵:direction cosine matrix(DCM)。这个在解决某些问题中非常实用:
方向余弦矩阵
单位向量 I, J, K 表示为世界坐标系(global)的XYZ轴,可以写成:
这三个小写的向量 i, j, k是本体坐标系的三个单位向量.其中i向量在世界坐标系下可以表示为:
其中的ix就是向量i在向量I上的投影长度,可表示为I点乘i。
同理可以得出
发现i在世界坐标系下的坐标表示就向量i点乘世界坐标系的三个轴的基准向量。
同理可以推导出ijk,因为ijk和IJK都是单位向量,所以可表示如下:
所以,DCM的第一列就是本体坐标系的i向量(x轴)在世界坐标系下的坐标,同理,y轴和z轴就是第二列和第三列。
第一行呢?就是世界坐标系的的I向量(x轴)在本体坐标系下的坐标,同理,y轴和z轴就是第二行和第三行。
通过这种方式我们可以轻松找出某一条轴的姿态坐标,非常方便。
因此我们可以理解为旋转矩阵和方向余弦矩阵是等价的,二者从不同的角度出发,得出了相同的姿态表示方法。
归一化:
旋转矩阵在计算中可能由于数值误差等等,不符合正交矩阵的需求,因此要经常归一化使其保持正交。mahony 在论文中给出了一种归一化的方式;
取出旋转矩阵的第列和第二列,也就是本体坐标系的x和y轴。
X和Y轴做点乘(如果正交,则点乘应该为0),作为二者之间的误差,再重新计算X和Y
再重新计算Z,因为Z垂直与X和Y,因此取叉乘。
旋转矩阵的优缺点:
优点:
1 相比于欧拉角的多样性,同一个姿态的旋转矩阵是唯一的
2 可以直接做旋转的叠加运算
3 相比于四元数,对坐标转化更加友好。
缺点:
1 用9个量表示三个自由度,冗余度太大了。
前两篇
FrancisZhao:做控制要知道的刚体旋转知识(一)轴角法zhuanlan.zhihu.com专栏里每一篇都是我一个字一个字打的,都是我认为的原创干货。
欢迎指正讨论,转载请注明,认同请点赞。
这个系列的文章很容易出错,希望大佬们多多指正补充。
仅仅收藏是学不会的,还得点赞。
参考文献
https://www. youtube.com/watch? v=lVjFhNv2N8o http://www. chrobotics.com/library/ understanding-euler-angles http://www. starlino.com/dcm_tutori al.html https:// en.wikipedia.org/wiki/R otation_matrix
DCM 1 Draft: 5/17/2009 Direction Cosine Matrix IMU: Theory