学习惯导这么久,以为自己入门了,突然发现自己还是活在梦里。就拿这个旋转矩阵来说,在学惯导之前就已经明白是怎么回事了,然而并没有什么用,在INS的海洋里兜兜转转,又回到了旋转矩阵。入门道阻且长,惟有志存高远,方能钻研不休。
为了自己的健忘脑袋着想,还是再次完整的备忘一下关于旋转矩阵的问题。在本文中,对在学习严恭敏老师的《捷联惯导算法与组合导航原理讲义》中产生的疑问也做一个补充说明。文末附上前述讲义。
一、入门基础
在开始本文之前,首先要把坐标系定义好。我还是要偷一下懒,因为我觉得我不可能写的比这篇好。见判断三维坐标系旋转正方向的简单方法。在本文中,坐标系即右手系,正向旋转如前述判断方法。
如图所示,将坐标系
o
x
1
y
1
z
1
ox_1y_1z_1
ox1y1z1绕
z
1
z_1
z1轴正向旋转至
o
x
2
y
2
z
2
ox_2y_2z_2
ox2y2z2,
P
P
P点在
o
x
1
y
1
z
1
ox_1y_1z_1
ox1y1z1中的坐标为
(
x
1
,
y
1
)
(x_1,y_1)
(x1,y1),在
o
x
2
y
2
z
2
ox_2y_2z_2
ox2y2z2中的坐标为
(
x
2
,
y
2
)
(x_2,y_2)
(x2,y2)。
显然,该旋转为正向旋转(不要在意旋转角度的字母),在二维坐标系中有
[ x 2 y 2 ] = [ c o s ψ s i n ψ − s i n ψ c o s ψ ] [ x 1 y 1 ] \left[ \begin{matrix} x_2 \\ y_2 \end{matrix} \right]= \left[ \begin{matrix} cos\psi & sin\psi\\ -sin\psi & cos\psi \end{matrix} \right] \left[ \begin{matrix} x_1 \\ y_1 \end{matrix} \right] [x2y2]=[cosψ−sinψsinψcosψ][x1y1]
在三维坐标系中有:
[ x 2 y 2 z 2 ] = [ c o s ψ s i n ψ 0 − s i n ψ c o s ψ 0 0 0 1 ] [ x 1 y 1 z 1 ] \left[ \begin{matrix} x_2 \\ y_2 \\ z_2 \end{matrix} \right]= \left[ \begin{matrix} cos\psi & sin\psi & 0\\ -sin\psi & cos\psi & 0 \\ 0 & 0 & 1 \end{matrix} \right] \left[ \begin{matrix} x_1 \\ y_1 \\ z_1 \end{matrix} \right] ⎣⎡x2y2z2⎦⎤=⎣⎡cosψ−sinψ0sinψcosψ0001⎦⎤⎣⎡x1y1z1⎦⎤
即绕 Z Z Z轴正向旋转的旋转矩阵为:
C ψ = [ c o s ψ s i n ψ 0 − s i n ψ c o s ψ 0 0 0 1 ] C_\psi= \left[ \begin{matrix} cos\psi & sin\psi & 0\\ -sin\psi & cos\psi & 0 \\ 0 & 0 & 1 \end{matrix} \right] Cψ=⎣⎡cosψ−sinψ0sinψcosψ0001⎦⎤
同理,绕 X X X轴正向旋转的旋转矩阵为:
C θ = [ 1 0 0 0 c o s θ s i n θ 0 − s i n θ c o s θ ] C_\theta= \left[ \begin{matrix} 1 & 0 & 0 \\ 0 & cos\theta & sin\theta \\ 0 & -sin\theta & cos\theta \\ \end{matrix} \right] Cθ=⎣⎡1000cosθ−sinθ0sinθcosθ⎦⎤
绕 Y Y Y轴正向旋转的旋转矩阵为:
C γ = [ c o s γ 0 − s i n γ 0 1 0 s i n γ 0 c o s γ ] C_\gamma= \left[ \begin{matrix} cos\gamma & 0 & -sin\gamma\\ 0 & 1 & 0\\ sin\gamma & 0 & cos\gamma\\ \end{matrix} \right] Cγ=⎣⎡cosγ0sinγ010−sinγ0cosγ⎦⎤
如果对绕 Y Y Y轴旋转的情况不了解,请参考003备忘补充之惯性导航基本原理(刘保中)—9.1方向余弦与方向余弦矩阵
二、方向余弦阵
这一小节通过严恭敏老师的讲义进行说明,针对20180206版本。
在该讲义的194页中,给出了两种定义欧拉角的方式,对于图B-2而言,通过以下方式旋转(注意:讲义中旋转角字母的定义跟我上面讲的不一样,不要搞混)
O
X
0
Y
0
Z
0
→
正
向
旋
转
α
绕
Z
轴
O
X
1
Y
1
Z
1
→
正
向
旋
转
β
绕
X
轴
O
X
2
Y
2
Z
2
→
正
向
旋
转
γ
绕
Y
轴
O
X
3
Y
3
Z
3
OX_0Y_0Z_0\xrightarrow[正向旋转\alpha]{绕Z轴}OX_1Y_1Z_1\xrightarrow[正向旋转\beta]{绕X轴}OX_2Y_2Z_2\xrightarrow[正向旋转\gamma]{绕Y轴}OX_3Y_3Z_3
OX0Y0Z0绕Z轴正向旋转αOX1Y1Z1绕X轴正向旋转βOX2Y2Z2绕Y轴正向旋转γOX3Y3Z3
那么将坐标系从0系旋转到1系需要
[
X
1
Y
1
Z
1
]
=
C
0
1
[
X
0
Y
0
Z
0
]
\left[\begin{matrix} X_1\\ Y_1\\ Z_1 \end{matrix} \right] =C_0^1 \left[ \begin{matrix} X_0\\ Y_0\\ Z_0 \end{matrix} \right]
⎣⎡X1Y1Z1⎦⎤=C01⎣⎡X0Y0Z0⎦⎤
C 0 1 = [ c o s α s i n α 0 − s i n α c o s α 0 0 0 1 ] C_0^1= \left[ \begin{matrix} cos\alpha & sin\alpha & 0 \\ -sin\alpha & cos\alpha & 0 \\ 0 & 0 & 1 \end{matrix} \right] C01=⎣⎡cosα−sinα0sinαcosα0001⎦⎤
将坐标系从0系旋转到2系需要
[
X
2
Y
2
Z
2
]
=
C
0
2
[
X
0
Y
0
Z
0
]
=
C
1
2
C
0
1
[
X
0
Y
0
Z
0
]
\left[\begin{matrix}X_2\\Y_2\\Z_2\end{matrix}\right] =C_0^2\left[\begin{matrix}X_0\\Y_0\\Z_0\end{matrix}\right] =C_1^2C_0^1\left[\begin{matrix}X_0\\Y_0\\Z_0\end{matrix}\right]
⎣⎡X2Y2Z2⎦⎤=C02⎣⎡X0Y0Z0⎦⎤=C12C01⎣⎡X0Y0Z0⎦⎤
C
1
2
=
[
1
0
0
0
c
o
s
β
s
i
n
β
0
−
s
i
n
β
c
o
s
β
]
C_1^2=\left[\begin{matrix} 1 & 0 & 0\\ 0 & cos\beta & sin\beta \\ 0 & -sin\beta & cos\beta \end{matrix}\right]
C12=⎣⎡1000cosβ−sinβ0sinβcosβ⎦⎤
将坐标系从0系旋转到3系需要
[
X
3
Y
3
Z
3
]
=
C
0
3
[
X
0
Y
0
Z
0
]
=
C
2
3
C
1
2
C
0
1
[
X
0
Y
0
Z
0
]
\left[\begin{matrix}X_3\\Y_3\\Z_3\end{matrix}\right] =C_0^3\left[\begin{matrix}X_0\\Y_0\\Z_0\end{matrix}\right] =C_2^3C_1^2C_0^1\left[\begin{matrix}X_0\\Y_0\\Z_0\end{matrix}\right]
⎣⎡X3Y3Z3⎦⎤=C03⎣⎡X0Y0Z0⎦⎤=C23C12C01⎣⎡X0Y0Z0⎦⎤
C 2 3 = [ c o s γ 0 − s i n γ 0 1 0 s i n γ 0 c o s γ ] C_2^3=\left[\begin{matrix} cos\gamma & 0 & -sin\gamma \\ 0 & 1 & 0\\ sin\gamma & 0 & cos\gamma \end{matrix}\right] C23=⎣⎡cosγ0sinγ010−sinγ0cosγ⎦⎤
那么从3系旋转到0系即为:
C
3
0
=
(
C
0
3
)
T
=
(
C
2
3
C
1
2
C
0
1
)
T
=
(
C
0
1
)
T
(
C
1
2
)
T
(
C
2
3
)
T
=
C
1
0
C
2
1
C
3
2
C_3^0=(C_0^3)^T=(C_2^3C_1^2C_0^1)^T=(C_0^1)^T(C_1^2)^T(C_2^3)^T=C_1^0C_2^1C_3^2
C30=(C03)T=(C23C12C01)T=(C01)T(C12)T(C23)T=C10C21C32
= [ c o s α − s i n α 0 s i n α c o s α 0 0 0 1 ] [ 1 0 0 0 c o s β − s i n β 0 s i n β c o s β ] [ c o s γ 0 s i n γ 0 1 0 − s i n γ 0 c o s γ ] =\left[\begin{matrix}cos\alpha & -sin\alpha & 0 \\sin\alpha & cos\alpha & 0 \\0 & 0 & 1\end{matrix}\right] \left[\begin{matrix} 1 & 0 & 0\\ 0 & cos\beta & -sin\beta \\ 0 & sin\beta & cos\beta \end{matrix}\right] \left[\begin{matrix} cos\gamma & 0 & sin\gamma \\ 0 & 1 & 0\\ -sin\gamma & 0 & cos\gamma \end{matrix}\right] =⎣⎡cosαsinα0−sinαcosα0001⎦⎤⎣⎡1000cosβsinβ0−sinβcosβ⎦⎤⎣⎡cosγ0−sinγ010sinγ0cosγ⎦⎤
资源:
捷联惯导算法与组合导航原理讲义(20180206)-资源汇总页中下载