1 IMU测量的是什么角速度?
IMU测量的是本体系在惯性系下的角速度在本体系下的分量,其测量的是绝对角速度 ω \omega ω。测量原理[[陀螺仪测量角速度原理|详见]]。
2 陀螺仪角速度的积分是否等于姿态角(欧拉角)?
首先回答不等于。
先给出否定的例子:
我们仅用陀螺仪测量的角速度积分作为姿态角度,第一张图,本体系处于水平,此时三轴姿态角为0°,
第一次旋转,绕俯仰轴旋转45度,此时姿态角为:俯仰角45° 滚转角0° 偏航角0°;
第二次旋转,绕偏航轴旋转90度,此时姿态角为:俯仰角0° 滚转角45° 偏航角90°;
显然,上述过程,如果用陀螺仪测得的角速度作为积分计算姿态,则得到,俯仰角45° 滚转角0° 偏航角90°;而实际上,旋转过后,俯仰角0° 滚转角45° 偏航角90°,与实际情况不符。
俯仰角 | 滚转角 | 偏航角 | |
---|---|---|---|
陀螺仪测得 | 45 | 0 | 90 |
实际上 | 0 | 45 | 90 |
原因在于,角速度积分不等于姿态角,而欧拉角速度积分才等于姿态角,角速度、欧拉角、欧拉角速度三者之间存在一定的关系,即欧拉运动学方程
下面给出欧拉角运动学方程的推导过程。
欧拉角的定义
我们把坐标系旋转中的“3-2-1”旋转(Z-Y-X旋转)中的三个角度定义为偏航角 ϕ \phi ϕ、俯仰角 θ \theta θ和滚转角 ψ \psi ψ。
对应的旋转矩阵分别为:
R 3 ( ϕ ) = [ cos ϕ sin ϕ 0 − sin ϕ cos ϕ 0 0 0 1 ] , R 2 ( θ ) = [ cos θ 0 − sin θ 0 1 0 s i n θ 0 cos θ ] , R 1 ( ψ ) = [ 1 0 0 0 c o s ψ sin ψ 0 − sin ψ cos ψ ] R_{3}(\phi)=\begin{bmatrix} \cos\phi&\sin\phi&0\\ -\sin\phi&\cos\phi&0\\ 0&0&1 \end{bmatrix}, R_{2}(\theta)=\begin{bmatrix} \cos\theta&0&-\sin\theta\\ 0&1&0\\ sin\theta&0&\cos\theta \end{bmatrix}, R_{1}(\psi)=\begin{bmatrix} 1&0&0\\ 0&cos\psi&\sin\psi\\ 0&-\sin\psi&\cos\psi\\ \end{bmatrix} R3(ϕ)= cosϕ−sinϕ0sinϕcosϕ0001 ,R2(θ)= cosθ0sinθ010−sinθ0cosθ ,R1(ψ)= 1000cosψ−sinψ0sinψcosψ
旋转方向为从惯性系到本体系的旋转即:
[ x y z ] = R 1 ( ψ ) R 2 ( θ ) R 3 ( ϕ ) [ X Y Z ] \begin{bmatrix} x\\ y\\ z \end{bmatrix}= R_1(\psi)R_2(\theta)R_3(\phi) \begin{bmatrix} X\\Y\\Z \end{bmatrix} xyz =R1(ψ)R2(θ)R3(ϕ) XYZ
我们最后要得出的是
[
ω
x
,
ω
y
,
ω
z
]
′
[\omega_x,\omega_y,\omega_z]'
[ωx,ωy,ωz]′与
[
ϕ
˙
,
θ
˙
,
ψ
˙
]
′
[\dot{\phi},\dot{\theta},\dot{\psi}]'
[ϕ˙,θ˙,ψ˙]′,之间的关系,由于
ω
\omega
ω通常是陀螺仪测得的,其在本体系下分解,因此将其全部转换至本体系,
[
ω
x
ω
y
ω
z
]
=
A
i
⃗
+
B
j
⃗
+
C
k
⃗
\begin{bmatrix} \omega_x\\\omega_y\\\omega_z \end{bmatrix}= A\vec{i}+B\vec{j}+C\vec{k}
ωxωyωz
=Ai+Bj+Ck
因此,将每一步旋转过程中出现的欧拉角速度向量,都要转化为最终在本体系下的分量。
假设,惯性系为 ( I ⃗ , J ⃗ , K ⃗ ) (\vec{I},\vec{J},\vec{K}) (I,J,K),第一次旋转产生的新坐标系为 ( I ⃗ ′ , J ⃗ ′ , K ⃗ ′ ) (\vec{I}',\vec{J}',\vec{K}') (I′,J′,K′),第二次旋转产生的新坐标系为 ( I ⃗ ′ ′ , J ⃗ ′ ′ , K ⃗ ′ ′ ) (\vec{I}'',\vec{J}'',\vec{K}'') (I′′,J′′,K′′),第三次旋转产生的新坐标系为 ( i ⃗ , j ⃗ , k ⃗ ) (\vec{i},\vec{j},\vec{k}) (i,j,k)。
从第三次旋转开始看,第三次旋转了
ψ
\psi
ψ角度,产生的角速度向量为
[
i
⃗
j
⃗
k
⃗
]
[
ψ
˙
0
0
]
\begin{bmatrix} \vec{i}& \vec{j}& \vec{k} \end{bmatrix} \begin{bmatrix} \dot{\psi}\\0\\0 \end{bmatrix}
[ijk]
ψ˙00
第二次旋转了
θ
\theta
θ角度,产生的角速度向量为
[
I
⃗
′
′
J
⃗
′
′
K
⃗
′
′
]
[
0
θ
˙
0
]
=
[
i
⃗
j
⃗
k
⃗
]
R
1
(
ψ
)
[
0
θ
˙
0
]
\begin{bmatrix} \vec{I}''&\vec{J}''&\vec{K}'' \end{bmatrix} \begin{bmatrix} 0\\ \dot{\theta}\\ 0\\ \end{bmatrix}= \begin{bmatrix} \vec{i}& \vec{j}& \vec{k} \end{bmatrix} R_1(\psi) \begin{bmatrix} 0\\ \dot{\theta}\\ 0\\ \end{bmatrix}
[I′′J′′K′′]
0θ˙0
=[ijk]R1(ψ)
0θ˙0
第一次旋转了
ϕ
\phi
ϕ角度,产生的角速度向量为
[
I
⃗
′
J
⃗
′
K
⃗
′
]
[
0
0
ϕ
˙
]
=
[
i
⃗
j
⃗
k
⃗
]
R
1
(
ψ
)
R
2
(
θ
)
[
0
0
ϕ
˙
]
\begin{bmatrix} \vec{I}'&\vec{J}'&\vec{K}' \end{bmatrix} \begin{bmatrix} 0\\0\\\dot{\phi} \end{bmatrix} =\begin{bmatrix} \vec{i}& \vec{j}& \vec{k} \end{bmatrix} R_1(\psi)R_2(\theta) \begin{bmatrix} 0\\0\\\dot{\phi} \end{bmatrix}
[I′J′K′]
00ϕ˙
=[ijk]R1(ψ)R2(θ)
00ϕ˙
把上述三个式子相加,可得到
[
ω
x
ω
y
ω
z
]
在
i
j
k
中表示
=
R
1
(
ψ
)
R
2
(
θ
)
[
0
0
ϕ
˙
]
+
R
1
(
ψ
)
[
0
θ
˙
0
]
+
[
ψ
˙
0
0
]
\begin{bmatrix} \omega_x\\\omega_y\\\omega_z \end{bmatrix}_{在ijk中表示}= R_1(\psi)R_2(\theta) \begin{bmatrix} 0\\0\\\dot{\phi} \end{bmatrix}+ R_1(\psi) \begin{bmatrix} 0\\ \dot{\theta}\\ 0\\ \end{bmatrix}+ \begin{bmatrix} \dot{\psi}\\ 0\\ 0\\ \end{bmatrix}
ωxωyωz
在ijk中表示=R1(ψ)R2(θ)
00ϕ˙
+R1(ψ)
0θ˙0
+
ψ˙00
展开后,可得:
[
ω
x
ω
y
ω
z
]
=
[
1
0
0
0
c
o
s
ψ
sin
ψ
0
−
sin
ψ
cos
ψ
]
[
cos
θ
0
−
sin
θ
0
1
0
s
i
n
θ
0
cos
θ
]
[
0
0
ϕ
˙
]
+
[
1
0
0
0
c
o
s
ψ
sin
ψ
0
−
sin
ψ
cos
ψ
]
[
0
θ
˙
0
]
+
[
1
0
0
0
1
0
0
0
1
]
[
ψ
˙
0
0
]
\begin{bmatrix} \omega_x\\\omega_y\\\omega_z \end{bmatrix}= \begin{bmatrix} 1&0&0\\ 0&cos\psi&\sin\psi\\ 0&-\sin\psi&\cos\psi\\ \end{bmatrix} \begin{bmatrix} \cos\theta&0&-\sin\theta\\ 0&1&0\\ sin\theta&0&\cos\theta \end{bmatrix} \begin{bmatrix} 0\\ 0\\ \dot{\phi}\\ \end{bmatrix}+ \begin{bmatrix} 1&0&0\\ 0&cos\psi&\sin\psi\\ 0&-\sin\psi&\cos\psi\\ \end{bmatrix} \begin{bmatrix} 0\\ \dot{\theta}\\ 0\\ \end{bmatrix}+ \begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&0&1 \end{bmatrix} \begin{bmatrix} \dot{\psi}\\ 0\\ 0\\ \end{bmatrix}
ωxωyωz
=
1000cosψ−sinψ0sinψcosψ
cosθ0sinθ010−sinθ0cosθ
00ϕ˙
+
1000cosψ−sinψ0sinψcosψ
0θ˙0
+
100010001
ψ˙00
最终得到
[
ω
x
ω
y
ω
z
]
=
[
1
0
−
sin
θ
0
c
o
s
ψ
cos
θ
sin
ψ
0
−
sin
ψ
cos
θ
cos
ψ
]
[
ψ
˙
θ
˙
ϕ
˙
]
\begin{bmatrix} \omega_x\\\omega_y\\\omega_z \end{bmatrix}= \begin{bmatrix} 1&0&-\sin\theta\\ 0&cos\psi&\cos\theta\sin\psi\\ 0&-\sin\psi&\cos\theta\cos\psi\\ \end{bmatrix} \begin{bmatrix} \dot{\psi}\\\dot{\theta}\\\dot{\phi} \end{bmatrix}
ωxωyωz
=
1000cosψ−sinψ−sinθcosθsinψcosθcosψ
ψ˙θ˙ϕ˙
姿态角,可以从上式解出,值得注意的是,小角度下,上式可以进一步简化为:
[
ω
x
ω
y
ω
z
]
=
[
1
0
0
0
1
0
0
0
1
]
[
ψ
˙
θ
˙
ϕ
˙
]
\begin{bmatrix} \omega_x\\\omega_y\\\omega_z \end{bmatrix}= \begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&0&1\\ \end{bmatrix} \begin{bmatrix} \dot{\psi}\\\dot{\theta}\\\dot{\phi} \end{bmatrix}
ωxωyωz
=
100010001
ψ˙θ˙ϕ˙
此时角速度积分近似等于欧拉角速度积分等于欧拉角。
上式解方程过于困难,因此后续引入了四元数运动学方程来进行姿态解算。
3 关于欧拉角万向锁的解释
无伤理解欧拉角中的“万向死锁”现象_哔哩哔哩_bilibili
把一个问题想清楚并讲清楚不容易,感谢各位看官点赞!