Kalman滤波原理及程序(手册)解析
- 格式:doc
- 大小:498.00 KB
- 文档页数:14
卡尔曼滤波算法原理卡尔曼滤波(Kalman Filter)是一种用来估计系统状态的算法。
它基于对系统的数学模型和测量数据进行分析,通过使用贝叶斯统计推断来计算系统当前的最优状态估计。
卡尔曼滤波算法在控制系统、导航系统、机器人学、图像处理等领域有广泛的应用。
卡尔曼滤波算法的原理可以概括为以下几步:1. 系统建模:首先,需要建立系统的数学模型,包括系统的动态方程和观测方程。
动态方程描述了系统状态的演化规律,而观测方程则描述了系统状态与测量值之间的关系。
这些方程通常以线性高斯模型表示,即系统的状态和测量误差符合高斯分布。
2. 初始化:在开始使用卡尔曼滤波算法之前,需要对系统状态进行初始化。
这包括初始化系统状态的均值和协方差矩阵。
通常情况下,均值可以通过先验知识来估计,而协方差矩阵可以设置为一个较大的值,表示对系统状态的初始不确定性较大。
3. 预测:在每一次测量之前,需要对系统的状态进行预测。
预测过程基于系统的动态方程,将上一时刻的状态估计作为输入,得到当前时刻的状态的先验估计。
预测的结果是一个高斯分布,其均值和协方差矩阵表示了对当前状态估计的不确定性。
4. 测量更新:当获取了新的测量值时,需要将其与预测结果进行比较,以修正对系统状态的估计。
测量更新过程基于系统的观测方程,将预测的状态估计与实际的测量值进行比较,得到对系统状态的最优估计。
测量更新的结果也是一个高斯分布,其均值和协方差矩阵表示了对当前状态估计的不确定性。
5. 迭代:在每一次测量更新之后,会得到对系统状态的最优估计。
然后,可以根据当前估计的状态再次进行预测,并等待下一次的测量更新。
这样,通过不断地迭代,卡尔曼滤波算法可以逐步提高对系统状态的估计精度。
卡尔曼滤波算法的核心思想是将动态方程和观测方程结合起来,使用贝叶斯推断的方法进行状态估计。
通过动态方程对系统进行预测,再通过观测方程修正预测结果,从而得到对系统状态的最优估计。
卡尔曼滤波算法在估计过程中考虑了对系统状态的不确定性,通过动态预测和测量更新不断修正对系统状态的估计结果,达到更准确的状态估计。
控制系统中的Kalman滤波器原理与应用控制系统是现代工业发展过程中不可或缺的一部分。
为了使控制系统能够更加准确、可靠地运行,通常需要对传感器采集到的数据进行滤波处理。
而Kalman滤波器就是一种被广泛应用于控制系统中的滤波技术,它的出现大大提高了系统的精度和可靠性。
一、Kalman滤波器的原理Kalman滤波器最初是由R.E. Kalman于1960年提出的,它具有一种比较特殊的滤波思想,主要是通过特定的方式来优化传感器采集的数据,使其更加符合实际情况。
Kalman滤波器主要是用线性数学模型描述采样过程中各种误差的随机漂移规律,根据数据的特点构建出目标模型,使滤波后得到的数据更加接近真实值。
Kalman滤波器的核心思想是基于以下两种数据:1. 系统状态(State):表示被测量的真实值,通常情况下是无法直接测量。
2. 测量值(Measurement):表示传感器给出的测量值,它受到噪声等因素的影响,会存在一定的偏差。
Kalman滤波器认为,通过将测量值与系统状态进行加权平均,可以得到更加准确的结果。
具体来说,它通过建立数学模型,将系统状态与测量值联系起来,然后根据这个联系,在不断的采样、滤波过程中,来逐步优化估计值。
二、Kalman滤波器的应用Kalman滤波器在工业控制系统、航空航天、自动驾驶汽车、智能家居等领域均得到了广泛的应用。
在工业控制系统中,Kalman滤波器主要用于对工业生产线上的重要参数进行处理,以保证生产线的正常运行。
例如,在汽车生产线上,由于传感器采集到的测量值通常存在噪声等干扰,因此需要使用Kalman滤波器来对测量值进行优化,以保证汽车的生产质量。
在航空航天领域中,Kalman滤波器被广泛应用于飞行器的导航和控制系统中。
航空器的飞行需要依赖于精确的定位和航向数据,而通过使用Kalman滤波器来处理采集到的数据,可以提高数据的准确性和可靠性,从而使飞行安全得到保障。
在智能家居领域中,Kalman滤波器可以用于处理家庭生活中的传感器数据,并对物联网设备进行智能化管理。
Kalman 滤波原理及程序(手册)KF/EKF/UKF 原理+应用实例+MATLAB 程序本手册的研究内容主要有Kalman 滤波,扩展Kalman 滤波,无迹Kalman 滤波等,包括理论介绍和MATLAB 源程序两部分。
本手册所介绍的线性滤波器,主要是Kalman 滤波和α-β滤波,交互多模型Kalman 滤波,这些算法的应用领域主要有温度测量、自由落体,GPS 导航、石油地震勘探、视频图像中的目标检测和跟踪。
EKF 和UKF 主要在非线性领域有着重要的应用,目标跟踪是最主要的非线性领域应用之一,除了讲解目标跟踪外,还介绍了通用非线性系统的EKF 和UKF 滤波处理问题,相信读者可以通过学习本文通用的非线性系统,能快速掌握EKF 和UKF 滤波算法。
本文所涉及到的每一个应用实例,都包含原理介绍和程序代码(含详细的中文注释)。
一、四维目标跟踪Kalman 线性滤波例子在不考虑机动目标自身的动力因素,将匀速直线运动的船舶系统推广到四维,即状态[]T k yk y k xk 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)其中,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=Φ10001000010001T T ,⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=ΓT T TT 05.00005.022,TH ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=00100001,Tyy x x X ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡= ,⎥⎦⎤⎢⎣⎡=y x Z ,u ,v 为零均值的过程噪声和观测噪声。
T 为采样周期。
为了便于理解,将状态方程和观测方程具体化:)(05.00005.0)1()1()1()1(10001000010001)()()()(1222k w T TT T k y k y k x k x T Tk yk 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。
卡尔曼滤波原理及应用
一、卡尔曼滤波原理
卡尔曼滤波(Kalman filter)是一种后验最优估计方法。
它以四个步骤:预测、更新、测量、改善,不断地调整估计量来达到观测的最优估计的目的。
卡尔曼滤波的基本思想,是每次观测到某一位置来更新位置的参数,并用更新结果来预测下一次的位置参数,再由预测时产生的误差来改善当前位置参数。
从而可以达到滤波的效果,提高估计精度。
二、卡尔曼滤波应用
1、导航系统。
卡尔曼滤波可以提供准确的位置信息,把最近获得的各种定位信息和测量信息,如GPS、ISL利用卡尔曼滤波进行定位信息融合,可以提供较准确的空中、地面导航服务。
2、智能机器人跟踪。
在编队技术的应用中,智能机器人往往面临着各种复杂环境,很难提供精确的定位信息,而卡尔曼滤波正是能解决这一问题,将持续不断的测量信息放在卡尔曼滤波器中,使机器人能够在范围内定位,跟踪更新准确可靠。
3、移动机器人自主避障。
对于移动机器人来说,很多时候在前传感器检测不到
人或障碍物的时候,一般将使用卡尔曼滤波来进行自主避障。
卡尔曼滤波的定位精度很高,相对于静止定位而言,移动定位有更多的参数要考虑,所以能提供更准确的定位数据来辅助自主避障,准确的定位信息就可以让我们很好的实现自主避障。
4、安防监控。
与其他传统的安防场景比,安防场景如果需要运动物体位置估计或物体检测,就必须使用卡尔曼滤波技术来实现,这是一种行为检测和行为识别的先进技术。
(注:安防监控可用于感知移动物体的位置,并在设定的范围内监测到超出范围的物体,以达到安全防护的目的。
)。
MATLAB中的Kalman滤波器设计引言Kalman滤波器是一种常用于估计随时间演变的系统状态的算法。
它通过观测值和系统模型之间的协方差来融合测量和预测,从而提供对系统状态的最优估计。
在MATLAB中,实现Kalman滤波器设计相对简单,本文将介绍MATLAB中Kalman滤波器的基本原理和常见的应用案例。
一、 Kalman滤波器基本原理Kalman滤波器的基本原理可以概括为两个步骤:预测和更新。
预测步骤根据系统的动力学模型和先前的状态估计,使用预测方程计算下一个时间步的状态预测和协方差预测。
更新步骤则是在测量信息的基础上,使用更新方程将预测的状态和协方差修正为更准确的估计。
预测步骤:1. 根据系统的动力学模型,使用预测方程计算状态预测值x_prior和协方差预测值P_prior:x_prior = F * x_est + B * uP_prior = F * P_est * F' + Q其中,F是状态转移矩阵,x_est和P_est是先前时间步的状态估计和协方差估计,B是控制输入矩阵,u是控制输入向量,Q是系统过程噪声的协方差矩阵。
更新步骤:1. 根据观测模型,使用更新方程计算观测预测值z_prior和观测协方差S:z_prior = H * x_priorS = H * P_prior * H' + R其中,H是观测矩阵,R是观测噪声的协方差矩阵。
2. 计算卡尔曼增益K:K = P_prior * H' * inv(S)3. 根据观测值z和观测预测值z_prior,计算状态更新值x_update和协方差更新值P_update:x_update = x_prior + K * (z - z_prior)P_update = (eye(size(x_est, 1)) - K * H) * P_prior二、案例研究:目标跟踪Kalman滤波器在目标跟踪领域有广泛的应用。
1.卡尔曼滤波算法原理卡尔曼滤波算法是通过预测算法和测量值进行数据融合,从而提高状态测量精度的目的。
卡尔曼滤波主要分为预测、融合和递归三步。
1.1.预测预测方程如下:其中::为测量对象k时刻的状态量;:为预测矩阵,一般符合实际,如符合运动学规律、化学反应规律等;:控制量,外部施加的控制;:控制矩阵,反应了控制量对状态的影响;:外部干扰对状态量均值的影响,若该干扰均值为零(如白噪声),则对状态量无影响;:状态的协方差矩阵,包含了各状态分量的方差信息和各分量之间的协方差信息,反映了预测值的可信程度;:外部干扰对协方差的影响。
该误差若为白噪声,则服从的正态分布。
1.2.测量测量是将测量对象的状态量体现为其它的物理量形式,如将角速度转换为电压信号。
理想的测量过程是线性转换,但一般测量都会产生非线性和噪声,给转换带来误差。
测量转换方程如下:其中::测量值,测量值的量纲与状态量不同,需通过转换矩阵进行转换;:转换矩阵,将状态量转换为测量值;:测量误差,由于测量带来的误差,与测量方式和测量设备有关;:测量协方差,反映了测量值的可信程度;:测量误差的协方差。
1.3.递归在k时刻的状态量有两种可能,即预测值和测量值。
由于预测值和测量值都具有协方差,都不完全可信。
为提高k时刻状态量的估计精度,将预测值和测量值进行融合。
融合方法为正态分布融合算法。
所以预测值和测量值服从正态分布是卡尔曼滤波算法的前提。
预测值:服从正态分布;测量值:服从正态分布。
正态分布的密度函数如下:因为预测值和测量值是通过两个独立的方式得到的,所以两个正态分布独立,根据独立变量的密度函数性质:两个正态分布相乘,可得到一个新的分布,可以证明,该分布也是一个正态分布:推导如下:所以,新的正态分布的均值和方差如下:令:化简后得:写成协方差和均值的形式:其中,称为卡尔曼增益矩阵。
通过上面的推导可以看出:两个独立正态分布相乘,可得到另一个正态分布,该正态分布介于两个正态分布之间,即得到一个更集中的正态分布,均值更接近最优估计。
卡尔曼滤波详解一维卡尔曼滤波实例解析(五个公式以及各个参数的意义)一、问题描述假设我们有一个一维系统,我们想要估计这个系统的状态x。
我们可以通过一维传感器获得关于这个系统的观测z,但是这个观测会存在误差。
二、基本原理三、基本公式1.状态预测:我们首先假设系统可以通过一个线性方程来描述:x(k)=Ax(k-1)+B(u(k))+w(k),其中x(k)代表系统在时刻k的真实状态,A是系统的状态转移矩阵,B是外部输入的影响矩阵,u(k)是外部输入,w(k)是系统状态预测过程中的噪声。
2.状态协方差预测:卡尔曼滤波同时也需要估计状态的不确定性,即状态协方差。
协方差可以通过以下公式进行预测:P(k)=AP(k-1)A^T+Q(k-1),其中P(k)代表状态协方差矩阵,Q(k-1)是协方差预测过程中的噪声。
3.观测预测:将状态的估计值带入观测模型中,可以预测观测值:z^(k)=Hx^(k),其中z^(k)代表预测的观测值,x^(k)代表状态的估计值,H是观测模型矩阵。
4.观测残差:观测残差即观测值与预测观测值之间的差异:y(k)=z(k)-z^(k),其中y(k)代表观测残差。
5.状态更新:基于观测残差,我们可以通过以下公式更新状态的估计值:x(k)=x^(k)+K(k)y(k),其中K(k)代表卡尔曼增益。
卡尔曼增益可以通过以下公式计算:K(k)=P(k)H^T(HP(k)H^T+R)^-1,其中R为观测噪声的方差。
四、参数含义1.状态转移矩阵A:描述系统状态k与状态k-1之间的转移关系。
2.外部输入矩阵B:外部输入对系统状态的影响矩阵。
3.外部输入u(k):外部输入,可以是控制信号或者测量噪声。
4.状态预测噪声w(k):在状态预测过程中引入的噪声。
5.状态协方差矩阵P:表示状态估计的不确定性,协方差矩阵的对角线上的元素越大,状态的不确定性越大。
6.状态协方差预测噪声Q(k):在状态协方差预测过程中引入的噪声。
卡尔曼算法原理详细讲解
卡尔曼滤波(Kalman Filter)是由美国工程师卡尔曼(Rudolf Emil Kalman)在1960年代提出的一种递推算法。
以下是卡尔曼算法原理的详细解释:
首先,假设系统具有线性状态方程和观测方程,且噪声具有高斯分布。
卡尔曼滤波器使用两个主要步骤,即预测和更新,来估计系统的状态。
1. 预测步骤:基于系统的前一状态预测当前状态。
这包括预测状态变量的期望值和协方差。
2. 更新步骤:根据新的观测数据,对预测的状态进行修正。
这包括计算卡尔曼增益、更新期望值和协方差。
这两个步骤一起形成一个递归过程,其中每个步骤都基于前一步的结果进行计算。
通过不断地重复这两个步骤,卡尔曼滤波器可以逐渐更新对系统状态的估计,以反映新的信息和数据。
此外,卡尔曼滤波器有多种变种和应用,包括扩展卡尔曼滤波器、无迹卡尔曼滤波器和粒子滤波器等。
这些变种可以处理非线性系统和不确定性,扩展了卡尔曼滤波器的应用范围。
总的来说,卡尔曼滤波器是一种高效、递归的算法,用于在不确定的环境中估计系统状态。
它通过融合不同来源的信息,如测量数据和模型预测,来估计系统状态,并且简单易实现,通常在许多应用中都能提供良好的性能。
如需更多信息,可以阅读卡尔曼滤波相关的学术文献或在线教程。
卡尔曼滤波器原理详解卡尔曼滤波器将状态估计模型分为两个部分:状态预测和状态更新。
在状态预测阶段,滤波器根据上一时刻的状态估计值和状态转移模型预测当前时刻的状态。
在状态更新阶段,滤波器根据当前时刻的观测值和状态观测模型更新对当前时刻状态的估计。
状态预测模型可表示为:x(k)=F(k-1)*x(k-1)+B*u(k-1)+w(k-1)其中x(k)为k时刻的状态向量,F(k-1)为状态转移矩阵,u(k-1)为输入向量,B为输入矩阵,w(k-1)为过程噪声。
状态预测模型描述了下一个时刻状态如何由当前时刻的状态得到,并考虑了外部输入和过程噪声的影响。
状态观测模型可表示为:z(k)=H(k)*x(k)+v(k)其中z(k)为k时刻的观测向量,H(k)为观测矩阵,v(k)为观测噪声。
状态观测模型描述了观测向量与状态向量之间的关系,并考虑了观测噪声的影响。
卡尔曼滤波器的更新步骤分为两个步骤:预测和更新。
预测步骤根据上一时刻的状态估计值和预测模型得到当前时刻的预测状态和预测误差协方差矩阵。
更新步骤根据当前时刻的观测值和观测模型计算卡尔曼增益和更新后的状态估计值。
预测步骤中的预测状态和预测误差协方差矩阵可由以下公式计算:x^(k,k-1)=F(k)*x(k-1,k-1)+B*u(k)P(k,k-1)=F(k)*P(k-1,k-1)*F(k)^T+Q(k)其中x(k,k-1)为当前时刻的预测状态,P(k,k-1)为当前时刻的预测误差协方差矩阵,x(k-1,k-1)为上一时刻的状态估计值,P(k-1,k-1)为上一时刻的状态估计误差协方差矩阵,Q(k)为过程噪声的协方差矩阵。
更新步骤中的卡尔曼增益和更新后的状态估计值可由以下公式计算:K(k)=P(k,k-1)*H(k)^T*(H(k)*P(k,k-1)*H(k)^T+R(k))^-1x(k,k)=x(k,k-1)+K(k)*(z(k)-H(k)*x(k,k-1))P(k,k)=(I-K(k)*H(k))*P(k,k-1)其中K(k)为卡尔曼增益,x(k,k)为当前时刻的更新后的状态估计值,P(k,k)为当前时刻的更新后的状态估计误差协方差矩阵,R(k)为观测噪声的协方差矩阵。
2.卡尔曼滤波器的介绍(Introduction to the Kalman Filter)为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。
但是,他的5条公式是其核心内容。
结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式。
在介绍他的5条公式之前,先让我们来根据下面的例子一步一步的探索。
假设我们要研究的对象是一个房间的温度。
根据你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做时间单位)。
假设你对你的经验不是100%的相信,可能会有上下偏差几度。
我们把这些偏差看成是高斯白噪声(White Gaussian Noise),也就是这些偏差跟前后时间是没有关系的而且符合高斯分配(Gaussian Distribution)。
另外,我们在房间里放一个温度计,但是这个温度计也不准确的,测量值会比实际值偏差。
我们也把这些偏差看成是高斯白噪声。
好了,现在对于某一分钟我们有两个有关于该房间的温度值:你根据经验的预测值(系统的预测值)和温度计的值(测量值)。
下面我们要用这两个值结合他们各自的噪声来估算出房间的实际温度值。
假如我们要估算k时刻的是实际温度值。
首先你要根据k-1时刻的温度值,来预测k时刻的温度。
因为你相信温度是恒定的,所以你会得到k时刻的温度预测值是跟k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度(5是这样得到的:如果k-1时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)。
然后,你从温度计那里得到了k时刻的温度值,假设是25度,同时该值的偏差是4度。
由于我们用于估算k时刻的实际温度有两个温度值,分别是23度和25度。
究竟实际温度是多少呢?相信自己还是相信温度计呢?究竟相信谁多一点,我们可以用他们的covariance来判断。
卡尔曼滤波法原理引言:卡尔曼滤波法(Kalman Filter)是一种用于估计系统状态的数学方法,广泛应用于控制、信号处理、导航等领域。
其原理基于贝叶斯滤波理论和最小二乘估计,通过对系统的观测值和先验信息进行加权处理,得到对系统状态的最优估计。
一、贝叶斯滤波理论贝叶斯滤波理论是基于贝叶斯定理的一种数学方法,用于根据观测数据来更新对系统状态的估计。
贝叶斯定理表示在已知先验概率的条件下,通过观测数据来计算后验概率。
在卡尔曼滤波中,先验概率即为对系统状态的估计,后验概率为根据观测数据更新后的估计。
二、最小二乘估计最小二乘估计是一种通过最小化观测值与估计值之间的平方误差来确定参数的方法。
在卡尔曼滤波中,最小二乘估计用于确定系统状态的估计值与观测值之间的关系,即通过观测值来更新对系统状态的估计。
三、卡尔曼滤波原理卡尔曼滤波法将贝叶斯滤波理论和最小二乘估计相结合,通过递归的方式对系统状态进行估计。
其基本步骤如下:1. 初始化:给定系统状态的初始估计值和误差协方差矩阵。
2. 预测:根据系统的动态模型和控制输入,通过状态转移方程对系统状态进行预测。
3. 更新:根据观测模型和观测值,通过观测方程对系统状态进行更新。
4. 重复步骤2和步骤3,直到达到预设的终止条件。
在卡尔曼滤波中,预测和更新步骤是通过计算协方差矩阵的加权平均来实现的。
预测步骤中,通过状态转移方程将先验估计值传递到下一个时刻,并更新误差协方差矩阵。
更新步骤中,通过观测方程将先验估计值与观测值进行比较,计算卡尔曼增益(Kalman Gain),并根据卡尔曼增益将先验估计值与观测值进行加权平均得到后验估计值。
四、卡尔曼滤波的优势卡尔曼滤波法具有以下几个优势:1. 高效性:卡尔曼滤波法通过递归的方式进行估计,计算量较小,适合实时应用。
2. 自适应性:卡尔曼滤波法能够根据观测数据和先验信息自动调整权重,适应不同的环境和噪声条件。
3. 鲁棒性:卡尔曼滤波法能够通过对系统状态的连续估计来抑制观测数据中的噪声和干扰,提高估计的精度和稳定性。
kalman滤波原理Kalman滤波是一种用于估计系统状态的算法,广泛应用于信号处理、导航和控制领域。
它的原理基于贝叶斯定理和线性系统的动态模型。
本文将为您详细介绍Kalman滤波的原理和它的应用。
一、贝叶斯定理贝叶斯定理是一种基于先验概率和观测数据来更新我们对事件发生概率的方法。
在Kalman滤波中,我们使用贝叶斯定理来更新对系统状态的估计。
贝叶斯定理公式如下:P(A B) = (P(B A) * P(A)) / P(B)其中,P(A B)表示已知事件B发生的条件下事件A发生的概率,P(B A)表示已知事件A发生的条件下事件B发生的概率,P(A)和P(B)分别表示事件A和事件B的概率。
二、线性系统模型Kalman滤波的原理基于线性系统模型,即系统的状态转移和观测模型都是线性的。
线性系统模型可以用下面的方程表示:状态转移模型:x(k) = F(k-1) * x(k-1) + B(k-1) * u(k-1) + w(k-1)观测模型:z(k) = H(k) * x(k) + v(k)其中,x(k)表示系统在时刻k的状态向量,u(k)表示控制输入向量,z(k)表示时刻k的观测向量,F(k-1)和H(k)分别表示状态转移矩阵和观测矩阵,B(k-1)表示控制输入矩阵,w(k-1)和v(k)分别表示状态转移和观测噪声。
三、Kalman滤波的步骤Kalman滤波的基本步骤包括两个阶段:预测和更新。
在预测阶段,根据系统的状态转移模型和控制输入,我们通过预测当前状态的概率分布。
在更新阶段,我们根据观测数据对状态进行修正。
1. 初始化阶段:首先,我们对系统的状态变量进行初始化,即设置初始状态向量x(0)和初始状态协方差矩阵P(0)。
2. 预测阶段:a. 状态预测:根据状态转移模型,我们通过计算状态的预测值x'(k) = F(k-1) * x(k-1) + B(k-1) * u(k-1)来估计状态。
b. 协方差预测:根据状态转移模型和状态协方差矩阵,我们计算协方差矩阵的预测值P'(k) = F(k-1) * P(k-1) * F(k-1)^T + Q(k-1)。
第4章 卡尔曼(Kalman )滤波卡尔曼滤波的思想是把动态系统表示成状态空间形式,是一种连续修正系统的线性投影算法。
功能 1) 连续修正系统的线性投影算法。
2)用于计算高斯ARMA 过程的精确有限样本预测和精确的似然函数。
3) 分解矩阵自协方差生成函数或谱密度。
4)估计系数随时间变化的向量自回归。
第一节 动态系统的状态空间表示一.假设条件令t y 表示时期t 观察到变量的一个()1n ×向量。
则t y 的动态可以用不可观测的()1r ×向量t ξ来表示,t ξ为状态向量。
t y 的动态系统可以表示为如下的状态空间模型:11t t t F v ξξ++=+ (1)t t t t y A x H w ξ′′=++ (2)其中′′F,A ,H 分别为()r r ×,()n k ×和()n r ×矩阵,t x 是外生变量或前定变量的()1k ×向量。
方程(1)称为状态方程,方程(2)称为观察方程。
其中()1r ×向量t v 和()1n ×向量t w 为向量白噪声:()()00t t Qt E v v t R t E w w t ττττττ=⎧′=⎨≠⎩=⎧′=⎨≠⎩ (3)其中,Q R 为()(),r r n n ××矩阵。
假定扰动项t v 和t w 在所有阶滞后都不相关:()0t t E v w ′= 对所有的t 和τ (4)t x 为前定或外生变量,意味着对0,1,2,....,s =除包含在121,,...,t t y y y −−之内的信息外,t x 不再能提供关于t s ξ+以及t s w +的任何信息。
即t x 可能包含y 的滞后值或所有与τ、τξ和w τ不相关变量。
状态空间系统描述有限观察值序列{}1,...,T y y ,需要知道状态向量的初始值1ξ,根据状态方程(1),t ξ可写作()123,,,...,t v v v ξ的线性函数: 2211221....t t t t t t v Fv F v F v F ξξ−−−−=+++++ 2,3,...,t T = (5)这里假定1ξ与t v 和t w 的任何实现都不相关:()()1101,2,...,01,2,...,t t E v TE w Tξτξτ′==′== (6)根据(3)和(6),得t v 和ξ的滞后值不相关:()0t E v τξ′= 1,2,...,1t t τ=−− (7) ()0t E w τξ′= 1,2,...,T τ= (8) ()()()0t t E w y E w A x H w ττττξ′′′=++= 1,2,...,1t t τ=−− (9) ()0t E v y τ′= 1,2,...,1t t τ=−− (10)二.状态空间系统的例子例1 ()AR p 过程,()()()112111...t t t p t p t y y y y µφµφµφµε+−−++−=−+−++−+ (11)()2t t E t τστεετ⎧==⎨≠⎩ (12) 可以写作状态空间形式。
一、背景---卡尔曼滤波的意义随着传感技术、机器人、自动驾驶以及航空航天等技术的不断发展,对控制系统的精度及稳定性的要求也越来越高。
卡尔曼滤波作为一种状态最优估计的方法,其应用也越来越普遍,如在无人机、机器人等领域均得到了广泛应用。
对于Kalman Filter的理解,用过的都知道“黄金五条”公式,且通过“预测”与“更新”两个过程来对系统的状态进行最优估计,但完整的推导过程却不一定能写出来,希望通过此文能对卡尔曼滤波的原理及状态估计算法有更一步的理解。
二、卡尔曼滤波的基本模型假设一离散线性动态系统的模型如下所示:x_{k} = A*x_{k-1} + B*u_{k} + w_{k-1}-------(1)z_{k} = H*x_{k} + v_{k} --------------------(2)其中,各变量表征的意义为:———————————————————————————x_{k}\Rightarrow 系统状态矩阵,-------, z_{k}\Rightarrow 状态阵的观测量(实测)A\Rightarrow 状态转移矩阵,-------, B\Rightarrow 控制输入矩阵H\Rightarrow 状态观测矩阵w_{k-1}\Rightarrow 过程噪声,-------,v_{k}\Rightarrow 测量噪声———————————————————————————如果大家学过《现代控制理论》的话,对上述模型的描述形式一定不会陌生,只是多了变量 w_{k-1} 与 v_{k} 。
其中,随机变量w_{k-1} 代表过程噪声(process noise), v_{k} 代表测量噪声(measurement noise),且为高斯白噪声,协方差分别为 Q 和 R ,即 p(w) \in N(0,Q) , p(v) \in N(0,R) 。
为什么要引入这两个变量呢?对于大多数实际的控制系统(如倒立摆系统)而言,它并不是一个严格的线性时变系统(Linear Time System),亦或系统结构参数的不确定性,导致估计的状态值x_{k} 存在偏差,而这个偏差值由过程噪声 w_{k} 来表征。
Kalman 滤波原理及仿真手册KF/EKF/UKF 原理+应用实例+MATLAB 程序本手册的研究内容主要有Kalman 滤波,扩展Kalman 滤波,无迹Kalman 滤波等,包括理论介绍和MATLAB 源程序两部分。
本手册所介绍的线性滤波器,主要是Kalman 滤波和α-β滤波,交互多模型Kalman 滤波,这些算法的应用领域主要有温度测量、自由落体,GPS 导航、石油地震勘探、视频图像中的目标检测和跟踪。
EKF 和UKF 主要在非线性领域有着重要的应用,目标跟踪是最主要的非线性领域应用之一,除了讲解目标跟踪外,还介绍了通用非线性系统的EKF 和UKF 滤波处理问题,相信读者可以通过学习本文通用的非线性系统,能快速掌握EKF 和UKF 滤波算法。
本文所涉及到的每一个应用实例,都包含原理介绍和程序代码(含详细的中文注释)。
一、四维目标跟踪Kalman 线性滤波例子在不考虑机动目标自身的动力因素,将匀速直线运动的船舶系统推广到四维,即状态[]T k yk y k xk 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)其中,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=Φ10001000010001T T,⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=ΓT T TT 05.00005.022,T H ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=00100001,Tyy x x X ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡= ,⎥⎦⎤⎢⎣⎡=y x Z ,u ,v 为零均值的过程噪声和观测噪声。
T 为采样周期。
为了便于理解,将状态方程和观测方程具体化:)(05.00005.0)1()1()1()1(10001000010001)()()()(1222k w T TTT k y k y k x k x T Tk 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 跟踪下落的球 那么对该质点跟踪,它的状态为[]yxy xk X =)(,状态方程如下 )(000)(10000100010001)1(k w g k X dt dt k X ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡+⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=+ 观测方程为)()(00100001)(k v k X k Z +⎥⎦⎤⎢⎣⎡= 在这个过程中,前提是目标检测,一定要找到重心),(y x ,与雷达目标跟踪中观测目标位置是一回事。
图像目标检测跟踪程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 目标检测函数,这个函数主要完成将目标从背景中提取出来%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function detectclear,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; endImback = Imzero/5;[MR,MC,Dim] = size(Imback); % 遍历所有图片 for i = 1 : 60% 读取所有帧…… ……运行程序得到的x,y 方向的位置跟踪偏差分析Y 方向的位置偏差50100150X 方向的位置偏差三、通用非线性系统的EKF 实现例子:所谓的非线性方程,就是因变量与自变量的关系不是线性的,这类方程很多,例如平方关系,对数关系,指数关系,三角函数关系等等。
这些方程可分为两类,一类是多项式方程,一种是非多项式方程。
为了便于说明非线性卡尔曼滤波——扩展Kalman 滤波的原理,我们选用以下系统,系统状态为)(k X ,它仅包含一维变量,即[])()(k x k X =,系统状态方程为)()2.1cos(8)1(1)1(5.2)1(5.0)(2k w k k X k X k X k X ++-+-+-= (3-2-1)观测方程为)(20)()(2k v k X k Y += (3-2-2)其中,式(3-1-1)是包含分式,平方,三角函数在内的严重非线性的方程,)(k w 为过程噪声,其均值为0,方差为Q ,观测方程中,观测信号)(k Y 与状态)(k X 的关系也是非线性的,)(k v 也是均值为0,方差为R 的高斯白噪声。
因此关于(3-1-1)和(3-2-2)是一个状态和观测都为非线性的一维系统。
以此为通用的非线性方程的代表,接下来讲述如何用扩展Kalman 滤波来处理噪声问题。
第一步:初始化初始状态)0(X ,)0(Y ,协防差矩阵0P 。
第二步:状态预测)2.1cos(8)1(1)1(5.2)1(5.0)1|(2k k X k X k X k k X +-+-+-=- (3-2-3)第三步:观测预测20)1|()1|(2-=-k k X k k Y (3-2-4)…… ……第九步:协方差更新)1|())()(()(--=k k P k H k K I k P n (3-2-10)以上九步为扩展卡尔曼滤波的一个计算周期,如此循环下去就是各个时刻EKF 对非线性系统的处理过程。
其他参数设置请查看源程序,仿真以上系统得到状态滤波结果,如图3-2-1所示,滤波后的状态与真值之间的偏差如图图3-2-2所示。
图3-2-1 EKF 滤波处理后的状态与真值对比 图3-2-2 偏差分析 EKF 一维非线性系统仿真程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 函数功能:一维非线性系统扩展Kalman 滤波问题% 状态函数:X(k+1)=0.5X(k)+2.5X(k)/(1+X(k)^2)+8cos(1.2k) +w(k) % 观测方程:Z (k )=X(k)^2/20 +v(k)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function EKF_for_One_Div_UnLine_System % 初始化T=50; % 总时间 Q=10; R=1;% 产生过程噪声 w=sqrt(Q)*randn(1,T); % 产生观测噪声 v=sqrt(R)*randn(1,T);…… ……四、EKF 在纯方位寻的导弹制导中的应用例子:考虑一个在三维平面x-y-z 内运动的质点M ,其在某一时刻k 的位置、速度和加速度可用矢量可以表示为:[]Tz y x z y x z y x k a k a k a k v k v k v k r k r k r k x )()()()()()()()()()(= 质点M 可以在三维空间内做任何运动,同时假设三个x-y-z 方向上运动具有加性系统噪声()k w ,则在笛卡尔坐标系下该质点的运动状态方程为:))(),(()1(k w k x f k x k =+通常情况下,上述方程为线性的,即能表示为以下方式,)()()()1(k w k u k x k x +Γ+=+φ其中⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡--∆+∆=∆-∆-∆-333333323300)1(10)1(1I e I e I I t e tI I t ttλλλλλλφ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡∆-∆-=Γ33320)2/(tI I t t ∆为测量周期,也叫扫描周期,采样时间间隔等。
动态噪声)(k w 为[]Tz y x k k k k w )()()(000000)(ωωω=而且[]1910)(⨯==q k w E ,[]⎥⎦⎤⎢⎣⎡==⨯⨯32633661000)()(I Q k w k w E T σ )(k w 是高斯型白色随机向量序列。
现在考虑一个带有观测器的飞行中的导弹,可以假设为质点M ,对移动的目标进行观测,如下图所示,导弹与目标的相对位置依然可用x-y-z 表示,那么,导弹对目标纯方位角观测,主要是俯仰角和水平方向偏向角,实际测量中雷达具有加性测量噪声()k v ,则在笛卡尔坐标系下,观测方程为[])()()(k v k x h k z +=式中,[]Tz x z x y k r k r k r k r k r k x h ⎥⎥⎦⎤⎢⎢⎣⎡-+=)()(arctan)()()(arctan)(22 )(k v 为测量噪声,他也是高斯型白色随机向量序列,而且[]1210)(⨯==r k v E ,[]1)()(R k v k v E T =对于1R ,其定义为)()()(11k xD k D k R T --=其中,21.0I x =⎥⎥⎦⎤⎢⎢⎣⎡++++=)()()(00)()()()(222222k r k r k r k r k r k r k D z y x zy x显然在笛卡尔坐标系下,该模型运动观测方程为非线性的。