欧拉角转换成方向余弦矩阵
欧拉角有12种旋转顺序分别为
- 1 X-Z-Y
- 2 Y-X-Z
- 3 Y-Z-X
- 4 Z-X-Y
- 5 Z-Y-X
- 6 X-Y-X
- 7 X-Z-X
….
每种旋转顺序可以分解为3次旋转,每次旋转或者为绕X轴,或者绕Y轴,或者绕Z轴(每次旋转都是绕着空间固定不变的坐标系的轴旋转,称为静态旋转)
每次旋转都可以认为坐标乘以了一个矩阵(实际这个矩阵也是方向余弦矩阵)
绕X轴旋转
α
的矩阵为:
Ax=⎡⎣⎢1000cos(α)−sin(α)0sin(α)cos(α)⎤⎦⎥
绕Y轴旋转 α 的矩阵为:
Ay=⎡⎣⎢cos(α)0sin(α)010−sin(α)0cos(α)⎤⎦⎥
绕Z轴旋转 α 的矩阵为:
Az=⎡⎣⎢cos(α)−sin(α)0sin(α)cos(α)0001⎤⎦⎥
加入旋转顺序为Z-Y-X,那么方向余弦矩阵就是
A=Ax∗Ay∗Az
方向余弦矩阵转换成欧拉角
方向余弦矩阵有9个分量,实际只有3个自由度。假设欧拉角为未知量,用上面的方法求解方程,由于方程数目大于未知量,实际这样求解不出方程。
目前我还没有找到一个很好的算法可以完成这个转换。不过Labview中有这样一个模块,可以进行转换
这个模块在【数学】-【几何】下面
在matlab中完成欧拉角与方向余弦矩阵之间的转换
有两个函数:
eul2rotm
,
rotm2eul2
maltab中的欧拉角只支持’ZYX’,’ZYZ’两种选择顺序