问题阐述
假设所有坐标系为右手坐标系,世界坐标系为 X w Y w Z w X_wY_wZ_w XwYwZw,现在有一架飞机,其自身坐标系为 X p Y p Z p X_pY_pZ_p XpYpZp( X p X_p Xp向右, Y p Y_p Yp向前, Z p Z_p Zp向上)。现在假设:飞机先绕自己的 Z p Z_p Zp轴旋转 y a w yaw yaw角度(偏航角),再绕自己的 X p X_p Xp轴旋转 p i t c h pitch pitch角度(俯仰角),最后绕自己的 Y p Y_p Yp轴旋转 r o l l roll roll角度(滚动角)。现在,求飞机上的点转换到世界坐标系下的旋转变换矩阵 T p − w T_{p-w} Tp−w。
问题分析
对于这个问题,我们不妨把这个过程分为4个状态:
- 飞机初始位姿与世界坐标系重合(不考虑平移),假设飞机初始位姿为 X 0 Y 0 Z 0 X_0Y_0Z_0 X0Y0Z0,即 X 0 Y 0 Z 0 = X w Y w Z w X_0Y_0Z_0 = X_wY_wZ_w X0Y0Z0=XwYwZw;
- 飞机先绕自己的 Z p Z_p Zp轴(即 Z 0 Z_0 Z0轴)旋转 y a w yaw yaw角度(偏航角),此时飞机的姿态假设由 X 0 Y 0 Z 0 X_0Y_0Z_0 X0Y0Z0转到了 X 1 Y 1 Z 1 X_1Y_1Z_1 X1Y1Z1,因为只绕1轴转动,所以可以容易求得从 X 1 Y 1 Z 1 X_1Y_1Z_1 X1Y1Z1坐标到 X 0 Y 0 Z 0 X_0Y_0Z_0 X0Y0Z0坐标的转换矩阵 T 1 − 0 T_{1-0} T1−0;
- 再绕自己的 X p X_p Xp(即 X 1 X_1 X1轴)轴旋转 p i t c h pitch pitch角度(俯仰角),此时飞机的姿态假设由 X 1 Y 1 Z 1 X_1Y_1Z_1 X1Y1Z1转到了 X 2 Y 2 Z 2 X_2Y_2Z_2 X2Y2Z2,因为只绕1轴转动,所以可以容易求得从 X 2 Y 2 Z 2 X_2Y_2Z_2 X2Y2Z2坐标到 X 1 Y 1 Z 1 X_1Y_1Z_1 X1Y1Z1坐标的转换矩阵 T 2 − 1 T_{2-1} T2−1;
- 最后绕自己的 Y p Y_p Yp轴(即 Y 2 Y_2 Y2)旋转 r o l l roll roll角度(滚动角),此时飞机的姿态假设由 X 2 Y 2 Z 2 X_2Y_2Z_2 X2Y2Z2转到了 X 3 Y 3 Z 3 X_3Y_3Z_3 X3Y3Z3,因为只绕1轴转动,所以可以容易求得从 X 3 Y 3 Z 3 X_3Y_3Z_3 X3Y3Z3坐标到 X 2 Y 2 Z 2 X_2Y_2Z_2 X2Y2Z2坐标的转换矩阵 T 3 − 2 T_{3-2} T3−2;显然,此时的 X 3 Y 3 Z 3 X_3Y_3Z_3 X3Y3Z3与 X p Y p Z p X_pY_pZ_p XpYpZp重合了。
所以
T p − w = T 1 − 0 ∗ T 2 − 1 ∗ T 3 − 2 T_{p-w} = T_{1-0}*T_{2-1}*T_{3-2} Tp−w=T1−0∗T2−1∗T3−2
实际上,由这个公式右边的3个矩阵,这个过程,也可以看作是以下3步骤的旋转:
- 飞机先绕世界坐标系(注意不是飞机自己的坐标系)的 Y w Y_w Yw轴旋转 r o l l roll roll角度(滚动角);
- 然后再绕世界坐标系(注意不是飞机自己的坐标系)的 X w X_w Xw(轴旋转 p i t c h pitch pitch角度(俯仰角);
- 最后再绕世界坐标系(注意不是飞机自己的坐标系)的 Z w Z_w Zw轴旋转 y a w yaw yaw角度(偏航角),便终于得到了飞机坐标系上的点在世界坐标系中的位置。