实用:旋转矩阵与方向余弦矩阵(DCM)
使用过程中经常被旋转矩阵搞混,在此记录一下,方便日后查找。
首先明确一下旋转过程,世界坐标系**{G}** 绕X轴旋转

到系{C},绕Y轴旋转

到系{D},绕Z轴旋转

属于本体系中的B部分。值得注意的是,在本系统中所有的旋转操作均围绕体轴进行,并非固定轴操作,在本质上与欧拉角的旋转方式一致
1.两种旋转矩阵
指我的旋转矩阵是单独绕三轴进行操作。即我们需要将这三个元素分别左乘或右乘以获得最终坐标系的变化(这与方向余弦矩阵一致)。通常在查阅资料时会遇到两种形式。具体而言,在本节中我们主要讨论的是绕X轴的情况:
一种是:

另外一种是它的转置:

这两种旋转矩阵均正确无误,在本研究中我们采用第一个作为基本旋转矩阵(记作R_x),而第二个则记作R_x'。若采用第一个,则直接将其代入计算中的R_x部分;相应地,则将其代入计算中的R_x'部分。确保符号对应即可完成操作。
2.坐标变换矩阵
这是我们的坐标旋转过程:

我们关心的是世界坐标系{G}向量与本体系{B}向量之间的映射:
即

与

的关系。
这里我直接给出关系式:


把符号和公式对应好就不会错。
3.matlab中自带函数
angle2dcm和quat2dcm属于matlab的预装功能库中的内置函数。前一种涉及Euler angles至旋转矩阵的转换功能,后一种则实现quaternions至旋转矩阵的转换过程。
我们以绕x轴旋转pi/2为例。
3.1 angle2dcm
A=angle2dcm(angle1,angle2,angle3,'type')
angle1代表第一个旋转角, angle2代表第二个旋转角, angle3代表第三个旋转角, 其中'type'表示旋转变换的顺序, 举例来说是'xyz';

3.2 quat2dcm
同样的此时对应四元数为q=[ cos(pi/2) sin(pi/2) 0 0 ],第一个为实部

可以看到结果一致,注意此时返回值A为DCM_B,使用时注意是否需要转置。
3.3 quat2angle
MATLAB内置的四元数转欧拉角函数即quat2angle(q,type),接下来验证之前举的例子。

可以看到没有问题。
