主要内容

trackingEKF

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

描述

一个trackingEKF对象是一种离散时间扩展卡尔曼滤波器,用于跟踪动态状态,如位置和速度自动驾驶场景中可能遇到的物体。这些物体包括汽车、行人、自行车和固定的结构或障碍物。

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

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

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

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

看到扩展卡尔曼滤波器欲知详情。

创建

描述

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

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

例子

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

属性

全部展开

卡尔曼滤波状态,指定为实值-element vector,其中过滤器状态的大小。的价值是根据您使用的运动模型确定的。例如,如果你使用一个二维匀速模型constvel(传感器融合与跟踪工具箱),状态为[x, vx; y; v]是四个。

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

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

例子:(200;0.2)

数据类型:|

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

例子:(20 0.1;0.1 - 1)

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

函数名 函数的目的
constvel 等速状态更新模型
constacc 恒定加速度状态更新模型
constturn 恒定转换率状态更新模型

您也可以编写自己的状态转换函数。状态转换函数的有效语法取决于滤波器是否具有可加过程噪声。属性的值显示了有效的语法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-元素测量向量。你可以使用其中一个函数作为你的测量函数。

函数名 函数的目的
cvmeas 等速测量模型
cameas 恒加速度测量模型
ctmeas 恒定转换率测量模型

你也可以写自己的测量函数。

  • 如果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.的参数参数表示测量函数所需的所有附加参数。

  • 如果HasMeasurementWrapping属性是真正的,您必须另外返回测量包装边界,过滤器使用它来包装测量残差,作为测量函数的第二个输出参数。

    [z(k),bounds] = measurementfcn(__)
    函数必须返回界限作为一个-by-2实值矩阵,其中的大小z (k).在每一行中,第一个和第二个元素分别指定相应度量变量的下界和上界。你可以使用−正表示变量没有下限或上限。

    例如,考虑一个测量函数,它将平台的方位角和距离返回为[方位范围].如果方位角环绕在-180度和180度之间,而范围是无界且非负的,则将函数的第二个输出参数指定为(-180 180;0正]

例子:@cameas

数据类型:function_handle

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

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

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

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

    [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

在过滤器中包装测量残差,指定为逻辑0)或1真正的).当指定为真正的中规定的测量函数MeasurementFcn属性必须返回两个输出参数:

  • 第一个参数是度量值,返回为-element实值向量。

  • 第二个参数是换行边界,返回为-by-2实值矩阵,其中是测量的尺寸。在每一行中,第一个和第二个元素是相应测量变量的下界和上界。你可以使用−正表示变量没有下限或上限。

如果启用此属性,过滤器将根据测量界限包装测量残差,这有助于防止过滤器因不正确的测量残差值而导致发散。

这些测量函数具有预定义的包装边界:

在这些函数中,方位角测量的包裹边界为[-180 180]度,仰角测量的包裹边界为[-90 90]度。其他测量是没有界限的。

请注意

只能在构造筛选器时指定此属性。

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

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

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

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

例子:0.2

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

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

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

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

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

依赖关系

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

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

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

  • 将此属性设置为正整数可启用筛选器对象的OOSM回溯功能。此选项需要传感器融合和跟踪工具箱许可证。当您将此属性设置为N>1,过滤器对象保存过去的状态和状态协方差历史直到最后N+ 1的修正。您可以使用OOSM和retrodict(传感器融合与跟踪工具箱)而且retroCorrect(传感器融合与跟踪工具箱)(或retroCorrectJPDA(传感器融合与跟踪工具箱)对于多个OOSMs)对象函数,以降低估计状态的不确定性。

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

对象的功能

预测 预测跟踪滤波器的状态和状态估计误差协方差
正确的 利用跟踪滤波器修正状态和状态估计误差协方差
correctjpda 利用跟踪滤波器和JPDA修正状态和状态估计误差协方差
距离 跟踪滤波器的当前测量值与预测测量值之间的距离
可能性 从跟踪滤波器测量的可能性
克隆 创建重复跟踪过滤器
剩余 测量跟踪滤波器的残留和残留噪声
初始化 初始化跟踪滤波器的状态和协方差
tunableProperties(传感器融合与跟踪工具箱) 获得过滤器的可调属性
setTunedProperties(传感器融合与跟踪工具箱) 将属性设置为调优值

例子

全部折叠

创建一个二维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,可以影响物体的运动。该过滤器还支持简化的表单,万博1manbetx

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

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

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

参考文献

[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年。

扩展功能

版本历史

在R2017a中引入