主函数
function P = PredictCovariance(deltaAngle, ...
deltaVelocity, ...
states,...
P, ... % Previous state covariance matrix
dt, ... % IMU and prediction time step
param) % tuning parameters
其中变化的角度值与速度值都是经过预测函数改正的
确定过程噪声Q
IMU 系统偏差的过程噪声
σ
Δ
A
n
g
_
B
i
a
s
=
P
a
r
a
(
σ
_
A
n
g
)
∗
d
t
2
\sigma_{\Delta Ang\_Bias}=Para(\sigma\_Ang)*{dt}^2
σΔAng_Bias=Para(σ_Ang)∗dt2
σ
Δ
V
e
l
_
B
i
a
s
=
P
a
r
a
(
σ
_
V
e
l
)
∗
d
t
2
\sigma_{\Delta Vel\_Bias}=Para(\sigma\_Vel)*{dt}^2
σΔVel_Bias=Para(σ_Vel)∗dt2
σ
m
a
g
N
E
D
=
P
a
r
a
(
m
a
g
N
E
D
)
∗
d
t
\sigma_{magNED}=Para(magNED)*{dt}
σmagNED=Para(magNED)∗dt
σ
m
a
g
X
Y
Z
=
P
a
r
a
(
m
a
g
X
Y
Z
)
∗
d
t
\sigma_{magXYZ}=Para(magXYZ)*{dt}
σmagXYZ=Para(magXYZ)∗dt
Q
b
i
a
s
=
z
e
r
o
s
(
1
,
10
)
,
σ
Δ
A
n
g
_
B
i
a
s
,
σ
Δ
V
e
l
_
B
i
a
s
,
σ
m
a
g
N
E
D
,
σ
m
a
g
X
Y
Z
,
[
0
,
0
]
Q_{bias}={zeros(1,10),\sigma_{\Delta Ang\_Bias},\sigma_{\Delta Vel\_Bias},\sigma_{magNED},\sigma_{magXYZ},[0,0]}
Qbias=zeros(1,10),σΔAng_Bias,σΔVel_Bias,σmagNED,σmagXYZ,[0,0]
确定其他过程噪声
IMU 过程噪声 Δ a n g \Delta_{ang} Δang Δ v e l \Delta_{vel} Δvel
V
a
r
Δ
a
n
g
=
(
P
a
r
a
(
σ
a
n
g
R
a
t
e
)
∗
d
t
)
2
Var_{\Delta_{ang}}=(Para(\sigma_{angRate})*dt)^2
VarΔang=(Para(σangRate)∗dt)2
V
a
r
Δ
v
e
l
=
(
P
a
r
a
(
σ
a
c
c
e
l
)
∗
d
t
)
2
Var_{\Delta_{vel}}=(Para(\sigma_{accel})*dt)^2
VarΔvel=(Para(σaccel)∗dt)2
计算F状态转移矩阵
通过函数calcF24.m计算,需要传入:变化的速度值、变化的角度值、四元素、速度变化值的系统偏差值与角度变化值的系统偏差值
计算Q(除了IMU系统偏差过程噪声)
通过函数calcQ24.m计算,需要传入:变化的角度值协方差、变化的速度值协方差、四元素
计算 P k P_{k} Pk
P
k
−
=
F
∗
P
k
−
1
∗
F
T
+
Q
P_{k}^-=F*P_{k-1}*F^T+Q
Pk−=F∗Pk−1∗FT+Q
再加上IMU系统偏差噪声
P
K
−
=
P
k
−
+
Q
b
i
a
s
P_{K}^-=P_{k}^-+Q_{bias}
PK−=Pk−+Qbias
强制P阵为对称阵以及协方差>0
小结
- 函数分开两部分求,系统偏差与其他状态量,系统偏差状态的状态转移矩阵为单位阵,而其他状态量不是,也许这个是分开求的原因?
- 函数的步骤为:1)通过参数设置中得到系统偏差的噪声值;2)通过参数设置得到速度变化值与角度变化值的协方差,进计算F,Q,通过上一历元的P得到P(K)
疑问
- IMU过程噪声magXYZ是否是指mag偏差的噪声
- IMU系统偏差中的各项误差为什么没有平方,标准差没有变成协方差啊