主要内容

trackingKF

线性卡尔曼滤波器的跟踪对象

自从R2018b

描述

一个trackingKF对象是一个离散时间线性卡尔曼滤波器用来跟踪状态,如位置和速度目标平台。

卡尔曼滤波是一种递归算法估算的进化状态过程测量时的过程。过滤状态空间模型假设,包括状态模型和测量模型,是线性的。当过程噪声和测量噪声是高斯和运动模型是线性的,卡尔曼滤波器是最优的。简要描述的线性卡尔曼滤波算法,明白了线性卡尔曼滤波器

您可以使用一个trackingKF对象在这些方面:

  • 设置MotionModel属性到一个预定义的状态转换模型。看到MotionModel这些模型属性的细节。

    • “一维恒定速度”

    • “一维恒定加速度”

    • “二维恒定速度”

    • “二维恒定加速度”

    • “3 d恒定速度”

    • “3 d恒定加速度”

  • 显式地设置运动模型。设置MotionModel财产“自定义”,然后使用StateTransitionModelMeasurementModel属性指定状态转移矩阵和测量矩阵,分别。可选地,您可以指定控制输入指定ControlModel财产。

创建

描述

过滤器= trackingKF创建一个离散时间线性卡尔曼滤波估计的状态对象2 d,常速,移动物体。这个函数设置MotionModel财产的过滤器“二维恒定速度”

过滤器= trackingKF (“MotionModel”,模型)设置MotionModel房地产一个预定义的运动模型,模型。在这种情况下,过滤初始化状态作为一个双精度零向量基于运动模型的维数。过滤器配置MeasurementModel财产的度量模型返回的位置测量。

过滤器= trackingKF (一个,H)指定了StateTransitionModelMeasurementModel属性一个H,分别。这个函数设置MotionModel财产“自定义”

例子

过滤器= trackingKF (一个,H,B)设置ControlModel属性来指定的B。这个函数设置MotionModel财产“自定义”

例子

过滤器= trackingKF (___,的名字,价值)卡尔曼滤波器的配置属性通过使用一个或多个名称参数和任何以前的语法。任何未指定的属性默认值。在报价附上每个属性的名字。

属性

全部展开

卡尔曼滤波器的状态,指定为一个实值元向量,状态向量的大小。对于典型的信息为每个运动模型状态向量的大小,看到MotionModel财产。如果你指定初始状态作为一个标量,过滤器扩展到一个状态1的向量。

使用过滤器单精度浮点变量,指定MootionModel房地产作为一个预定义的模型和指定状态作为一个单精度向量变量。例如:

