机动目标跟踪_张泽兵_05040056

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(1) 算法描述

在该问题中,机动目标经历三个阶段:初始匀速直线阶段、匀速圆周运动阶段、返回匀速直线阶段。在此过程中线速度大小v 保持不变。

图1

如图1所示:θ为轨迹切线与横轴正向夹角。在初始匀速阶段和返回匀速直线阶段θ分别为0,π。在匀速圆周运动阶段θ从0到π均匀变化。 由

2/mv r ma =及/w v r =得

/w a v =(w 为角速度)

所以容易得到:

/wt vt r θ==

cos x v v θ=

sin y v v θ=-

状态变量

[,,,,]T x y s r r v a θ=

状态方程为:

[][1][1]cos x x x x r n r n v T r n v T θ=-+=-+

[][1][1]sin y y y x r n r n v T r n v T θ=-+=--

[][1][1]a

n n wT n T v

θθθ=-+=-+

[][1][]v v n v n u n =-+

[][1][]a a n a n u n =-+

[]([1])[]s n a s n u n =-+,其中[][0,0,0,[],[]]'v a u n u n u n =

所以状态转换矩阵为

211,0,sin ,cos ,0210,1,cos ,sin ,02

0,0,1,,/0,0,0,1,00,0,0,0,1v T T v T T a a A T T v

s v θθθθ⎡⎤-⎢⎥⎢⎥

⎢⎥--⎢⎥⎢⎥∂⎢⎥==-∂⎢⎥

⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦

假设[]v u n 和[]a u n 不相关,方差分别为2

v σ、2

a

σ,因此得驱动噪

220,0,0,0,00,0,0,0,00,0,0,,00,0,0,0,v a Q σσ⎡⎤⎢⎥

⎥=⎢⎥⎢⎥⎢⎥⎣⎦

观测矢量

[][][][]x y r n x n w n r n ⎡⎤=+⎢⎥⎣⎦

其中[][][]x y u n w n u n ⎡⎤

=⎢⎥⎣⎦

所以观测矩阵

1,0,0,0,00,1,0,0,0H ⎡⎤

=⎢⎥⎣⎦

假设[]x u n 、[]y u n 不相关且方差分别为2

x σ和2

y σ

观测噪声

22,00,x y C σσ⎡⎤=⎢⎥⎢⎥⎣⎦

总结上述式子,得到这个问题的扩展卡尔曼滤波方程为

ˆˆ[|1]([1|1])s

n n a s n n -=--

[|1][1|1]T M n n AM n n A Q -=--+ 1[][|1]([|1])T T K n M n n H C HM n n H -=-+-

ˆˆˆ[|][|1][]([][|1])s

n n s n n K n x n Hs n n =-+-- [|]([])[|1]M n n I K n H M n n =--

(2) 滤波初始化

由问题描述,x σ=y σ=100,

初始位置为[-20000;0] ,也可以有一定的偏离,经过一段时间后依然能够收敛。不妨取[-10000;2000].初始速度v=300m/s ,θ=0,a=0 所以初始状态为

[1][10000,0,0,300,0]T s -=-

对驱动噪声,取v σ=30;a σ=2; (3) 仿真分析

采用MATLAB 编写仿真程序,利用蒙特卡罗方法对跟踪滤波器进行仿真分析,次数为10次。以下给出仿真图和结果分析。 滤波轨迹和滤波均值轨迹: 见图2。

图2 而当M=1时

可以看出性能比之M=10时较差,尤其表现在拐弯处。X、Y方向滤波估计误差均值及误差标准差:

见图3、4。

图3

图4 附Matlab源代码:

function main()

%%@project:飞行器跟踪模拟

%@author:fantasy

%@date:2006.5.10

%@descripition:主函数

%产生观测数据

total=3*60;%总的时间长度

global T;%采样周期

T=1;

N=total/T;%数据长度

a=20;

var_rx=100;

var_ry=100;

X=[];%观测数据

X_ideal=[];%理想数据

for i=1:N

[rx,ry]=track(i*T,20);

X_ideal=[X_ideal,[rx;ry]];

rx=rx+var_rx*randn(1,1);

ry=ry+var_ry*rand(1,1);

X=[X,[rx;ry]];

end

X_filter=zeros(size(X));%滤波后数据X_mean=X_filter;%蒙特卡洛平均数据Error_var=zeros(size(X));

M=10;%蒙特卡洛仿真次数

for iCount=1:M

X_filter=Trace(X);

X_mean=X_mean+X_filter;

Error_var=Error_var+(X_ideal-X_filter).^2;

end

X_mean=X_mean/M;

Error_var=Error_var/M;

Error_mean=X_ideal-X_mean;%误差均值

Error_var=sqrt(Error_var-Error_mean.^2);

plot(X_ideal(1,:),X_ideal(2,:),X(1,:),X(2,:),X_mean(1,:),X_mean(2,:)); axis equal;

legend('理想轨迹','观测轨迹','滤波轨迹');

figure;

k=1:N;

subplot(2,1,1),plot(k,Error_mean(1,:));title('x方向误差均值');xlabel('采样次数'),ylabel('误差均值(米)');

subplot(2,1,2),plot(k,Error_var(1,:));title('x方向误差标准值');xlabel('采样次数'),ylabel('误差标准值值(米)');

相关文档
最新文档