文章目录
一、旋转矩阵的两种用法
我在旋转矩阵的两种用法一文中提出了关于 R R R的两个基本变换关系: 旧 坐 标 = R ∗ 新 坐 标 ( 坐 标 转 换 公 式 ) 旧坐标=R*新坐标(坐标转换公式) 旧坐标=R∗新坐标(坐标转换公式) 新 向 量 = R ∗ 旧 向 量 ( 向 量 转 移 公 式 ) 新向量=R*旧向量(向量转移公式) 新向量=R∗旧向量(向量转移公式)这两个公式便于记忆,但是不够严谨,严谨地用数学公式表示,我们可以写成: [ 0 x , 0 y , 0 z ] T = R ∗ [ 1 x , 1 y , 1 z ] T [^0x,^0y,^0z]^T = R*[^1x,^1y,^1z]^T [0x,0y,0z]T=R∗[1x,1y,1z]T [ i ^ 1 j ^ 1 k ^ 1 ] = R [ i ^ 0 j ^ 0 k ^ 0 ] \left[ \begin{matrix} \hat i_1&\hat j_1&\hat k_1\end{matrix}\right] = R\left[ \begin{matrix} \hat i_0&\hat j_0&\hat k_0\end{matrix}\right] [i^1j^1k^1]=R[i^0j^0k^0]其中:
- [ 0 x , 0 y , 0 z ] T [^0x,^0y,^0z]^T [0x,0y,0z]T为某个固定点在固定坐标系中的旧坐标, [ 1 x , 1 y , 1 z ] T [^1x,^1y,^1z]^T [1x,1y,1z]T为这个坐标点在旋转后的坐标系中的坐标。
- [ i ^ 1 j ^ 1 k ^ 1 ] \left[ \begin{matrix} \hat i_1&\hat j_1&\hat k_1\end{matrix}\right] [i^1j^1k^1]为旋转后动坐标系的三组新的基向量, [ i ^ 0 j ^ 0 k ^ 0 ] \left[ \begin{matrix} \hat i_0&\hat j_0&\hat k_0\end{matrix}\right] [i^0j^0k^0]为固定坐标系(或者是旋转前与之重合的动坐标系)的三组旧的基向量。
通过以上的旋转矩阵 R R R的基本性质,我们可以推导出关于前乘和后乘的相关作用。
二、旋转矩阵的后乘(右乘)
旋转矩阵的后乘(post-multiply)用于欧拉角系统,欧拉角有多种组合,每个旋转矩阵都以前一个坐标系为基准,我们简单地假设三个旋转矩阵为 R 1 、 R 2 、 R 3 R_1、R_2、R_3 R1、R2、R3。我们假设在物体坐标系中的某点的坐标为 [ b x , b y , b z ] = [ 3 x , 3 y , 3 z ] [^bx,^by,^bz]=[^3x,^3y,^3z] [bx,by,bz]=[3x,3y,3z],该点在固定坐标系中的坐标为 [ 0 x , 0 y , 0 z ] = [ s x , s y , s z ] [^0x,^0y,^0z]=[^sx,^sy,^sz] [0x,0y,0z]=[sx,sy,sz],在n级新坐标系中的坐标为 [ n x , n y , n z ] [^nx,^ny,^nz] [nx,ny,nz],我们可以得到以下坐标准换公式: [ 0 x , 0 y , 0 z ] = R 1 [ 1 x , 1 y , 1 z ] [^0x,^0y,^0z]=R_1[^1x,^1y,^1z] [0x,0y,0z]=R1[1x,1y,1z] [ 1 x , 1 y , 1 z ] = R 2 [ 2 x , 2 y , 2 z ] [^1x,^1y,^1z]=R_2[^2x,^2y,^2z] [1x,1y,1z]=R2[2x,2y,2z] [ 2 x , 2 y , 2 z ] = R 3 [ 3 x , 3 y , 3 z ] [^2x,^2y,^2z]=R_3[^3x,^3y,^3z] [2x,2y,2z]=R3[3x,3y,3z]我们容易得到: [ 0 x , 0 y , 0 z ] = R 1 R 2 R 3 [ 3 x , 3 y , 3 z ] [^0x,^0y,^0z]=R_1R_2R_3[^3x,^3y,^3z] [0x,0y,0z]=R1R2R3[3x,3y,3z]从而得到了 R s b = R 1 R 2 R 3 R_{sb}=R_1R_2R_3 Rsb=R1R2R3满足: [ s x , s y , s z ] = R [ b x , b y , b z ] [^sx,^sy,^sz]=R[^bx,^by,^bz] [sx,sy,sz]=R[bx,by,bz]
三、旋转矩阵的前乘(左乘)
旋转矩阵的前乘(pre-multiply)用于坐标系相对于固定坐标系进行旋转。我们不妨讨论RPY角系统(注意RPY角不是欧拉角,这点菜鸟容易混淆),也就是先绕固定坐标系
x
^
s
\hat x_s
x^s轴旋转
γ
\gamma
γ角,再绕固定坐标系
y
^
s
\hat y_s
y^s轴旋转
β
\beta
β角,最后绕固定坐标系
z
^
s
\hat z_s
z^s轴旋转
α
\alpha
α角。我们可以得到三个旋转矩阵
R
1
=
R
(
x
^
s
,
γ
)
R_1 = R(\hat x_s,\gamma)
R1=R(x^s,γ)
R
2
=
R
(
y
^
s
,
β
)
R_2 = R(\hat y_s,\beta)
R2=R(y^s,β)
R
3
=
R
(
z
^
s
,
α
)
R_3 = R(\hat z_s,\alpha)
R3=R(z^s,α)
我们假设固定坐标系的三个基向量为
x
^
0
=
x
^
\hat x_0 = \hat x
x^0=x^,
y
^
0
=
y
^
\hat y_0 = \hat y
y^0=y^,
z
^
0
=
z
^
\hat z_0 = \hat z
z^0=z^,经过第一次旋转之后的一级新坐标系的三个基向量为
x
^
1
\hat x_1
x^1,
y
^
1
\hat y_1
y^1,
z
^
1
\hat z_1
z^1,经过第二次旋转之后的二级新坐标系的三个基向量为
x
^
2
\hat x_2
x^2,
y
^
2
\hat y_2
y^2,
z
^
2
\hat z_2
z^2,经过第三次旋转之后的三级新坐标系的三个基向量为
x
^
3
=
x
^
b
\hat x_3=\hat x_b
x^3=x^b,
y
^
3
=
y
^
b
\hat y_3=\hat y_b
y^3=y^b,
z
^
3
=
z
^
b
\hat z_3=\hat z_b
z^3=z^b。根据向量转移公式,我们可以得到:
x
^
n
+
1
=
R
n
+
1
x
^
n
\hat x_{n+1} = R_{n+1} \hat x_n
x^n+1=Rn+1x^n
y
^
n
+
1
=
R
n
+
1
y
^
n
\hat y_{n+1} = R_{n+1} \hat y_n
y^n+1=Rn+1y^n
z
^
n
+
1
=
R
n
+
1
z
^
n
\hat z_{n+1} = R_{n+1} \hat z_n
z^n+1=Rn+1z^n也就是
[
x
^
n
+
1
y
^
n
+
1
z
^
n
+
1
]
=
R
n
+
1
[
x
^
n
y
^
n
z
^
n
]
\left[ \begin{matrix} \hat x_{n+1}&\hat y_{n+1}&\hat z_{n+1}\end{matrix}\right] = R_{n+1}\left[ \begin{matrix}\hat x_{n}&\hat y_{n}&\hat z_{n}\end{matrix}\right]
[x^n+1y^n+1z^n+1]=Rn+1[x^ny^nz^n]分别把1/2/3代入到公式中,我们能够得到:
[
x
^
1
y
^
1
z
^
1
]
=
R
1
[
x
^
0
y
^
0
z
^
0
]
\left[ \begin{matrix} \hat x_{1}&\hat y_{1}&\hat z_{1}\end{matrix}\right] = R_{1}\left[ \begin{matrix}\hat x_{0}&\hat y_{0}&\hat z_{0}\end{matrix}\right]
[x^1y^1z^1]=R1[x^0y^0z^0]
[
x
^
2
y
^
2
z
^
2
]
=
R
2
[
x
^
1
y
^
1
z
^
1
]
\left[ \begin{matrix} \hat x_{2}&\hat y_{2}&\hat z_{2}\end{matrix}\right] = R_{2}\left[ \begin{matrix}\hat x_{1}&\hat y_{1}&\hat z_{1}\end{matrix}\right]
[x^2y^2z^2]=R2[x^1y^1z^1]
[
x
^
3
y
^
3
z
^
3
]
=
R
3
[
x
^
2
y
^
2
z
^
2
]
\left[ \begin{matrix} \hat x_{3}&\hat y_{3}&\hat z_{3}\end{matrix}\right] = R_{3}\left[ \begin{matrix}\hat x_{2}&\hat y_{2}&\hat z_{2}\end{matrix}\right]
[x^3y^3z^3]=R3[x^2y^2z^2]这样可以简单地推导得到:
[
x
^
3
y
^
3
z
^
3
]
=
R
3
R
2
R
1
[
x
^
0
y
^
0
z
^
0
]
\left[ \begin{matrix} \hat x_{3}&\hat y_{3}&\hat z_{3}\end{matrix}\right] = R_{3}R_{2}R_{1}\left[ \begin{matrix}\hat x_{0}&\hat y_{0}&\hat z_{0}\end{matrix}\right]
[x^3y^3z^3]=R3R2R1[x^0y^0z^0]我们可以写出物体坐标系相对于固定坐标系的一次性等效旋转矩阵
R
=
R
3
R
2
R
1
R=R_3R_2R_1
R=R3R2R1,从而满足
[
x
^
b
y
^
b
z
^
b
]
=
R
[
x
^
s
y
^
s
z
^
s
]
\left[ \begin{matrix} \hat x_{b}&\hat y_{b}&\hat z_{b}\end{matrix}\right] = R\left[ \begin{matrix}\hat x_{s}&\hat y_{s}&\hat z_{s}\end{matrix}\right]
[x^by^bz^b]=R[x^sy^sz^s]即
R
b
=
R
R
s
R_b=RR_s
Rb=RRs注意到这里
R
1
R
2
R
3
R_1R_2R_3
R1R2R3的顺序满足左乘关系。