Kalman滤波原理及程序(手册)解析

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

Kalman 滤波原理及仿真手册

KF/EKF/UKF 原理+应用实例+MATLAB 程序

本手册的研究内容主要有Kalman 滤波,扩展Kalman 滤波,无迹Kalman 滤波等,包括理论介绍和MATLAB 源程序两部分。本手册所介绍的线性滤波器,主要是Kalman 滤波和α-β滤波,交互多模型Kalman 滤波,这些算法的应用领域主要有温度测量、自由落体,GPS 导航、石油地震勘探、视频图像中的目标检测和跟踪。

EKF 和UKF 主要在非线性领域有着重要的应用,目标跟踪是最主要的非线性领域应用之一,除了讲解目标跟踪外,还介绍了通用非线性系统的EKF 和UKF 滤波处理问题,相信读者可以通过学习本文通用的非线性系统,能快速掌握EKF 和UKF 滤波算法。

本文所涉及到的每一个应用实例,都包含原理介绍和程序代码(含详细的中文注释)。

一、四维目标跟踪Kalman 线性滤波例子

在不考虑机动目标自身的动力因素,将匀速直线运动的船舶系统推广到四

维,即状态[]T k y

k y k x

k x k X )()

()()()( =包含水平方向的位置和速度和纵向的位置和速度。则目标跟踪的系统方程可以用式(3.1)和(3.2)表示,

)()()1(k u k X k X Γ+Φ=+ (2-4-9) )()()(k v k HX k Z += (2-4-10)

其中,⎥

⎥⎥⎦⎤⎢⎢⎢

⎢⎣⎡=Φ1000

1000010

001

T T

,⎥⎥⎥⎥

⎥⎦⎤⎢⎢⎢⎢⎢

⎣⎡=ΓT T T

T 05.00005.022

,T H ⎥⎥

⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=00100001

,T

y

y x x X ⎥

⎥⎥⎥⎦⎤

⎢⎢⎢⎢⎣⎡= ,⎥⎦⎤

⎢⎣⎡=y x Z ,u ,v 为零均值的过程噪声和观测噪声。T 为采样周期。为了便于理解,

将状态方程和观测方程具体化:

)(05.00

005.0)1()1()1()1(1000

1000010001)()()()(1

222

k w T T

T

T k y k y k x k x T T

k y k y k x k x ⨯⎥⎥⎥⎥

⎥⎦

⎢⎢⎢⎢⎢⎣⎡+⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡ )()()()()(01000001)()(12k v k y k y k x k x k y k x Z ⨯+⎥⎥

⎥⎥

⎢⎢⎢⎢⎣⎡⎥

⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡= 假定船舶在二维水平面上运动,初始位置为(-100m,200m ),水平运动速度为2m/s ,垂直方向的运动速度为20 m/s ,GPS 接收机的扫描周期为T=1s ,观测噪声的均值为0,方差为100。过程噪声越小,目标越接近匀速直线运动,反之,则为曲线运动。仿真得到以下结果:

图3-1 跟踪轨迹图 图3-2 跟踪误差图

仿真程序

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Kalman 滤波在目标跟踪中的应用实例

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function Kalman clc;clear;

T=1;%雷达扫描周期, N=80/T; %总的采样次数

X=zeros(4,N); % 目标真实位置、速度

X(:,1)=[-100,2,200,20];% 目标初始位置、速度 Z=zeros(2,N); % 传感器对位置的观测 Z(:,1)=[X(1,1),X(3,1)]; % 观测初始化

delta_w=1e-2; %如果增大这个参数,目标真实轨迹就是曲线了 Q=delta_w*diag([0.5,1,0.5,1]) ; % 过程噪声均值 R=100*eye(2); %观测噪声均值

F=[1,T,0,0;0,1,0,0;0,0,1,T;0,0,0,1]; % 状态转移矩阵 H=[1,0,0,0;0,0,1,0]; % 观测矩阵

……

……

二、视频图像目标跟踪Kalman 滤波算法实例

如下图所示,对于自由下落的皮球,要在视频中检测目标,这里主要检测目标中心,即红心皮球的重心,在模型建立时可以将该重心抽象成为一个质点,坐标为),(y x 。

图2-6-1 下落的球 图2-6-2 检测下落的球 图2-6-3 跟踪下落的球 那么对该质点跟踪,它的状态为[]y

x

y x

k X =)(,状态方程如下 )(000)(10000100010001)1(k w g k X dt dt k X ⎥⎥⎥⎥

⎢⎢⎢⎢⎣⎡+⎥⎥⎥⎥⎦⎤⎢⎢⎢

⎢⎣⎡=+ 观测方程为

)()(00100001)(k v k X k Z +⎥⎦

⎤⎢⎣⎡= 在这个过程中,前提是目标检测,一定要找到重心),(y x ,与雷达目标跟踪中观测目标位置是一回事。 图像目标检测跟踪程序

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 目标检测函数,这个函数主要完成将目标从背景中提取出来

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function detect

clear,clc; %清除所有内存变量、图形窗口 % 计算背景图片数目 Imzero = zeros(240,320,3); for i = 1:5

% 将图像文件 i.jpg 的图像像素数据读入矩阵Im Im{i} = double(imread(['DATA/',int2str(i),'.jpg'])); Imzero = Im{i}+Imzero; end

相关文档
最新文档