惯性导航公式浅推
引言
之前推过惯导的更新方程,但是久而久之又会忘掉一些。今天刚看了一篇论文,又重新推了一下。这里将自己理解的推导过程做个记录,便于以后翻看,同时通过记录的方式,加深自己的印象。
惯性导航状态方程
惯性导航所用的传感器就是我们通常所说的IMU(Inetial Measurement Unit),一般包括三轴加速度计和三轴陀螺仪。陀螺仪输出的是载体实时的旋转角速度,加速度计输出的是载体实时的加速度和重力加速度的组合加速度。通过这两个量,我们可以实时计算载体的位移,速度和姿态。其中位移和速度通过加速度对时间积分得到,姿态通过角速度对时间积分得到:
角速度积分得到姿态(姿态矩阵更新方程):
首先给出姿态矩阵对时间的微分方程:
R
˙
b
n
=
R
b
n
Ω
n
b
b
(1-1)
\dot R_b^n = R_b^n\Omega_{nb}^b \tag{1-1}
R˙bn=RbnΩnbb(1-1)
其中
R
b
n
R_b^n
Rbn表示b系到n系的旋转(姿态)矩阵。
Ω
n
b
b
\Omega_{nb}^b
Ωnbb表示b系相对于n系的旋转角速度在b系下的表示
ω
n
b
b
=
[
ω
x
,
ω
y
,
ω
z
]
T
\omega_{nb}^b=[\omega_x,\omega_y,\omega_z]^T
ωnbb=[ωx,ωy,ωz]T的斜对称矩阵:
Ω
n
b
b
=
[
0
−
ω
z
ω
y
ω
z
0
−
ω
x
−
ω
y
ω
x
0
]
\Omega_{nb}^b=\begin {bmatrix} 0 &-\omega_z &\omega_y \\ \omega_z &0 &-\omega_x \\ -\omega_y &\omega_x &0 \end {bmatrix}
Ωnbb=⎣⎡0ωz−ωy−ωz0ωxωy−ωx0⎦⎤
常用坐标系及其相互关系:
ω
n
b
b
\omega_{nb}^b
ωnbb一般还不是陀螺仪的输出值
ω
i
b
b
\omega_{ib}^b
ωibb,陀螺仪输出值是载体坐标系
b
b
b系相对于惯性坐标系
i
i
i系的旋转角速度,而我们通常用于计算的参考坐标系
n
n
n系不是惯性坐标系
i
i
i。在地球上常用的惯性系为地心坐标系:
z
z
z轴为地球自转轴,
x
x
x轴和
y
y
y轴在赤道平面互相垂直,坐标系保持静止。
n
n
n系有时表示地心地固(ECEF)坐标系,即通常所说的
e
e
e系,
z
z
z轴为地球自转轴,
x
x
x轴和
y
y
y轴在赤道平面互相垂直,坐标系随地球自转而转动。即ECEF系相对于
i
i
i系,有一个固定的旋转角速度,即地球自转角速度。
n
n
n系有时表示当地(Local)坐标系
l
l
l系。
l
l
l系通常有东北天(E(x)-N(y)-U(z))系和北东地(N(x)-E(y)-D(z))系之分。
l
l
l系将当前所在位置的水平面作为自己x,y轴所在平面,z轴垂直于水平面,一般是指向重力方向(Down)或反方向(Up)。
l
l
l系相对于
e
e
e系也会有旋转速度,这个旋转速度根据
l
l
l系在地球上的位置变化速度而定,但除了高速运动的载体(飞机,导弹)外,低速运动载体(如车载)的
l
l
l系因其速度而产生的相对于
e
e
e系旋转速度极小,一般忽略不计(陀螺仪精度不足以感知这个小量)。(以上都是坐标系都是右手坐标系)
如果选取
l
l
l系为参考坐标系
n
n
n系的话,则有:
ω
n
b
b
=
ω
i
b
b
−
ω
i
e
b
−
ω
e
l
b
(1-2)
\omega_{nb}^b = \omega_{ib}^b-\omega_{ie}^b-\omega_{el}^b \tag{1-2}
ωnbb=ωibb−ωieb−ωelb(1-2)
其中
ω
i
e
b
\omega_{ie}^b
ωieb为陀螺仪的原始输出值。注意在低速运动载体中最后一项
ω
e
l
b
\omega_{el}^b
ωelb可以忽略;而在低精度陀螺仪中后两项
ω
i
e
b
\omega_{ie}^b
ωieb和
ω
e
l
b
\omega_{el}^b
ωelb都可以忽略,因其精度不足以感知这两个小量。
下面解微分方程(1-1):
公式(1-1)相当于如下形式的微分方程:
y
˙
=
y
x
\dot y = yx
y˙=yx。解这个微分方程:
d
y
d
t
=
y
x
d
y
y
=
x
d
t
ln
(
y
)
∣
k
k
+
1
=
∫
x
d
t
ln
(
y
k
+
1
)
−
ln
(
y
k
)
=
∫
x
d
t
ln
(
y
k
+
1
y
k
)
=
∫
x
d
t
y
k
+
1
y
k
=
e
∫
x
d
t
y
k
+
1
=
y
k
e
∫
x
d
t
\frac{dy}{dt} = yx \\ \frac{dy}{y} = xdt \\ \ln(y)|_k^{k+1} = \int xdt \\ \ln(y_{k+1})-\ln(y_k) = \int xdt \\ \ln(\frac{y_{k+1}}{y_k}) = \int xdt \\ \frac{y_{k+1}}{y_k} = e^{\int xdt}\\ y_{k+1} = y_ke^{\int xdt}
dtdy=yxydy=xdtln(y)∣kk+1=∫xdtln(yk+1)−ln(yk)=∫xdtln(ykyk+1)=∫xdtykyk+1=e∫xdtyk+1=yke∫xdt
因此,姿态矩阵的更新方程为:
R
b
,
k
+
1
n
=
R
b
,
k
n
∗
e
∫
Ω
n
b
,
k
b
d
t
(1-3)
R_{b,k+1}^n = R_{b,k}^n*e^{\int \Omega_{nb,k}^bdt} \tag{1-3}
Rb,k+1n=Rb,kn∗e∫Ωnb,kbdt(1-3)
上式对
e
e
e指数展开,写成离散递归的形式:
R
b
,
k
+
1
n
=
R
b
,
k
n
∗
∑
n
=
0
n
=
∞
(
Ω
n
b
,
k
b
Δ
t
)
n
n
!
(1-4)
R_{b,k+1}^n = R_{b,k}^n*\sum_{n=0}^{n=\infty}\frac{(\Omega_{nb,k}^b\Delta t)^n}{n!} \tag{1-4}
Rb,k+1n=Rb,kn∗n=0∑n=∞n!(Ωnb,kbΔt)n(1-4)
令
S
=
Ω
n
b
,
k
b
Δ
t
S = \Omega_{nb,k}^b\Delta t
S=Ωnb,kbΔt,则:
R
b
,
k
+
1
n
=
R
b
,
k
n
∗
∑
n
=
0
n
=
∞
(
S
)
n
n
!
(1-5)
R_{b,k+1}^n = R_{b,k}^n*\sum_{n=0}^{n=\infty}\frac{(S)^n}{n!}\tag{1-5}
Rb,k+1n=Rb,kn∗n=0∑n=∞n!(S)n(1-5)
令
θ
⃗
=
ω
n
b
,
k
b
∗
Δ
t
=
[
θ
x
,
θ
y
,
θ
z
]
T
\vec {\theta} = \omega_{nb,k}^b*\Delta t=[\theta_x,\theta_y,\theta_z]^T
θ=ωnb,kb∗Δt=[θx,θy,θz]T,则:
S
=
[
0
−
θ
z
θ
y
θ
z
0
−
θ
x
−
θ
y
θ
x
0
]
(1-6)
S = \begin{bmatrix} 0 &-\theta_z &\theta_y \\ \theta_z &0 &-\theta_x \\ -\theta_y &\theta_x &0 \end{bmatrix} \tag{1-6}
S=⎣⎡0θz−θy−θz0θxθy−θx0⎦⎤(1-6)
对于
S
S
S有如下性质:
S
3
=
−
∣
θ
⃗
∣
2
S
;
S
4
=
−
∣
θ
⃗
∣
2
S
2
;
S
5
=
∣
θ
⃗
∣
4
S
;
S
6
=
∣
θ
⃗
∣
2
S
2
S^3 = -|\vec{\theta}|^2S;S^4 = -|\vec{\theta}|^2S^2;S^5 = |\vec{\theta}|^4S;S^6 = |\vec{\theta}|^2S^2
S3=−∣θ∣2S;S4=−∣θ∣2S2;S5=∣θ∣4S;S6=∣θ∣2S2
其中:
∣
θ
⃗
∣
2
=
θ
x
2
+
θ
y
2
+
θ
z
2
|\vec{\theta}|^2 = \theta_x^2+\theta_y^2+\theta_z^2
∣θ∣2=θx2+θy2+θz2。
把式(1-5)展开:
R
b
,
k
+
1
n
=
R
b
,
k
n
∗
[
I
+
S
1
!
+
S
2
2
!
+
S
3
3
!
+
S
4
4
!
+
S
5
5
!
+
.
.
.
]
(1-7)
R_{b,k+1}^n = R_{b,k}^n*[I+\frac{S}{1!}+\frac{S^2}{2!}+\frac{S^3}{3!}+\frac{S^4}{4!}+\frac{S^5}{5!}+...]\tag{1-7}
Rb,k+1n=Rb,kn∗[I+1!S+2!S2+3!S3+4!S4+5!S5+...](1-7)
根据
S
S
S的性质,可以将(1-7)式改写为:
R
b
,
k
+
1
n
=
R
b
,
k
n
∗
[
I
+
S
+
S
2
2
!
−
∣
θ
⃗
∣
2
3
!
S
−
∣
θ
⃗
∣
2
4
!
S
2
+
∣
θ
⃗
∣
4
5
!
S
+
∣
θ
⃗
∣
4
6
!
S
2
−
.
.
.
]
(1-8)
R_{b,k+1}^n = R_{b,k}^n*[I+S+\frac{S^2}{2!}-\frac{|\vec\theta|^2}{3!}S-\frac{|\vec\theta|^2}{4!}S^2+\frac{|\vec\theta|^4}{5!}S+\frac{|\vec\theta|^4}{6!}S^2-...]\tag{1-8}
Rb,k+1n=Rb,kn∗[I+S+2!S2−3!∣θ∣2S−4!∣θ∣2S2+5!∣θ∣4S+6!∣θ∣4S2−...](1-8)
合并同类项:
R
b
,
k
+
1
n
=
R
b
,
k
n
∗
[
I
+
(
1
2
!
−
1
4
!
∣
θ
⃗
∣
2
+
1
6
!
∣
θ
⃗
∣
4
−
.
.
.
)
S
2
+
(
I
−
1
3
!
∣
θ
⃗
∣
2
+
1
5
!
∣
θ
⃗
∣
4
−
.
.
.
)
S
]
(1-9)
R_{b,k+1}^n = R_{b,k}^n*[I+(\frac{1}{2!}-\frac{1}{4!}|\vec\theta|^2+\frac{1}{6!}|\vec\theta|^4-...)S^2+(I-\frac{1}{3!}|\vec\theta|^2+\frac{1}{5!}|\vec\theta|^4-...)S]\tag{1-9}
Rb,k+1n=Rb,kn∗[I+(2!1−4!1∣θ∣2+6!1∣θ∣4−...)S2+(I−3!1∣θ∣2+5!1∣θ∣4−...)S](1-9)
我们知道,对于正弦和余弦函数有如下性质:
sin
θ
=
θ
−
θ
3
3
!
+
θ
5
5
!
−
θ
7
7
!
+
.
.
.
\sin \theta = \theta-\frac{\theta^3}{3!}+\frac{\theta^5}{5!}-\frac{\theta^7}{7!}+...
sinθ=θ−3!θ3+5!θ5−7!θ7+...
sin
θ
θ
=
I
−
θ
2
3
!
+
θ
4
5
!
−
θ
6
7
!
+
.
.
.
\frac{\sin\theta}{\theta} = I-\frac{\theta^2}{3!}+\frac{\theta^4}{5!}-\frac{\theta^6}{7!}+...
θsinθ=I−3!θ2+5!θ4−7!θ6+...
cos
θ
=
I
−
θ
2
2
!
+
θ
4
4
!
−
θ
6
6
!
+
.
.
.
\cos\theta = I-\frac{\theta^2}{2!}+\frac{\theta^4}{4!}-\frac{\theta^6}{6!}+...
cosθ=I−2!θ2+4!θ4−6!θ6+...
1
−
cos
θ
θ
2
=
1
2
!
−
θ
2
4
!
+
θ
4
6
!
−
.
.
.
\frac{1-\cos\theta}{\theta^2} = \frac{1}{2!}-\frac{\theta^2}{4!}+\frac{\theta^4}{6!}-...
θ21−cosθ=2!1−4!θ2+6!θ4−...
根据以上性质,式(9)可以改写为:
R
b
,
k
+
1
n
=
R
b
,
k
n
∗
(
I
+
sin
∣
θ
⃗
∣
∣
θ
⃗
∣
S
+
1
−
cos
∣
θ
⃗
∣
∣
θ
⃗
∣
2
S
2
)
(1-10)
R_{b,k+1}^n = R_{b,k}^n*(I+\frac{\sin|\vec\theta|}{|\vec\theta|}S+\frac{1-\cos|\vec\theta|}{|\vec\theta|^2}S^2)\tag{1-10}
Rb,k+1n=Rb,kn∗(I+∣θ∣sin∣θ∣S+∣θ∣21−cos∣θ∣S2)(1-10)
公式(1-10)为著名的Rodrigues公式。有了陀螺仪的测量数据和采样时间
Δ
t
\Delta t
Δt,利用上式就可以进行姿态的更新。值得注意的是,当角速度的测量值非常小的时候,公式(1-10)近似为:
R
b
,
k
+
1
n
=
R
b
,
k
n
∗
(
I
+
S
)
(1-10.1)
R_{b,k+1}^n = R_{b,k}^n*(I+S)\tag{1-10.1}
Rb,k+1n=Rb,kn∗(I+S)(1-10.1)
以上就是姿态矩阵的更新方程的推导。
未完待续。。。。