扩展卡尔曼滤波EKF在目标跟踪中的应用—仿真部分
原创不易,路过的各位大佬请点个赞
扩展卡尔曼滤波—及其在目标跟踪中的应用
算法部分见博客:
** 扩展卡尔曼滤波EKF在目标跟踪中的应用—算法部分**
https://blog.csdn.net/weixin_44044161/article/details/115313573
作者:823618313@qq.com; WX: ZB823618313
备注:
扩展卡尔曼滤波算法;
目标跟踪matlab仿真实现;
Case: 二维目标跟踪情况和三维目标跟踪情况
代码下载地址如下(分别为二维情形和三维情形)
https://download.csdn.net/download/weixin_44044161/85401461
https://download.csdn.net/download/weixin_44044161/85401885
https://download.csdn.net/download/weixin_44044161/85123812
https://download.csdn.net/download/weixin_44044161/85123744
一、带加性噪声的扩展卡尔曼滤波算法
1.1 问题描述(离散时间非线性系统描述)
考虑带加性噪声的一般非线性系统模型,
x
k
=
f
(
x
k
−
1
)
+
w
k
−
1
z
k
=
h
(
x
k
)
+
v
k
(1)
x_k=f(x_{k-1}) +w_{k-1} \\ z_k=h(x_k)+v_k \tag{1}
xk=f(xk−1)+wk−1zk=h(xk)+vk(1)
其中
x
k
x_k
xk为
k
k
k时刻的目标状态向量。
z
k
z_k
zk为
k
k
k时刻量测向量(传感器数据)。这里不考虑控制器
u
k
u_k
uk。
w
k
{w_k}
wk和
v
k
{v_k}
vk分别是过程噪声序列和量测噪声序列,并假设
w
k
w_k
wk和
v
k
v_k
vk为零均值高斯白噪声,其方差分别为
Q
k
Q_k
Qk和
R
k
R_k
Rk的高斯白噪声,即
w
k
∼
(
0
,
Q
k
)
w_k\sim(0,Q_k)
wk∼(0,Qk),
v
k
∼
(
0
,
R
k
)
v_k\sim(0,R_k)
vk∼(0,Rk),且满足如下关系(线性高斯假设)为:
E
[
w
i
v
j
′
]
=
0
E
[
w
i
w
j
′
]
=
0
i
≠
j
E
[
v
i
v
j
′
]
=
0
i
≠
j
\begin{aligned} E[w_iv_j'] &=0\\ E[w_iw_j'] &=0\quad i\neq j \\ E[v_iv_j'] &=0\quad i\neq j \end{aligned}
E[wivj′]E[wiwj′]E[vivj′]=0=0i=j=0i=j
1.2 扩展卡尔曼滤波器(EKF)
1. 初始化
给定
k
−
1
k-1
k−1时刻的状态估计和协方差矩阵
x
^
k
−
1
∣
k
−
1
,
P
k
−
1
∣
k
−
1
,
Q
k
−
1
,
R
k
−
1
\hat{x}_{k-1|k-1},P_{k-1|k-1},Q_{k-1},R_{k-1}
x^k−1∣k−1,Pk−1∣k−1,Qk−1,Rk−1
当为
0
0
0时刻时,滤波器最优初始化为
x
0
∼
(
x
ˉ
0
,
P
0
)
,
Q
0
,
R
0
x_0\sim(\bar{x}_0, P_0),Q_{0},R_{0}
x0∼(xˉ0,P0),Q0,R0
即
x
^
0
∣
0
=
x
ˉ
0
P
0
∣
0
=
P
0
\hat{x}_{0|0}=\bar{x}_0\\P_{0|0}=P_0
x^0∣0=xˉ0P0∣0=P0
2. 状态预测
2.1 计算非线性系统方程的雅可比矩阵
F
k
−
1
=
∂
f
(
x
k
−
1
)
∂
x
k
−
1
∣
x
k
−
1
=
x
^
k
−
1
∣
k
−
1
F_{k-1}=\frac{\partial f\left(x_{k-1}\right)}{\partial x_{k-1}}\Big|_{{x_{k-1}=\hat{x}_{k-1|k-1}}}
Fk−1=∂xk−1∂f(xk−1)∣
∣xk−1=x^k−1∣k−1
2.2 状态一步预测及预测误差协方差阵为
x
^
k
∣
k
−
1
=
E
[
x
k
∣
Z
k
−
1
]
≈
E
[
f
k
−
1
(
x
^
k
−
1
∣
k
−
1
,
0
)
+
F
k
−
1
x
~
k
−
1
∣
k
−
1
+
w
k
−
1
∣
Z
k
−
1
]
=
f
k
−
1
(
x
^
k
−
1
∣
k
−
1
)
P
k
∣
k
−
1
=
cov
(
x
~
k
∣
k
−
1
)
=
F
k
−
1
P
k
−
1
∣
k
−
1
F
k
−
1
′
+
Q
k
−
1
(2)
\textcolor{#FF0000}{ \begin{aligned} \hat{x}_{k|k-1}&=E\left[ x_k\mid Z^{k-1}\right ]\\&\approx E\left[f_{k-1}\left(\hat{x}_{k-1|k-1},0\right)+F_{k-1}\widetilde{x}_{k-1|k-1}+w_{k-1} \mid Z^{k-1}\right]\\&=f_{k-1}\left(\hat{x}_{k-1|k-1}\right)\\ P_{k\mid k-1}&=\text{cov}\left(\widetilde{x}_{k\mid k-1}\right)= F_{k-1}P_{k-1|k-1}F_{k-1}'+Q_{k-1} \end{aligned}} \tag{2}
x^k∣k−1Pk∣k−1=E[xk∣Zk−1]≈E[fk−1(x^k−1∣k−1,0)+Fk−1x
k−1∣k−1+wk−1∣Zk−1]=fk−1(x^k−1∣k−1)=cov(x
k∣k−1)=Fk−1Pk−1∣k−1Fk−1′+Qk−1(2)
其中系统状态方程在
x
^
k
−
1
∣
k
−
1
\hat{x}_{k-1|k-1}
x^k−1∣k−1的泰勒级数展开为(取一阶)
x
k
=
f
k
−
1
(
x
k
−
1
)
+
w
k
−
1
≈
f
k
−
1
(
x
^
k
−
1
∣
k
−
1
)
+
F
k
−
1
x
~
k
−
1
∣
k
−
1
+
w
k
−
1
\begin{aligned} x_k&=f_{k-1}\left(x_{k-1} \right) + w_{k-1}\\ &\approx f_{k-1}\left(\hat{x}_{k-1|k-1}\right)+F_{k-1}\widetilde{x}_{k-1|k-1}+w_{k-1} \end{aligned}
xk=fk−1(xk−1)+wk−1≈fk−1(x^k−1∣k−1)+Fk−1x
k−1∣k−1+wk−1
预测估计误差为
x
~
k
∣
k
−
1
=
x
k
−
x
^
k
∣
k
−
1
≈
F
k
−
1
x
~
k
−
1
∣
k
−
1
+
w
k
−
1
\tilde{x}_{k\mid k-1}=x_k-\hat{x}_{k|k-1}\approx F_{k-1}\widetilde{x}_{k-1|k-1}+ w_{k-1}
x~k∣k−1=xk−x^k∣k−1≈Fk−1x
k−1∣k−1+wk−1
3. 量测预测
3.1 计算量测系统方程的雅可比矩阵
H
k
=
∂
h
(
x
k
)
∂
x
k
∣
x
k
=
x
^
k
∣
k
−
1
H_{k}=\frac{\partial h\left(x_{k}\right)}{\partial x_{k}}\Big|_{{x_{k}=\hat{x}_{k|k-1}}}\
Hk=∂xk∂h(xk)∣
∣xk=x^k∣k−1
3.2 量测一步预测、新息协方差、互协方差为
z
^
k
∣
k
−
1
=
E
[
z
k
∣
Z
k
−
1
]
=
h
(
x
^
k
∣
k
−
1
)
S
k
=
cov
(
z
~
k
∣
k
−
1
)
=
H
k
P
k
∣
k
−
1
H
k
′
+
R
k
C
k
=
cov
(
x
~
k
∣
k
−
1
,
z
~
k
∣
k
−
1
)
=
P
k
∣
k
−
1
H
k
′
(3)
\textcolor{#FF0000}{ \begin{aligned} \hat{z}_{k|k-1}&=E\left[z_k\mid Z^{k-1}\right]= h\left(\hat{x}_{k|k-1}\right)\\ S_k&=\text{cov}\left(\widetilde{z}_{k\mid k-1}\right)= H_{k}P_{k|k-1}H_{k}'+ R_{k}\\ C_k&=\text{cov}\left(\widetilde{x}_{k\mid k-1},\widetilde{z}_{k\mid k-1}\right)= P_{k|k-1}H_{k}' \end{aligned}} \tag{3}
z^k∣k−1SkCk=E[zk∣Zk−1]=h(x^k∣k−1)=cov(z
k∣k−1)=HkPk∣k−1Hk′+Rk=cov(x
k∣k−1,z
k∣k−1)=Pk∣k−1Hk′(3)
其中量测方程在
x
^
k
∣
k
−
1
\hat{x}_{k|k-1}
x^k∣k−1的泰勒级数展开为(取一阶)
z
k
=
h
(
x
k
)
+
v
k
≈
h
k
(
x
^
k
∣
k
−
1
)
+
H
k
x
~
k
∣
k
−
1
+
v
k
−
1
\begin{aligned} z_k&=h\left(x_{k} \right) + v_{k}\\ &\approx h_{k}\left(\hat{x}_{k|k-1}\right)+H_{k}\widetilde{x}_{k|k-1}+v_{k-1} \end{aligned}
zk=h(xk)+vk≈hk(x^k∣k−1)+Hkx
k∣k−1+vk−1
量测预测误差为
z
~
k
∣
k
−
1
=
z
k
−
z
^
k
∣
k
−
1
≈
H
k
z
~
k
∣
k
−
1
+
v
k
\tilde{z}_{k\mid k-1}=z_k-\hat{z}_{k|k-1}\approx H_{k}\widetilde{z}_{k|k-1}+ v_{k}
z~k∣k−1=zk−z^k∣k−1≈Hkz
k∣k−1+vk
4. 状态更新
4.1 卡尔曼增益为
K
k
=
C
k
S
k
−
1
=
P
k
∣
k
−
1
H
k
′
(
H
k
P
k
∣
k
−
1
H
k
′
+
R
k
)
−
1
(4)
\textcolor{#FF0000}{ \begin{aligned} K_k&=C_kS_k^{-1}\\ &=P_{k|k-1}H_{k}'( H_{k}P_{k|k-1}H_{k}'+ R_{k})^{-1} \end{aligned}} \tag{4}
Kk=CkSk−1=Pk∣k−1Hk′(HkPk∣k−1Hk′+Rk)−1(4)
4.2 状态更新为
x
^
k
∣
k
=
E
[
x
k
∣
Z
k
]
=
x
^
k
∣
k
−
1
+
K
z
(
z
k
−
z
^
k
∣
k
−
1
)
P
k
∣
k
=
cov
(
x
~
k
∣
k
)
=
P
k
∣
k
−
1
−
K
k
S
k
K
k
′
(5)
\textcolor{#FF0000}{ \begin{aligned} \hat{x}_{k|k}&=E\left[ x_k\mid Z^{k}\right ]=\hat{x}_{k|k-1}+K_z\left(z_k-\hat{z}_{k|k-1}\right)\\ P_{k\mid k}&=\text{cov}\left(\widetilde{x}_{k\mid k}\right)=P_{k\mid k-1}-K_kS_kK_k' \end{aligned}} \tag{5}
x^k∣kPk∣k=E[xk∣Zk]=x^k∣k−1+Kz(zk−z^k∣k−1)=cov(x
k∣k)=Pk∣k−1−KkSkKk′(5)
其中估计误差为
x
~
k
∣
k
=
x
k
−
x
^
k
∣
k
\widetilde{x}_{k\mid k}=x_k-\hat{x}_{k|k}
x
k∣k=xk−x^k∣k
以上公式(2-5)及为带加性噪声非线性系统的扩展卡尔曼滤波算法。
三、仿真实验一:EKF二维雷达目标跟踪
3.1 仿真场景(二维)
https://download.csdn.net/download/weixin_44044161/85401461
https://download.csdn.net/download/weixin_44044161/85401885
https://download.csdn.net/download/weixin_44044161/85123812
https://download.csdn.net/download/weixin_44044161/85123744
目标模型
考虑一各二维的匀速运动目标(CV 模型):
x
k
+
1
=
F
k
x
k
+
G
k
w
k
x_{k+1}=F_kx_k+G _kw_k
xk+1=Fkxk+Gkwk
其中状态向量
x
k
=
[
x
k
,
x
˙
k
,
y
k
,
y
˙
k
]
′
x_k=[x_k,\dot{x}_k,y_k,\dot{y}_k]'
xk=[xk,x˙k,yk,y˙k]′;噪声为
w
k
=
[
w
x
,
w
y
]
′
w_k=[w_x,w_y]'
wk=[wx,wy]′;状态转移矩阵
F
k
F_k
Fk和噪声驱动矩阵
G
k
G_k
Gk如下
F
k
=
[
1
T
0
0
0
1
0
0
0
0
1
T
0
0
0
1
]
G
k
=
[
1
/
2
T
2
0
T
0
0
1
/
2
T
2
0
T
]
F_k=\begin{bmatrix}1 & T & 0 & 0 \\0 & 1 & 0 & 0 \\0 & 0 & 1 & T\\0 & 0 & 0 & 1\end{bmatrix} \qquad G_k=\begin{bmatrix}1/2T^2 & 0 \\T & 0 \\0 & 1/2T^2 \\0 & T \end{bmatrix}
Fk=⎣
⎡1000T100001000T1⎦
⎤Gk=⎣
⎡1/2T2T00001/2T2T⎦
⎤
采样时间
T
=
1
s
T=1s
T=1s. 初始状态为
x
0
∼
(
x
ˉ
0
,
P
0
)
x
ˉ
0
=
[
10
km
,
200
m/s
,
10
km
,
100
m/s
]
′
P
0
=
diag
(
1
0
5
m
2
,
1
0
2
m
2
/
s
2
,
1
0
5
m
2
,
1
0
2
m
2
/
s
2
)
x_0\sim(\bar{x}_0,P_0)\\\bar{x}_{0}=[10\text{km}, 200\text{m/s} ,10\text{km}, 100\text{m/s}]'\\P_{0}=\text{diag}(10^5\text{m}^2, 10^2\text{m}^2/\text{s}^2, 10^5\text{m}^2, 10^2\text{m}^2/\text{s}^2)
x0∼(xˉ0,P0)xˉ0=[10km,200m/s,10km,100m/s]′P0=diag(105m2,102m2/s2,105m2,102m2/s2)
过程噪声均值和方差分别为
w
ˉ
k
=
[
0
,
0
]
′
Q
k
=
[
0.01
0
0
0.01
]
\bar{w}_k=[0,0]'\\Q_k=\begin{bmatrix}0.01 & 0 \\0 & 0.01 \end{bmatrix}
wˉk=[0,0]′Qk=[0.01000.01]
如果为非线性目标,则将状态转移矩阵 F k F_k Fk代替为雅可比矩阵即可。为了不是一般性这里采用线性模型进行仿真。主要处理目标跟踪,雷达量测存在的非线性滤波问题。
雷达量测模型
在二维情况下,雷达量测为距离和角度
r
k
m
=
r
k
+
r
~
k
b
k
m
=
b
k
+
b
~
k
{r}_k^m=r_k+\tilde{r}_k\\ b^m_k=b_k+\tilde{b}_k
rkm=rk+r~kbkm=bk+b~k
其中
r
k
=
(
x
k
−
x
0
)
+
(
y
k
−
y
0
)
2
)
b
k
=
tan
−
1
y
k
−
y
0
x
k
−
x
0
r_k=\sqrt{(x_k-x_0)^+(y_k-y_0)^2)}\\ b_k=\tan^{-1}{\frac{y_k-y_0}{x_k-x_0}}\\
rk=(xk−x0)+(yk−y0)2)bk=tan−1xk−x0yk−y0
[
x
0
,
y
0
]
[x_0,y_0]
[x0,y0]为雷达坐标,一般情况为0。雷达量测为
z
k
=
[
r
k
,
b
k
]
′
z_k=[r_k,b_k]'
zk=[rk,bk]′。雷达量测方差为
R
k
=
cov
(
v
k
)
=
[
σ
r
2
0
0
σ
b
2
]
R_k=\text{cov}(v_k)=\begin{bmatrix}\sigma_r^2 & 0 \\0 & \sigma_b^2 \end{bmatrix}
Rk=cov(vk)=[σr200σb2]且
σ
r
=
120
m
\sigma_r=120m
σr=120m,
σ
b
=
80
m
r
a
d
\sigma_b=80mrad
σb=80mrad。
性能指标
RMSE(Root mean-squared error):蒙塔卡罗次数
M
=
500
M=500
M=500,
x
^
k
∣
k
i
\hat{x}_{k|k}^i
x^k∣ki为第
i
i
i次仿真得到的估计。
RMSE
(
x
^
)
=
1
M
∑
i
=
1
M
(
x
k
−
x
^
k
∣
k
i
)
(
x
k
−
x
^
k
∣
k
i
)
′
\text{RMSE}(\hat{x})=\sqrt{\frac{1}{M}\sum_{i=1}^{M}(\mathbf{x}_k-\hat{\mathbf{x}}_{k|k}^i)(\mathbf{x}_k-\hat{\mathbf{x}}_{k|k}^i)'}
RMSE(x^)=M1i=1∑M(xk−x^k∣ki)(xk−x^k∣ki)′
Position RMSE
(
x
^
)
=
1
M
∑
i
=
1
M
(
x
k
−
x
^
k
∣
k
i
)
2
+
(
y
k
−
y
^
k
∣
k
i
)
2
\text{Position RMSE}(\hat{x})=\sqrt{\frac{1}{M}\sum_{i=1}^{M}(x_k-\hat{x}_{k|k}^i)^2+(y_k-\hat{y}_{k|k}^i)^2}
Position RMSE(x^)=M1i=1∑M(xk−x^k∣ki)2+(yk−y^k∣ki)2
Velocity RMSE
(
x
^
)
=
1
M
∑
i
=
1
M
(
x
˙
k
−
x
˙
^
k
∣
k
i
)
2
+
(
y
˙
k
−
y
˙
^
k
∣
k
i
)
2
\text{Velocity RMSE}(\hat{x})=\sqrt{\frac{1}{M}\sum_{i=1}^{M}(\dot{x}_k-\hat{\dot{x}}_{k|k}^i)^2+(\dot{y}_k-\hat{\dot{y}}_{k|k}^i)^2}
Velocity RMSE(x^)=M1i=1∑M(x˙k−x˙^k∣ki)2+(y˙k−y˙^k∣ki)2
ANEES(average normalized estimation error square),
n
n
n 为状态维数,
P
k
∣
k
i
\mathbf{P}_{k|k}^i
Pk∣ki为第
i
i
i次仿真滤波器输出的估计协方差
ANEES
(
x
^
)
=
1
M
n
∑
i
=
1
M
(
x
k
−
x
^
k
∣
k
i
)
′
(
P
k
∣
k
i
)
−
1
(
x
k
−
x
^
k
∣
k
i
)
\text{ANEES}(\hat{x})=\frac{1}{Mn}\sum_{i=1}^{M}(\mathbf{x}_k-\hat{\mathbf{x}}_{k|k}^i)'(\mathbf{P}_{k|k}^i)^{-1} (\mathbf{x}_k-\hat{\mathbf{x}}_{k|k}^i)
ANEES(x^)=Mn1i=1∑M(xk−x^k∣ki)′(Pk∣ki)−1(xk−x^k∣ki)
3.2 二维EKF跟踪仿真结果
https://download.csdn.net/download/weixin_44044161/16239356
四、仿真实验二:EKF三维雷达目标跟踪
4.1 仿真场景(三维)
目标模型
考虑一各三维的匀速运动目标(CV 模型):
x
k
+
1
=
F
k
x
k
+
G
k
w
k
x_{k+1}=F_kx_k+G _kw_k
xk+1=Fkxk+Gkwk
其中状态向量
x
k
=
[
x
k
,
x
˙
k
,
y
k
,
y
˙
k
,
z
k
,
z
˙
k
]
′
x_k=[x_k,\dot{x}_k,y_k,\dot{y}_k,z_k,\dot{z}_k]'
xk=[xk,x˙k,yk,y˙k,zk,z˙k]′;噪声为
w
k
=
[
w
x
,
w
y
,
w
z
]
′
w_k=[w_x,w_y,w_z]'
wk=[wx,wy,wz]′;状态转移矩阵
F
k
F_k
Fk和噪声驱动矩阵
G
k
G_k
Gk如下
F
k
=
[
1
T
0
0
0
0
0
1
0
0
0
0
0
0
1
T
0
0
0
0
0
1
0
0
0
0
0
0
1
T
0
0
0
0
0
1
]
Γ
k
=
[
1
/
2
T
2
0
0
T
0
0
0
1
/
2
T
2
0
0
T
0
0
1
/
2
T
2
0
0
T
]
F_k=\begin{bmatrix}1 & T & 0 & 0 & 0 & 0\\0 & 1 & 0 & 0 & 0 & 0 \\0 & 0 & 1 & T & 0 & 0\\0 & 0 & 0 & 1 & 0 & 0\\0 & 0 & 0 & 0 & 1 & T\\0 & 0 & 0 & 0 & 0 & 1\end{bmatrix} \qquad\varGamma_k=\begin{bmatrix}1/2T^2 & 0 & 0 \\T & 0 & 0 \\0 & 1/2T^2 & 0 \\0 & T & \\0 & 0 & 1/2T^2 \\0 & 0 & T\end{bmatrix}
Fk=⎣
⎡100000T1000000100000T1000000100000T1⎦
⎤Γk=⎣
⎡1/2T2T0000001/2T2T000001/2T2T⎦
⎤
采样时间
T
=
1
s
T=1s
T=1s. 初始状态为
x
0
∼
(
x
ˉ
0
,
P
0
)
x
ˉ
0
=
[
1
km
,
20
m/s,
1
km
,
20
m/s
,
1
km
,
20
m/s
]
′
P
0
=
diag
(
1
0
5
m
2
,
1
0
2
m
2
/
s
2
,
1
0
5
m
2
,
1
0
2
m
2
/
s
2
,
1
0
5
m
2
,
1
0
2
m
2
/
s
2
)
x_0\sim(\bar{x}_0,P_0)\\\bar{x}_{0}=[1\text{km}, 20\text{m/s} ,1\text{km}, 20\text{m/s} ,1\text{km}, 20\text{m/s}]'\\P_{0}=\text{diag}(10^5\text{m}^2, 10^2\text{m}^2/\text{s}^2, 10^5\text{m}^2, 10^2\text{m}^2/\text{s}^2, 10^5\text{m}^2, 10^2\text{m}^2/\text{s}^2)
x0∼(xˉ0,P0)xˉ0=[1km,20m/s,1km,20m/s,1km,20m/s]′P0=diag(105m2,102m2/s2,105m2,102m2/s2,105m2,102m2/s2)
过程噪声均值和方差分别为
w
ˉ
k
=
[
0
,
0
,
0
]
′
Q
k
=
[
0.01
0
0
0
0.01
0
0
0
0.01
]
\bar{w}_k=[0,0, 0]'\\Q_k=\begin{bmatrix}0.01 & 0& 0 \\0 & 0.01 & 0\\0&0 & 0.01 \end{bmatrix}
wˉk=[0,0,0]′Qk=⎣
⎡0.010000.010000.01⎦
⎤
如果为非线性目标,则将状态转移矩阵 F k F_k Fk代替为雅可比矩阵即可。为了不是一般性这里采用线性模型进行仿真。主要处理目标跟踪,雷达量测存在的非线性滤波问题。
雷达量测模型
在二维情况下,雷达量测为距离和角度
r
k
m
=
r
k
+
r
~
k
b
k
m
=
b
k
+
b
~
k
e
k
m
=
e
k
+
e
~
k
{r}_k^m=r_k+\tilde{r}_k\\ b^m_k=b_k+\tilde{b}_k\\ e^m_k=e_k+\tilde{e}_k
rkm=rk+r~kbkm=bk+b~kekm=ek+e~k
其中
r
k
=
(
x
k
−
x
0
)
+
(
y
k
−
y
0
)
2
)
b
k
=
tan
−
1
y
k
−
y
0
x
k
−
x
0
e
k
=
tan
−
1
z
k
−
z
0
(
x
k
−
x
0
)
2
+
(
y
k
−
y
0
)
2
r_k=\sqrt{(x_k-x_0)^+(y_k-y_0)^2)}\\ b_k=\tan^{-1}{\frac{y_k-y_0}{x_k-x_0}}\\ e_k=\tan^{-1}{\frac{z_k-z_0}{\sqrt{(x_k-x_0)^2+(y_k-y_0)^2}}}\\
rk=(xk−x0)+(yk−y0)2)bk=tan−1xk−x0yk−y0ek=tan−1(xk−x0)2+(yk−y0)2zk−z0
[
x
0
,
y
0
,
z
0
]
[x_0,y_0,z_0]
[x0,y0,z0]为雷达坐标,一般情况为0。雷达量测为
z
k
=
[
r
k
,
b
k
,
e
k
]
′
z_k=[r_k,b_k,e_k]'
zk=[rk,bk,ek]′。雷达量测方差为
R
k
=
cov
(
v
k
)
=
[
σ
r
2
0
0
0
σ
b
2
0
0
0
σ
e
2
]
R_k=\text{cov}(v_k)=\begin{bmatrix}\sigma_r^2 & 0 &0\\0 & \sigma_b^2 &0\\0&0& \sigma_e^2 \end{bmatrix}
Rk=cov(vk)=⎣
⎡σr2000σb2000σe2⎦
⎤且
σ
r
=
120
m
\sigma_r=120m
σr=120m,
σ
b
=
80
m
r
a
d
\sigma_b=80mrad
σb=80mrad,
σ
e
=
60
m
r
a
d
\sigma_e=60mrad
σe=60mrad。
性能指标
RMSE(Root mean-squared error):蒙塔卡罗次数
M
=
500
M=500
M=500,
x
^
k
∣
k
i
\hat{x}_{k|k}^i
x^k∣ki为第
i
i
i次仿真得到的估计。
RMSE
(
x
^
)
=
1
M
∑
i
=
1
M
(
x
k
−
x
^
k
∣
k
i
)
(
x
k
−
x
^
k
∣
k
i
)
′
\text{RMSE}(\hat{x})=\sqrt{\frac{1}{M}\sum_{i=1}^{M}(\mathbf{x}_k-\hat{\mathbf{x}}_{k|k}^i)(\mathbf{x}_k-\hat{\mathbf{x}}_{k|k}^i)'}
RMSE(x^)=M1i=1∑M(xk−x^k∣ki)(xk−x^k∣ki)′
Position RMSE
(
x
^
)
=
1
M
∑
i
=
1
M
(
x
k
−
x
^
k
∣
k
i
)
2
+
(
y
k
−
y
^
k
∣
k
i
)
2
+
(
z
k
−
z
^
k
∣
k
i
)
2
\text{Position RMSE}(\hat{x})=\sqrt{\frac{1}{M}\sum_{i=1}^{M}(x_k-\hat{x}_{k|k}^i)^2+(y_k-\hat{y}_{k|k}^i)^2+(z_k-\hat{z}_{k|k}^i)^2}
Position RMSE(x^)=M1i=1∑M(xk−x^k∣ki)2+(yk−y^k∣ki)2+(zk−z^k∣ki)2
Velocity RMSE
(
x
^
)
=
1
M
∑
i
=
1
M
(
x
˙
k
−
x
˙
^
k
∣
k
i
)
2
+
(
y
˙
k
−
y
˙
^
k
∣
k
i
)
2
+
(
z
˙
k
−
z
˙
^
k
∣
k
i
)
2
\text{Velocity RMSE}(\hat{x})=\sqrt{\frac{1}{M}\sum_{i=1}^{M}(\dot{x}_k-\hat{\dot{x}}_{k|k}^i)^2+(\dot{y}_k-\hat{\dot{y}}_{k|k}^i)^2+(\dot{z}_k-\hat{\dot{z}}_{k|k}^i)^2}
Velocity RMSE(x^)=M1i=1∑M(x˙k−x˙^k∣ki)2+(y˙k−y˙^k∣ki)2+(z˙k−z˙^k∣ki)2
ANEES(average normalized estimation error square),
n
n
n 为状态维数,
P
k
∣
k
i
\mathbf{P}_{k|k}^i
Pk∣ki为第
i
i
i次仿真滤波器输出的估计协方差
ANEES
(
x
^
)
=
1
M
n
∑
i
=
1
M
(
x
k
−
x
^
k
∣
k
i
)
′
(
P
k
∣
k
i
)
−
1
(
x
k
−
x
^
k
∣
k
i
)
\text{ANEES}(\hat{x})=\frac{1}{Mn}\sum_{i=1}^{M}(\mathbf{x}_k-\hat{\mathbf{x}}_{k|k}^i)'(\mathbf{P}_{k|k}^i)^{-1} (\mathbf{x}_k-\hat{\mathbf{x}}_{k|k}^i)
ANEES(x^)=Mn1i=1∑M(xk−x^k∣ki)′(Pk∣ki)−1(xk−x^k∣ki)
4.2 EKF三维跟踪仿真结果
三维仿真代码和仿真结果见下面链接(自行下载:)
EKF仿真代码:三维目标跟踪
https://download.csdn.net/download/weixin_44044161/16239480
五、EKF二维跟踪参考代码
说明:
1.二维仿真代码也可以在上面的连接中直接下载,
2.将EKF函数保存,文件名“fun_2EKF.m”
3.将量测函数保存,文件名“measurements.m”
4. 运行下面的主函数
5. 注意将这三个文件保存在一个文件夹下
5.1 主函数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% created by:
% date: 2020/4
% 扩展卡尔曼滤波,目标跟踪
% 二维目标跟踪问题
% 极坐标两侧
% 线性CV目标模型
% 单雷达
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all; close all; clc;
%% initial parameter
n=4; %状态维数 ;
T=1; %采样时间
M=1; %雷达数目
N=200; %运行总时刻
MC=500; %蒙特卡洛次数
chan=1; %滤波器通道,这里只有一个滤波器
w_mu=[0,0]'; % mean of process noise
v_mu=[0,0]'; % mean of measurement noise
%% target model
%covariance of process noise
q_x=0.01; %m/s^2
q_y=q_x;
Qk=diag([q_x^2,q_y^2]);
% state matrix
Fk= [1 T 0 0
0 T 0 0
0 0 1 T
0 0 0 T]; %
Gk= [ T^2/2 0
T 0
0 T^2/2
0 T ]; %
%量测模型
sigma_r(1)=120; sigma_b(1)=80e-3; % covariance of measurement noise (radar)
Rk=diag([sigma_r(1)^2, sigma_b(1)^2]);
xp=[0,0,0,0];%雷达位置
%% 定义存储空间
sV=zeros(n,N,MC); % 状态
eV=zeros(n,N,MC,chan); %估计
PV=zeros(n,n,N,MC,chan);%协方差
rV=zeros(2,N,MC,M); % %量测