前面的章节介绍了INS的误差模型以及SINS的机械编排,从本节开始,介绍GNSS/INS松组合导航数学模型,并给出在该组合模式下的数据处理流程。
1 松组合导航算法模型
松组合模型是对GNSS和INS单独解算的位置和速度信息进行融合。在卡尔曼滤波器中,将GNSS量测与INS预测的位置和速度的差值作为测量更新的新息,对状态方程中的相关参数进行估计并反馈修正,实现对IMU的闭环补偿。松组合是两种系统在导航结果层面的组合,原理简单,实现上较容易。因此在当前车载组合导航的实际应用中,依旧应用十分广泛。
1.1 GNSS/INS松组合状态方程
一般而言,GNSS/INS松组合状态方程中,选取平台失准角
ϕ
\phi
ϕ、速度误差
δ
V
\delta V
δV、位置误差
δ
B
\delta B
δB、陀螺零漂
ε
\varepsilon
ε、加速度计零偏
∇
\nabla
∇作为状态变量:
X
=
[
ϕ
e
ϕ
n
ϕ
u
δ
V
e
δ
V
n
δ
V
u
δ
L
δ
B
δ
H
ε
x
ε
y
ε
z
∇
x
∇
y
∇
z
]
X=\begin{bmatrix} \phi_e & \phi_n & \phi_u & \delta V_e & \delta V_n & \delta V_u & \delta L & \delta B & \delta H & \varepsilon_x & \varepsilon_y & \varepsilon_z & \nabla_x & \nabla_y & \nabla_z \end{bmatrix}
X=[ϕeϕnϕuδVeδVnδVuδLδBδHεxεyεz∇x∇y∇z]
式中脚标饿e、n、u表示运载体的东北天方向;脚标x、y、z表示IMU组件轴系的x、y、z方向。
设系统状态方程为:
X
k
=
Φ
k
,
k
−
1
X
k
−
1
+
μ
k
−
1
X_k=\Phi_{k,k-1}X_{k-1}+\mu_{k-1}
Xk=Φk,k−1Xk−1+μk−1
式中,
Φ
k
,
k
−
1
\Phi_{k,k-1}
Φk,k−1表示k-1到k时刻的状态转移矩阵,
μ
k
−
1
\mu_{k-1}
μk−1表示零均值状态噪声,可表示为噪声分配矩阵B和系统噪声W的乘积。其中,
Φ
k
,
k
−
1
\Phi_{k,k-1}
Φk,k−1为:
Φ
k
,
k
−
1
=
[
F
F
′
′
E
T
F
′
F
′
′
′
E
′
T
′
0
′
F
E
′
′
0
0
0
0
E
′
′
′
]
\Phi_{k,k-1}=\begin{bmatrix}F & F'' & E & T \\ F' & F''' & E' & T' \\ 0 & 'F & E'' & 0\\ 0 & 0 & 0 & E''' \end{bmatrix}
Φk,k−1=⎣⎢⎢⎡FF′00F′′F′′′′F0EE′E′′0TT′0E′′′⎦⎥⎥⎤
B为
B
=
[
C
b
n
0
0
C
b
n
0
0
]
B=\begin{bmatrix} C^n_b & 0 \\ 0 & C^n_b \\ 0 & 0\end{bmatrix}
B=⎣⎡Cbn000Cbn0⎦⎤
这里基于前面章节介绍的INS更新方程和误差方程不加推导的给出
Φ
k
,
k
−
1
\Phi_{k,k-1}
Φk,k−1中各部分:
F
=
[
0
ω
i
e
s
i
n
L
+
V
e
t
a
n
L
R
N
+
H
−
(
ω
i
e
c
o
s
L
+
V
e
R
N
+
H
)
−
(
ω
i
e
s
i
n
L
+
V
e
t
a
n
L
R
N
+
H
)
0
−
V
n
R
M
+
H
ω
i
e
c
o
s
L
+
V
e
R
N
+
H
V
n
R
M
+
H
0
]
F=\begin{bmatrix}0 & \omega_{ie}sinL+\frac{V_etanL}{R_N+H} & -(\omega_{ie}cosL+\frac{V_e}{R_N+H}) \\ -(\omega_{ie}sinL+\frac{V_etanL}{R_N+H}) & 0 & -\frac{V_n}{R_M+H} \\ \omega_{ie}cosL+\frac{V_e}{R_N+H} & \frac{V_n}{R_M+H} & 0\end{bmatrix}
F=⎣⎢⎡0−(ωiesinL+RN+HVetanL)ωiecosL+RN+HVeωiesinL+RN+HVetanL0RM+HVn−(ωiecosL+RN+HVe)−RM+HVn0⎦⎥⎤
F ′ = [ 0 − f u f n f u 0 − f e − f n f e 0 ] F'=\begin{bmatrix} 0 & -f_u & f_n \\ f_u & 0 & -f_e \\ -f_n & f_e & 0\end{bmatrix} F′=⎣⎡0fu−fn−fu0fefn−fe0⎦⎤
F ′ ′ = [ 0 1 R M + H 0 1 R N + H 0 0 t a n L R N + H 0 0 ] F''=\begin{bmatrix} 0 & \frac{1}{R_M+H} & 0 \\ \frac{1}{R_N+H} & 0 & 0\\ \frac{tanL}{R_N+H} & 0 & 0 \end{bmatrix} F′′=⎣⎡0RN+H1RN+HtanLRM+H100000⎦⎤
F ′ ′ ′ = [ V n t a n L R N + H − V u R M + H 2 ( ω i e s i n L + V e t a n L R N + H ) − ( 2 ω i e c o s L + V e R N + H ) − 2 ( ω i e s i n L + V e t a n L R N + H ) − V u R M + H − V n R M + H 2 ( ω i e c o s L + V e R N + H ) 2 V n R M + H 0 ] F'''=\begin{bmatrix} \frac{V_ntanL}{R_N+H}-\frac{V_u}{R_M+H} & 2(\omega_{ie}sinL+\frac{V_etanL}{R_N+H}) &-(2\omega_{ie}cosL+\frac{V_e}{R_N+H})\\ -2(\omega_{ie}sinL+\frac{V_etanL}{R_N+H}) & -\frac{V_u}{R_M+H} & -\frac{V_n}{R_M+H} \\ 2(\omega_{ie}cosL+\frac{V_e}{R_N+H}) & \frac{2V_n}{R_M+H} & 0\end{bmatrix} F′′′=⎣⎢⎡RN+HVntanL−RM+HVu−2(ωiesinL+RN+HVetanL)2(ωiecosL+RN+HVe)2(ωiesinL+RN+HVetanL)−RM+HVuRM+H2Vn−(2ωiecosL+RN+HVe)−RM+HVn0⎦⎥⎤
′ F = [ 0 1 R M + H 0 s e c L R N + H 0 0 0 0 1 ] 'F=\begin{bmatrix} 0 & \frac{1}{R_M+H} & 0 \\ \frac{secL}{R_N+H} & 0 & 0 \\ 0 & 0& 1\end{bmatrix} ′F=⎣⎡0RN+HsecL0RM+H100001⎦⎤
E = [ 0 0 0 − ω i e s i n L 0 0 ω i e c o s L + V e R N + H s e c 2 L 0 0 ] E=\begin{bmatrix} 0 & 0 & 0 \\ -\omega_{ie}sinL & 0 & 0 \\ \omega_{ie}cosL+\frac{V_e}{R_N+H}sec^2L & 0 & 0\end{bmatrix} E=⎣⎡0−ωiesinLωiecosL+RN+HVesec2L000000⎦⎤
E ′ = [ 2 ω i e V n c o s L + V e V n R N + H s e c 2 L + 2 ω i e V u s i n L 0 0 − ( 2 ω i e V e c o s L + V e 2 R N + H s e c 2 L ) 0 0 − 2 ω i e V e s i n L 0 0 ] E'=\begin{bmatrix}2\omega_{ie}V_ncosL+\frac{V_eV_n}{R_N+H}sec^2L+2\omega_{ie}V_usinL & 0 & 0 \\ -(2\omega_{ie}V_ecosL+\frac{V^2_e}{R_N+H}sec^2L) & 0 & 0 \\ -2\omega_{ie}V_esinL & 0 & 0 \end{bmatrix} E′=⎣⎢⎡2ωieVncosL+RN+HVeVnsec2L+2ωieVusinL−(2ωieVecosL+RN+HVe2sec2L)−2ωieVesinL000000⎦⎥⎤
E ′ ′ = [ 0 0 0 V e s e c L t a n L R N + H 0 0 0 0 0 ] E'' = \begin{bmatrix}0 & 0 & 0 \\ \frac{V_esecLtanL}{R_N+H} & 0 & 0 \\ 0 & 0& 0 \end{bmatrix} E′′=⎣⎡0RN+HVesecLtanL0000000⎦⎤
E ′ ′ ′ = [ − α 0 0 0 0 0 0 − α 0 0 0 0 0 0 − α 0 0 0 0 0 0 − β 0 0 0 0 0 0 − β 0 0 0 0 0 0 − β ] E'''=\begin{bmatrix} -\alpha & 0 & 0 & 0 & 0 & 0 \\ 0 & -\alpha & 0 & 0 & 0 & 0 \\ 0 & 0 & -\alpha & 0 & 0 & 0 \\ 0 & 0 & 0 & -\beta & 0 & 0 \\ 0 & 0 & 0 & 0 & -\beta & 0 \\ 0 & 0 & 0 & 0 & 0 & -\beta \end{bmatrix} E′′′=⎣⎢⎢⎢⎢⎢⎢⎡−α000000−α000000−α000000−β000000−β000000−β⎦⎥⎥⎥⎥⎥⎥⎤
T = [ C b n 0 ] , T ′ = [ 0 C b n ] T=\begin{bmatrix} C^n_b & 0\end{bmatrix}, T'=\begin{bmatrix} 0 & C^n_b\end{bmatrix} T=[Cbn0],T′=[0Cbn]
其中 α 、 β \alpha、\beta α、β为马尔可夫过程相关时间。
1.2 GNSS/INS松组合观测方程
在GNSS/INS的松紧组合的区别主要在观测方程。对于松组合来说,观测方程是指通过GNSS解算的位置速度信息,对INS输出的位置速度进行修正并反馈。设观测方程为:
Z
=
[
v
I
N
S
−
v
G
N
S
S
p
I
N
S
−
p
G
N
S
S
]
=
H
X
+
V
Z=\begin{bmatrix} v_{INS} - v_{GNSS} \\ p_{INS}-p_{GNSS} \end{bmatrix} = HX+V
Z=[vINS−vGNSSpINS−pGNSS]=HX+V
式中,v表示两系统的速度输出,p表示两系统的位置输出。
需要特别注意的是,GNSS输出的位置和速度,其中心是GNSS天线的相位中心,而INS输出的位置速度,其中心是IMU模组的中心,这两个中心一般是不重合的,因此需要对GNSS和INS的输出进行融合处理,实现参考基准的统一,这就称为杆臂矫正。
将IMU与GNSS天线之间的速度误差定义为杆臂误差,则有:
δ
v
L
=
v
I
N
S
−
v
G
N
S
S
=
−
C
b
n
(
ω
e
b
b
×
l
)
=
−
C
b
n
(
ω
e
b
b
×
)
l
\delta v_L=v_{INS}-v_{GNSS} = -C^n_b(\omega^b_{eb}\times l)= -C^n_b(\omega^b_{eb}\times)l
δvL=vINS−vGNSS=−Cbn(ωebb×l)=−Cbn(ωebb×)l
同理,杆臂位置误差为:
δ
p
L
=
p
I
N
S
−
p
G
N
S
S
=
−
′
F
C
b
n
l
\delta p_L=p_{INS}-p_{GNSS}=-'FC^n_bl
δpL=pINS−pGNSS=−′FCbnl
'F的形式上面已经介绍过。为了减少状态方程的维数,提高系统的可靠性,最好对杆臂误差进行精确测量,作为已知量在观测方程中直接使用。
设计矩阵H可表示为:
H
=
[
0
I
0
0
0
0
I
0
]
H=\begin{bmatrix} 0 & I & 0 & 0 \\ 0 & 0 & I & 0\end{bmatrix}
H=[00I00I00]
V
=
[
V
v
V
p
]
V=\begin{bmatrix} V_v \\ V_p \end{bmatrix}
V=[VvVp]
1.1.3 GNSS/INS松组合解算
在GNSS/INS松组合中,GNSS解算的位置和速度作为量测信息传递到Kalman滤波器中,INS通过力学编排、GNSS通过定位解,分别获得载体的位置和速度信息。此外,由于INS的采样率一般远高于GNSS,在INS输出导航结果后,需要判断是否有GNSS观测信息输入,并利用Kalman滤波器完成结算。