对于无人机的惯性导航系统,系统的状态方程是非线性的,根据扩展卡尔曼滤波方程:
Predict
x^k|k−1Pk|k−1=f(x^k−1|k−1,uk−1)=Fk−1Pk−1|k−1FTk−1+Qk−1(43)
Update y~kSkKkx^k|kPk|k=zk−h(x^k|k−1)=HkPk|k−1HTk+Rk=Pk|k−1HTkS−1k=x^k|k−1+Kky~k=(I−KkHk)Pk|k−1(44)
其中状态和观测矩阵为状态和观测函数的雅可比矩阵:
Fk−1Hk=∂f∂x|x^k−1|k−1,uk−1=∂h∂x|x^k|k−1(45)
雅可比矩阵具体的含义可以参看Wiki:
雅可比矩阵
首先需要确定f和h。这里介绍两种形式的状态函数,第一种是不包含哥式校正(即不考虑地球自转以及无人机绕地球的速度所产生的向心加速度),一种是包含哥式校正的。这篇文章先介绍不包含哥式校正的EKF,包含哥式校正的将在下一篇文章介绍。
首先介绍各参数定义:
L:纬度,单位:deg∗107
l:经度,单位:deg∗107
h:高度,单位:m
vN:朝北速度,单位:m/s
vE:朝东速度,单位:m/s
vD:朝地速度,单位:m/s
R0:地球平均半径
Tx:x转换算子,用于将南北向位移量转化为纬度变化量,Tx=180∗107πR0(假设在近地面飞行,忽略高度对半径的影响。如要考虑,则分母变为π(R0+h))
Ty:y转换算子,用于将朝东西向位移量转化为经度变化量,Ty=180∗107πR0sin(90−L∗10−7)=180∗107∗sec(L∗10−7)πR0(同样假设在近地面飞行)
T:时间间隔,单位:s
aN:朝北加速度,单位:m/t2
aE:朝东加速度,单位:m/t2
aD:朝地加速度,已做gravity corectify,即有加上重力常量g,单位:m/t2
f(x^,u)=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢L+vNTxTl+vETyTh−vDTvN+aNTvE+aETvD+aDT⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥
其中,
x^=[LlhvNvEvD],
u=[aNaEaD].
由于状态的观测量可以由传感器直接获取到,所以
h的定义如下:
h(x^)=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢LlhvNvEvD⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥
根据雅可比矩阵定义,计算得状态和观测矩阵如下:
Fk−1=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1180TvEsin(L∗10−7)πR0cos(L∗10−7)20000010000001000TxT001000180∗107TπR0cos(L∗10−7)001000−T001⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
Hk=I6×6
Matlab仿真效果

