主要内容

trackingEKF

用于目标跟踪的扩展卡尔曼滤波器

描述

一个trackingEKF对象是用于跟踪位置和速度的离散时间扩展卡尔曼滤波器目标和对象。

卡尔曼滤波器是一种递归算法,用于在对过程进行测量时估计过程的演化状态。当状态遵循非线性运动模型时,当测量是状态的非线性函数时,或者当两个条件都适用时,扩展卡尔曼滤波器可以模拟状态的演化。扩展卡尔曼滤波是建立在非线性方程线性化基础上的。这种方法导致了一个类似于线性卡尔曼滤波器的滤波器公式,trackingKF

过程和测量值可以有高斯噪声,可以通过以下方式包含:

  • 在过程和测量中添加噪声。在这种情况下,过程噪声和测量噪声的大小必须分别与状态向量和测量向量的大小相匹配。

  • 在状态转换函数、测量模型函数或两个函数中添加噪声。在这些情况下,相应的噪声大小不受限制。

创建

描述

filter = trackingEKF属性的默认值为离散时间系统创建扩展卡尔曼筛选器对象StateTransitionFcnMeasurementFcn,状态属性。假设过程噪声和测量噪声是相加的。

过滤器= trackingEKF (transitionfcnmeasurementfcn状态指定状态转换函数,transitionfcn,测量函数,measurementfcn,系统的初始状态,状态

例子

过滤器= trackingEKF (___名称,值通过使用一个或多个扩展卡尔曼滤波器对象来配置扩展卡尔曼滤波器对象的属性名称,值对参数和任何前面的语法。任何未指定的属性都有默认值。

属性

全部展开

卡尔曼滤波状态,指定为实值-element vector,其中过滤器状态的大小。

如果希望筛选器具有单精度浮点变量,请指定状态作为一个单精度矢量变量。例如,

filter = trackingEKF('State',single([1;2;3;4]))

例子:(200;0.2)

数据类型:|

状态误差协方差,指定为正定实值——- - - - - -矩阵过滤器状态的大小。协方差矩阵表示滤波状态下的不确定性。

例子:(20 0.1;0.1 - 1)

状态转换函数,指定为函数句柄。该函数计算时间步长的状态向量k从时间步上的状态向量k- 1。该函数可以接受额外的输入参数,例如控制输入或时间步长。该函数还可以包含噪声值。

状态转换函数的有效语法取决于滤波器是否具有可加过程噪声。属性的值显示了有效的语法HasAdditiveProcessNoise财产。

有效语法(HasAdditiveProcessNoise = true 有效语法(HasAdditiveProcessNoise = false
X (k) = statetransitionfcn(X (k-1)) X (k) = statetransitionfcn(X (k-1),参数)
  • x (k)状态在时间上吗k

  • 参数表示状态转换函数所需的所有附加参数。

X (k) = statetransitionfcn(X (k-1),w(k-1)) X (k) = statetransitionfcn(X (k-1),w(k-1),dt) X (k) = statetransitionfcn(__,参数)
  • x (k)状态在时间上吗k

  • w (k)是否有处理噪声的值k

  • dt是时间的步长吗trackingEKF过滤器,过滤器对象的最近调用中指定的预测函数。的dt参数在跟踪器中使用筛选器并调用预测与过滤器一起函数,以预测跟踪器在下一个时间步骤的状态。对于非可添加的进程噪声情况,跟踪器假设您使用以下语法显式指定时间步长:预测(过滤器,dt)

  • 参数表示状态转换函数所需的所有附加参数。

例子:@constacc

数据类型:function_handle

状态转移函数的雅可比矩阵,指定为函数句柄。该函数具有与状态转换函数相同的输入参数。

状态转移函数的雅可比矩阵的有效语法取决于滤波器是否具有可加过程噪声。属性的值显示了有效的语法HasAdditiveProcessNoise财产。

有效语法(HasAdditiveProcessNoise = true 有效语法(HasAdditiveProcessNoise = false
Jx(k) = statejacobianfcn(x(k)) Jx(k) = statejacobianfcn(x(k),参数)
  • x (k)状态在时间上吗k

  • Jx (k)表示预测状态相对于前一状态的雅可比矩阵。这个雅可比矩阵是an——- - - - - -时间矩阵k.雅可比函数可以接受额外的输入参数,如控制输入或时间步长。

  • 参数表示雅可比函数所需的所有附加参数,如控制输入或时间步长。

(Jx (k) (Jw (k)] = statejacobianfcn (x (k), w (k)) (Jx (k) (Jw (k)] = statejacobianfcn (x (k), w (k), dt) (Jx (k) (Jw (k)] = statejacobianfcn(__,参数)
  • x (k)状态在时间上吗k

  • w (k)是一个样本-过程噪声时刻的元素向量k是过程噪声协方差的大小。在非加性情况下,过程噪声向量不需要与状态向量具有相同的维数。

  • Jx (k)表示预测状态相对于前一状态的雅可比矩阵。这个雅可比矩阵是an——- - - - - -时间矩阵k.雅可比函数可以接受额外的输入参数,如控制输入或时间步长。

  • Jw (k)表示——- - - - - -预测状态相对于过程噪声元素的雅可比矩阵。

  • dt是时间的步长吗trackingEKF过滤器,过滤器对象的最近调用中指定的预测函数。的dt参数在跟踪器中使用筛选器并调用预测与过滤器一起函数,以预测跟踪器在下一个时间步骤的状态。对于非可添加的进程噪声情况,跟踪器假设您使用以下语法显式指定时间步长:预测(过滤器,dt)

  • 参数表示雅可比函数所需的所有附加参数,如控制输入或时间步长。

类的每次调用时,通过数值差分计算雅可比矩阵预测函数。这种计算会增加处理时间和数值的不准确性。

例子:@constaccjac

数据类型:function_handle

过程噪声协方差,用标量或矩阵表示。

  • HasAdditiveProcessNoise真正的,将过程噪声协方差指定为正实标量或正定实值——- - - - - -矩阵。是状态向量的维数。当指定为标量时,矩阵是的倍数——- - - - - -单位矩阵。

  • HasAdditiveProcessNoise,将过程噪声协方差指定为a——- - - - - -矩阵。是过程噪声向量的大小。

    您必须指定ProcessNoise在任何呼叫之前预测函数。在后来的预测,您可以选择将过程噪声指定为标量。在这种情况下,过程噪声矩阵是的倍数——- - - - - -单位矩阵。

例子:[1.0 - 0.05;0.05 - 2

将过程噪声建模为添加剂的选项,指定为真正的.当此属性为真正的时,将过程噪声添加到状态向量中。另外,在状态转移函数中加入噪声。

测量模型函数,指定为函数句柄。该函数可以是一个非线性函数,从预测状态建模测量。函数的输入是-元素状态向量。输出是N-元素测量向量。该函数可以接受额外的输入参数,例如传感器位置和方向。

  • 如果HasAdditiveMeasurementNoise真正的,使用以下语法之一指定函数:

    Z (k) = measurementfcn(x(k))
    Z (k) = measurementfcn(x(k),参数)
    x (k)状态在时间上吗k而且z (k)预测的测量是否及时k.的参数参数表示测量函数所需的所有附加参数。

  • 如果HasAdditiveMeasurementNoise,使用以下语法之一指定函数:

    Z (k) = measurementfcn(x(k),v(k))
    Z (k) = measurementfcn(x(k),v(k),参数)
    x (k)状态在时间上吗k而且v (k)测量时是否有噪声k.的参数参数表示测量函数所需的所有附加参数。

例子:@cameas

数据类型:function_handle

测量函数的雅可比矩阵,指定为函数句柄。该函数具有与测量函数相同的输入参数。该功能可以接受额外的输入参数,如传感器的位置和方向。

  • 如果HasAdditiveMeasurmentNoise真正的,使用以下语法之一指定雅可比函数:

    Jmx(k) = measjacobianfcn(x(k))
    Jmx(k) = measjacobianfcn(x(k),参数)
    x (k)状态在时间上吗kJx (k)表示N——- - - - - -测量函数关于状态的雅可比矩阵。的参数参数表示测量函数所需的所有参数。

  • 如果HasAdditiveMeasurmentNoise,使用以下语法之一指定雅可比函数:

    [Jmx(k),Jmv(k)] = measjacobianfcn(x(k),v(k))
    [Jmx(k),Jmv(k)] = measjacobianfcn(x(k),v(k),参数)
    x (k)状态在时间上吗k而且v (k)是一个R-维样本噪声向量。Jmx (k)表示N——- - - - - -测量函数关于状态的雅可比矩阵。Jmv (k)的雅可比矩阵N——- - - - - -R关于测量噪声的测量函数。的参数参数表示测量函数所需的所有参数。

方法的每次调用时使用数值差分计算测量雅可比矩阵正确的函数。这种计算会增加处理时间和数值的不准确性。

例子:@cameasjac

数据类型:function_handle

测量噪声协方差,指定为正标量或正定实值矩阵。

  • HasAdditiveMeasurementNoise真正的,将测量噪声协方差指定为标量或N——- - - - - -N矩阵。N是测量向量的大小。当指定为标量时,矩阵是的倍数N——- - - - - -N单位矩阵。

  • HasAdditiveMeasurementNoise,指定测量噪声协方差为R——- - - - - -R矩阵。R是测量噪声矢量的大小。

    您必须指定MeasurementNoise在任何呼叫之前正确的函数。之后先打电话给正确的,您可以选择将测量噪声指定为标量。在这种情况下,测量噪声矩阵是的倍数R——- - - - - -R单位矩阵。

例子:0.2

选项,以启用附加测量噪声,指定为真正的.当此属性为真正的时,将噪声添加到测量中。否则,噪声被纳入测量函数。

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

  • 使用光滑的在传感器融合和跟踪工具箱中提供的函数,以平滑前面步骤中的状态估计。在内部,过滤器存储前面步骤的结果,以允许向后平滑。

  • 属性指定平滑步骤的最大数目MaxNumSmoothingSteps跟踪过滤器的属性。

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

依赖关系

属性可启用此属性EnableSmoothing财产真正的

无序测量(OOSM)的最大步数,指定为非负整数。

  • 将此属性设置为0禁用过滤对象的OOSM回溯能力。

  • 将此属性设置为正整数可启用筛选器对象的OOSM回溯功能。此选项需要传感器融合和跟踪工具箱许可证。启用OOSM后,筛选器对象保存过去的状态和状态协方差历史。您可以使用OOSM和retrodict而且retroCorrect对象函数来减少估计状态的不确定性。

增加此属性的值将增加必须为状态历史分配的内存量,但使您能够处理延迟较长到达的oosm。注意,使用OOSM减少不确定性的效果随着延迟变长而减小。

对象的功能

预测 预测跟踪滤波器的状态和状态估计误差协方差
正确的 利用跟踪滤波器修正状态和状态估计误差协方差
correctjpda 利用跟踪滤波器和JPDA修正状态和状态估计误差协方差
距离 跟踪滤波器的当前测量值与预测测量值之间的距离
可能性 从跟踪滤波器测量的可能性
克隆 创建重复跟踪过滤器
光滑的 跟踪滤波器的后向平滑状态估计
retrodict 回溯过滤器到前一个时间步长
retroCorrect 正确的滤镜与OOSM使用倒退
剩余 测量跟踪滤波器的残留和残留噪声
初始化 初始化跟踪滤波器的状态和协方差

例子

全部折叠

创建一个二维trackingEKF对象并使用名称-值对定义StateTransitionJacobianFcn而且MeasurementJacobianFcn属性。使用预定义的匀速运动和测量模型及其雅可比矩阵。

EKF = trackingEKF(@constvel,@cvmeas,[0;0;0;0],...“StateTransitionJacobianFcn”@constveljac,...“MeasurementJacobianFcn”, @cvmeasjac);

运行筛选器。使用预测而且正确的函数来传播状态。你可以打电话预测而且正确的任意顺序,次数不限。在笛卡尔坐标中指定测量值。

测量= [1;1;0];[xpred, Ppred] = predict(EKF);[xcorr, Pcorr] =正确(EKF,测量);[xpred, Ppred] = predict(EKF);[xpred, Ppred] = predict(EKF)
xpred =4×11.2500 0.2500
ppr =4×411.7500 4.7500 00 4.7500 3.7500 00 0 11.7500 4.7500 00 4.7500 3.7500

更多关于

全部展开

算法

扩展卡尔曼滤波器估计由以下非线性随机方程控制的过程的状态:

x k + 1 f x k u k w k t

xk状态是同步的吗kf ()是状态转移函数。随机噪声扰动,wk,可以影响物体的运动。该过滤器还支持简化的表单,金宝app

x k + 1 f x k u k t + w k

若要使用简化形式,请设置HasAdditiveProcessNoise真正的

在扩展卡尔曼滤波器中,测量值也是状态的一般函数:

z k h x k v k t

h (x)k, vk, t)是测量函数,它将测量值确定为状态的函数。典型的测量方法是位置和速度或者位置和速度的函数。测量还可以包括噪声,用vk.同样,过滤器提供了一个更简单的公式。

z k h x k t + v k

若要使用简化形式,请设置HasAdditiveMeasurmentNoise真正的

这些方程代表了物体的实际运动和实际测量。但是,每一步的噪声贡献是未知的,不能确定地建模。只有噪声的统计特性是已知的。

参考文献

[1]布朗,R.G.和P.Y.C.王。随机信号分析及应用卡尔曼滤波导论.第3版。纽约:John Wiley & Sons出版社,1997年。

[2]卡尔曼,R. E. <线性滤波和预测问题的新方法>。美国机械工程师学会学报基础工程学报.第82卷D辑,1960年3月,第35-45页。

布莱克曼,塞缪尔和R.波波利。现代跟踪系统的设计与分析.Artech House.1999。

布莱克曼,塞缪尔。雷达多目标跟踪应用.Artech House, 1986年。

扩展功能

在R2018b中引入