过滤器= trackingKF (“MotionModel”、“二维恒定速度”,“状态”,单([1;2;3;4))

例子:(200;0.2;-40;-0.01)

数据类型:|

状态估计误差协方差,指定为一个积极的标量或正定实值——- - - - - -矩阵,状态向量的大小。如果你指定一个标量,属性值指定的标量的乘积和——- - - - - -单位矩阵。矩阵表示状态的不确定性,每个矩阵的对角元素代表的方差对应态组件。不同国家之间的非对角元素代表cross-covariance组件。

例子:(20 0.1;0.1 - 1)

数据类型:

卡尔曼滤波器的运动模型,指定为“自定义”或其中一个预定义的模型:

  • “一维恒定速度”

  • “一维恒定加速度”

  • “二维恒定速度”

  • “二维恒定加速度”

  • “3 d恒定速度”

  • “3 d恒定加速度”

如果指定的财产作为一个预定义的运动模型、过滤器使用这个:状态空间模型

x ( k + 1 ) = 一个 ( k ) x ( k ) + G ( k ) w ( k ) z ( k ) = H ( k ) x ( k ) + v ( k )

在哪里k是离散的时间步长,x是国家,一个是状态转移矩阵,w过程噪声、G过程噪声增益矩阵,H是测量矩阵,v是测量噪声,z是测量。注意,增益矩阵的大小G——- - - - - -M / 2和过程噪声的大小wM / 2,在那里国家的大小吗x

运动模型 状态向量x 状态转移矩阵(一个) 增益矩阵(G)
“一维恒定速度”

[x, vx)

[1 dt;0 1]

[dt ^ 2/2;dt]
“二维恒定速度”

[x, vx; y; v]

块对角矩阵的[1 dt;0 1]块的重复xy空间维度

克罗内克积的克隆亚麻(眼(2),[dt ^ 2/2;dt])

“3 d恒定速度”

[x, vx; y; v; z; vz]

块对角矩阵的[1 dt;0 1]块的重复x,y,z空间维度。

克罗内克积的克隆亚麻(眼(3),(dt ^ 2/2;dt])

“一维恒定加速度”

[x, vx; ax)

[1 dt dt ^ 2/2;0 1 dt;0 0 1]

[dt ^ 2/2;dt; 1]
“二维恒定加速度”

[x, vx;斧子;y v,唉)

块对角矩阵[1 dt dt ^ 2/2;0 1 dt;0 0 1]块的重复xy空间维度

克罗内克积的克隆亚麻(眼(2),[dt ^ 2/2;dt;1))

“3 d恒定加速度”

[x, vx ax; y v;是的;z; vz; az)

块对角矩阵的[1 dt 0.5 * dt ^ 2;0 1 dt;0 0 1]块的重复x,y,z空间维度

克罗内克积的克隆亚麻(眼(3),(dt ^ 2/2;dt;1))

在表中,dt中指定的时间步吗预测对象的功能。如果你想要的过程噪声和测量噪声值与默认值不同的运动模型,指定他们的ProcessNoiseMeasurementNoise属性,分别。

如果您指定MotionModel作为“自定义”,您必须指定一个状态转换模型矩阵一个和测量模型矩阵H卡尔曼滤波器作为输入参数。您可以指定一个控制模型矩阵,B。当你指定一个自定义的运动模型,过滤器使用这个:状态空间模型

x ( k + 1 ) = 一个 ( k ) x ( k ) + B ( k ) u ( k ) + w ( k ) z ( k ) = H ( k ) x ( k ) + v ( k )

在哪里u是控制输入。在这种情况下,这个过程噪声的大小w,在那里国家的大小吗x。您可以指定的协方差w使用ProcessNoise财产,指定的协方差v使用MeasurementNoise财产。

数据类型:字符|字符串

状态转换模型之间的时间步骤,指定为一个实值——- - - - - -矩阵。状态向量的大小。在缺乏控制和噪音,状态转换模型预测时间步的状态到下一个时间步。

例子:[1 1;0 1]

依赖关系

要启用这个特性,设置MotionModel财产“自定义”

数据类型:|

控制模型,指定为一个——- - - - - -l矩阵。状态向量的维数,l是控制或部队的数量。控制的控制模型添加效果的发展状态。

请注意

使用控制模型,构建时必须指定这个属性过滤器对象。你不能改变的大小控制模型矩阵在创建过滤器。

例子:(。010.2]

数据类型:|

过程噪声的协方差,指定为负的标量、半正定D——- - - - - -D矩阵,或半正定——- - - - - -矩阵。过程噪声代表国家传播的不确定性,过滤器假定噪声是零均值高斯白噪声过程。

  • MotionModel属性被指定为一个预定义的运动模型,指定ProcessNoise房地产作为一种半正定D——- - - - - -D矩阵,D是尺寸的数量目标的运动。例如,D=2“二维恒定速度”或者是“二维恒定加速度”运动模型。

    在这种情况下,如果你指定ProcessNoise房地产作为一个负的标量,标量扩展到了一个对角协方差矩阵的对角元素,大小D——- - - - - -D

  • MotionModel财产被指定为“自定义”,指定ProcessNoise房地产作为一种半正定——- - - - - -矩阵,过滤器的大小状态。例如,=6如果你定制的三维运动模型状态(x,vx,y,vy,z,vz)。

    在这种情况下,如果你指定ProcessNoise房地产作为一个负的标量,标量扩展到了一个对角协方差矩阵的对角元素,大小——- - - - - -

数据类型:|

从状态向量度量模型,指定为一个实值N——- - - - - -矩阵,N是测量向量和的大小状态向量的大小。的度量模型是一个线性矩阵决定测量滤波器的状态。

请注意

你不能改变大小的度量模型矩阵在创建过滤器。

例子:[1 0.5 - 0.01;1.0 - 1 0]

数据类型:|

测量噪声的协方差,指定为一个积极的标量或正定实值N——- - - - - -N矩阵,N是测量向量的大小。如果这个属性指定为一个标量,属性值指定的标量的乘积和N——- - - - - -N单位矩阵。代表测量的不确定性和测量噪声滤波器假设测量噪声是零均值高斯白噪声。

例子:0.2

数据类型:|

启用状态平滑,指定为真正的。将这个属性设置为真正的需要传感器融合和跟踪工具箱™许可证。当指定为真正的,您可以:

  • 使用光滑的功能,传感器融合和跟踪提供的工具箱,平稳状态的估计前面的步骤。在内部,过滤器商店前面的步骤的结果允许向后平滑。

  • 使用指定的最大数量平滑步骤MaxNumSmoothingSteps财产的跟踪滤波器。

最大数量的向后平滑步骤,指定为一个正整数。

依赖关系

要启用这个特性,设置EnableSmoothing财产真正的

按顺序测量的最大数量(OOSM)步骤,指定为一个非负整数。

  • 将这个属性设置为0禁用OOSM retrodiction过滤器对象的能力。

  • 将这个属性设置为一个正整数使OOSM retrodiction过滤器对象的能力。这个选项需要一个传感器融合和跟踪工具箱许可证。同时,你不能设置MotionModel财产“自定义”。当你设定这个属性N> 1,过滤器对象保存过去的状态和状态协方差历史到最后N+ 1的修正。您可以使用OOSM和retrodictretroCorrect(或retroCorrectJPDA为多个OOSMs)对象的函数来减少不确定性估计状态。

增加这个属性的值增加了分配的内存数量,必须为国家历史,但允许您过程OOSMs到达后再延迟。注意,不确定性的影响减少使用OOSM减少延误就变长。

对象的功能

预测 预测状态和状态估计误差协方差的线性卡尔曼滤波器
正确的 正确的状态和状态估计误差协方差使用跟踪滤波器
correctjpda 正确的状态和状态估计误差协方差使用跟踪滤波器和JPDA
距离 当前和预测之间的距离的测量跟踪滤波器
可能性 从跟踪滤波器测量的可能性
克隆 创建重复跟踪滤波器
剩余 测量残余和残余噪声跟踪滤波器
光滑的 落后的光滑状态跟踪滤波器的估计
retrodict Retrodict过滤器前一个时间步
retroCorrect 正确的过滤器使用retrodiction OOSM
retroCorrectJPDA 正确的跟踪滤波器OOSMs使用JPDA-based算法
初始化 初始化状态和协方差的跟踪滤波器
tunableProperties 获得可调谐滤波器的性质
setTunedProperties 设置属性调整值

例子

全部折叠

创建一个线性卡尔曼滤波器,使用一个2 d匀速运动模型。假设测量包括xy -对象的位置。

指定初始状态估计零速度。

x = 5.3;y = 3.6;initialState = [x; 0; y; 0];KF = trackingKF (“MotionModel”,“二维恒定速度”,“状态”,initialState);

创建对象的测量位置常速轨迹。

vx = 0.2;v = 0.1;T = 0.5;pos = [0: vx * T: 2;5:v * T: 6];

正确预测和对象的状态。

k = 1:尺寸(pos, 1) pstates (k,:) =预测(KF, T);cstates (k) =正确(KF, pos (k,:));结束

画出痕迹。

情节(pos (: 1), pos (:, 2),“k”。pstates (: 1), pstates (:, 3),“+”,cstates (: 1), cstates (:, 3),“o”)包含(“x [m]”)ylabel (“y [m]”)网格xt = [x - 2, pos (1,1) + 0.1, pos(结束,1)+ 0.1);欧美= [y, pos (1、2), pos (, 2)];文本(xt,欧美,“第一测量”,“第一位置”,“最后的位置”])传说(“对象位置”,“预测位置”,“纠正位置”)

