- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
卡尔曼滤波在目标跟踪中应用仿真的研究
卡尔曼滤波在目标跟踪中应用仿真研究
【】
刻的位置进行预测。本文简要讨论了用Kalman滤波方法对单个目标航迹进行预测,并借助于Matlab仿真工具,对实验的效果进行评估。
关键词:Kalman滤波、目标跟踪、Matlab仿真
1.情景假设
假定有一个二座标雷达对一平面上运动的目标进行观测,目标在秒沿轴作恒速直线运动,运动速度为-15米/秒,目标的起始点为(2000米,10000米),在秒向轴方向做的慢转弯,加速度均为0.075米/秒2,完成慢转弯后加速度将降为零,从秒开始做的快转弯,加速度为0.3米/秒2,在660秒结束转弯,加速度降至零。雷达扫描周期秒,和独立地进行观测,观测噪声的标准差均为100米。
2.Kalman滤波算法分析
为了简单起见,仅对轴方向进行考虑。
首先,目标运动沿轴方向的运动可以用下面的状态方程描述:
用矩阵的形式表述为,
在上式中,,,,。
考虑雷达的观测,得出观测方程为:
在中,,为零均值的噪声序列,方差已知。
对目标进行预测,由相关理论可得到下面的迭代式:
在中,,反映了由前各观测值对目前状态的估计。
而预测的误差协方差可由下式表出,
对于最佳滤波,迭代表达式为:
在式中, 为Kalman增益。
而滤波误差的协方差为,
在应用上面的公式进行Kalman滤波时,需要指定初值。由于实际中通常无法得到目标的初始状态,我们可以利用前几个观测值建立状态的初始估计,比如采用前两个观测值,
此时,估计误差为
而误差协方差矩阵为,
3.仿真计算与结果
为了真实地反映出Kalman滤波的效果,采用了Monte-Carlo方法,采用多次实验取均值的方法进行研究,可以计算出估计的误差均值和方差,其表达式为:
而误差的标准差可以表示为:
在和中,就是进行Monte-Carlo仿真的次数,而为取样点数。当仿真的次数越多时,实验的效果越接近于实际,但是计算的速度会明显变慢。在仿真时,需要根据实际适当选取。在本程序中,取。
另外,在仿真过程中,为了进一步研究目标的航迹,在660秒后又进行了一段时间的匀速运动仿真。
下面是仿真的结果,仿真源文件分别为trajectory.m,Kalman_filter.m和filter_result.m,分别产生原始目标航迹、卡尔曼滤波估计和最终的输出,为了方便观察,将原始航迹、观测数据和经过滤波后的估计航迹反映在一张图上。并且,画出了给定Monte-Carlo仿真的次数情况下,沿轴方向和轴方向估计误差值的均值和标准差随着采样点数的增多而发生变化的情况。
首先给出原始航迹,
3.1 原始航迹图
上图中可以看出目标运动的真实轨迹,首先沿轴方向运动,并经过两个转弯。
接下来经过Kalman滤波后的估计的x轴方向上的航迹和理论值为:
3.2 滤波输出x轴方向航迹图
而对应地,估计的y轴方向上的航迹和理论值为:
3.3 滤波输出y轴方向航迹图
将测量数据和理论值对比,得出的图形为:
3.4 理论航迹与观测值
而将输出的x和y方向的航迹估计显示在直角坐标系下,为下图所示:
3.5 理论航迹与滤波估计值
下面对滤波估计值的误差均值和方差进行简单分析,对x和y方向的航迹估计进行分别讨论,假定Monte-Carlo仿真的次数=50。由和式就可以求出实际滤波输出每时刻误差的均值和标准差。
3.6 估计误差均值曲线(左:x轴 右:y轴)
对应的标准差曲线为:
3.7 估计误差标准差曲线(上:x轴 下:y轴)
经过上面的仿真分析,可以看出Kalman滤波算法对于动态目标的跟踪有着比较好的效果,而且可以较好地抑止环境中的噪声影响。
附录1:trajectory.m
function [X,Y]=trajectory(Ts,offtime)
% 产生真实航迹[X,Y],并在直角坐标系下显示出
% Ts为雷达扫描周期,每隔Ts秒取一个观测数据
% 最初做匀速运动,接下来进行两个90度的机动转弯
if nargin2
error(输入的变量过多,请检查);
end
if offtime600
error(仿真时间必须大于600s,请重新输入);
end
x=zeros(offtime,1);
y=zeros(offtime,1);
X=zeros(ceil(offtime/Ts),1);
Y=zeros(ceil(offtime/Ts),1);
% t=0:400s,速度vx,vy为沿x和y轴的速度分量(m/s)
x0=2000;%起始点坐标
y0=10000;
vx=0;
vy=-15; % 沿-y方向
for t=1:400
x(t)=x0+vx*t;
y(t)=y0
文档评论(0)