图包含一个坐标轴对象。坐标轴对象包含x [m], ylabel y [m]包含6行类型的对象,文本。一个或多个行显示的值只使用这些对象标记代表对象的位置,预测位置,纠正位置。

指定一个仿真时间10秒的时间步1秒。

rng (2021)%的可重复的结果simulationTime = 20;dt = 1;tspan = 0: dt: simulationTime;步骤=长度(tspan);

指定运动模型的二维恒定速度模型的状态(x;vx;y;v]。测量(x;y]。

A1D = [1 dt;0 1];一个= kron(眼(2),A1D)%状态transiton模型
一个=4×41 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1)
H1D = [1 0];H = kron(眼(2),H1D)%的度量模型
H =2×41 1 0 0 0 0 0 0
σ= 0.2;R =σ^ 2 *眼(2);%测量噪声协方差

指定一个控制模型矩阵。

B1D = [0;1);B = kron(眼(2),B1D)%控制模型矩阵
B =4×20 0 1 0 0 0 0 1)

假设控制输入正弦速度分量,vxv

获得= 5;用户体验=获得* sin (tspan(2:结束);Uy =获得* cos (tspan(2:结束);U =[用户体验;Uy];%控制输入

假设真正的初始状态是(1 1 1 1),模拟系统获得真实状态和测量。

initialState = [1 1 1 1] ';% (m m / s m m / s)trueStates =南(步骤4);trueStates (: 1) = initialState;我= 2:步骤trueStates(:,我)= A * trueStates(张:,)+ B * U(张:,);结束测量= H * trueStates +胆固醇(R) * randn(步骤);

可视化的真实轨迹和测量。

图绘制(trueStates (1:), trueStates (3:)“DisplayName”,“真相”)举行情节(测量(1:),测量(2:)“x”,“DisplayName”,“测量”)包含(“x”(m))ylabel (“y (m)”传说)

图包含一个坐标轴对象。坐标轴对象包含x (m), ylabel y (m)包含2线类型的对象。一个或多个行显示的值只使用这些对象标记代表真理,测量。

创建一个trackingKF过滤器与一个定制的运动模型。使指定控制模型的控制输入。在过滤器中指定初始状态的基础上,首先测量。

initialFilterState =[测量(1,1);0;测量(2,1);0);过滤器= trackingKF (“MotionModel”,“自定义”,“StateTransitionModel”一个,“MeasurementModel”H,“ControlModel”B“状态”,initialFilterState);

用估计状态预测正确的对象的功能。

estimateStates =南(步骤4);estimateStates (: 1) = initialFilterState;我= 2:步骤预测(过滤器,U(张:,));estimateStates (:, i) =正确(过滤器,测量(:,我));结束

可视化状态估计。

情节(estimateStates (1:), estimateStates (3:)“g”,“DisplayName”,“估计”);

图包含一个坐标轴对象。坐标轴对象包含x (m), ylabel y (m)包含3线类型的对象。一个或多个行显示的值只使用这些对象标记代表真理,测量,估计。

引用

[1]布朗R.G. P.Y.C.王。介绍了随机信号分析和应用卡尔曼滤波。第3版。纽约:约翰·威利& Sons, 1997。

[2]卡尔曼,r E。“一个线性滤波和预测问题的新方法。”事务ASME-Journal的基础工程D系列,卷。82年,1960年3月,35 - 45页。

[3]Blackman,撒母耳。多个目标与雷达跟踪应用程序。Artech房子。1986。

扩展功能

版本历史

介绍了R2018b