主要内容

trackingkf.

用于目标跟踪的线性卡尔曼滤波器

描述

A.trackingkf.对象是用于跟踪位置和速度的离散时间线性卡尔曼滤波器在自动驾驶场景中可能遇到的物体。这些物体包括汽车、行人、自行车和固定的建筑物或障碍物。

卡尔曼滤波是在对过程进行测量时估计过程演化状态的递归算法。当状态的演化遵循线性运动模型,且测量值为状态的线性函数时,滤波器是线性的。过滤器假设过程和测量都有附加噪声。当过程噪声和测量噪声均为高斯噪声时,卡尔曼滤波器是线性过程的最优最小均方误差状态估计器。

您可以通过以下方式使用此对象:

  • 明确设置运动模型。设置运动模型属性,MotionModel,风俗,然后使用StateTransitionModel属性设置状态转移矩阵。

  • 设置MotionModel属性设置为预定义的状态转换模型:

    运动模型
    “一维恒定速度”
    “1D恒定加速度”
    “二维恒定速度”
    “二维恒定加速度”
    “三维恒定速度”
    三维加速度恒定的

创建

描述

过滤器= trackingKF为离散时间、二维、匀速运动对象创建线性卡尔曼滤波对象。的卡尔曼滤波器使用默认值StateTransitionModel,测量模型,ControlModel.属性。函数还设置MotionModel财产“二维恒定速度”

筛选= trackingkf(F,H)指定状态转换模型,F,以及测量模型,H. 使用此语法,函数还设置MotionModel财产“自定义”

筛选= trackingkf(F,H,G)还指定控制模型,G. 使用此语法,函数还设置MotionModel财产“自定义”

筛选= trackingkf(“运动模型”,模型)设置运动模型属性,MotionModel,模型

实例

筛选= trackingkf(___,的名字,价值)通过使用一个或多个配置Kalman滤波器的属性的名字,价值对参数和以前的任何语法。任何未指定的属性都占用默认值。

属性

全部展开

卡尔曼滤波状态,指定为实值M元向量。M是状态向量的大小。中描述了典型的状态向量大小MotionModel财产。当初始状态指定为标量时,状态将扩展为一个M元向量。

在这些情况下,你可以将状态设置为标量:

  • MotionModel属性设置为“自定义”,M由状态转移模型的大小决定。

  • MotionModel属性设置为“二维恒定速度”,“三维恒定速度”,“二维恒定加速度”,或三维加速度恒定的,则必须首先将状态指定为M元向量。可以为状态向量的所有后续规范使用标量。

如果需要具有单精度浮点变量的过滤器,请将运动模型指定为预定义模型,然后指定状态作为单个精度向量变量。例如

filter = trackingKF('MotionModel','2D Constant Velocity','State',single([1;2;3;4]))

例子:[200;0.2;-40;-0.01]

数据类型:|

状态误差协方差,指定为正标量或正定实值M-经过-M矩阵,其中M是国家的大小。指定值作为标量创建一个倍数M-经过-M单位矩阵。这个矩阵表示状态的不确定性。

例子:[20 0.1; 0.1 1]

数据类型:

卡尔曼滤波运动模型,设为“自定义”或者这些预定义模型中的一个。在这种情况下,状态向量和状态转移矩阵采用表中指定的形式。

运动模型 状态向量形式 状态转移模型的形式
“一维恒定速度”

[x, vx)

[1 dt;0 1]

“二维恒定速度”

[x;vx;y;vy]

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

“三维恒定速度”

[x;vx;y;vy;z;vz]

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

“1D恒定加速度”

[x; vx;斧头]

[1 dt 0.5*dt^2;0 1 dt;0 0 1]

“二维恒定加速度”

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

块对角线矩阵[1 dt 0.5*dt^2;0 1 dt;0 0 1]block repeat for thexY空间维度

三维加速度恒定的

[x; vx,斧头; y; vy; yy; z; vz; az]

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

ControlModel.属性定义时,状态转换模型的每个非零元素都被替换为dt

什么时候MotionModel“自定义”,必须指定状态转换模型矩阵、测量模型矩阵和控制模型矩阵(可选)作为卡尔曼滤波器的输入参数。

数据类型:char

时间步长之间的状态转换模型,指定为实值M-经过-M矩阵。M是状态向量的大小。在没有控制和噪声的情况下,状态转换模型将任何时间步的状态与前一步的状态相关联。状态转移模型是滤波器时间步长的函数。

例子:[1 0;1 2]

依赖关系

启用此属性,设置MotionModel“自定义”

数据类型:

控件模型,指定为M-经过-L矩阵。M是国家矢量的尺寸和L是控制或力量的数量。控制模型增加了控制对状态演化的影响。

例子:[.01.0.2]

数据类型:

过程噪声的协方差,指定为正标量或M-经过-M矩阵M是状态的维度。如果将此属性指定为标量,则筛选器将该值用作M-经过-M单位矩阵。过程噪声表示动态模型中的不确定性,并假定为零均值高斯白噪声。

提示

如果指定MotionModel属性为任何预定义的运动模型,则在构造过程中自动生成相应的过程噪声,并在传播过程中更新。在这种情况下,不需要指定ProcessNoise财产。事实上,在对象构造期间,过滤器忽略了您的过程噪声输入。如果要指定进程噪声而不是默认值,请使用trackingEKF对象。

数据类型:

测量模型由状态向量,指定为实值N-经过-M矩阵,其中N是测量向量的大小,并且M是状态向量的大小。这个测量模型是从预测状态确定预测测量值的线性矩阵。

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

数据类型:

测量噪声的协方差,指定为正标量或正定实值N-经过-N矩阵,其中N为测量向量的大小。如果将此属性指定为标量,则筛选器将该值用作N-经过-N单位矩阵。测量噪声表示测量的不确定度,假设为零均值高斯白噪声。

例子:0.2

数据类型:

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

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

  • 使用MaxNumMoothingSteps跟踪滤波器的特性。

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

依赖关系

要启用此属性,请设置使能平滑财产真正的

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

  • 将此属性设置为0禁用过滤对象的OOSM反向功能。

  • 将此属性设置为正整数可以启用筛选器对象的OOSM反向功能。此选项需要传感器融合和跟踪工具箱许可证。此外,您不能在筛选器中使用自定义状态转换函数或度量函数。启用OOSM后,筛选器对象保存过去的状态和状态协方差历史。可以使用OOSM和追溯(传感器融合与跟踪工具箱)retroCorrect(传感器融合与跟踪工具箱)目标函数,以减少估计状态的不确定性。

增加此属性的值会增加必须为状态历史分配的内存量,但是您可以处理延迟更长延迟后到达的OOSM。注意,随着延迟变长,使用OOSM的不确定性降低的效果会降低。

目标函数

预测 预测线性卡尔曼滤波器的状态和状态估计误差协方差
对的 使用跟踪滤波器校正状态和状态估计误差协方差
更正JPDA 使用跟踪过滤器和JPDA的正确状态和状态估计错误协方差
距离 跟踪滤波器的电流和预测测量值之间的距离
可能 跟踪滤波器测量的可能性
克隆 创建重复跟踪过滤器
残余物 测量残差和跟踪滤波器的残差噪声
初始化 初始化跟踪滤波器的状态和协方差

例子

全部崩溃

创建一个使用a的线性卡尔曼筛选器二维等速运动模型。假设测量由对象的x-y地点。

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

x = 5.3;y = 3.6;initialstate = [x; 0; y; 0];kf = trackingkf(“运动模型”,“二维恒定速度”,'状态', initialState);

从恒定速度轨迹创建测量位置。

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

预测并更正对象的状态。

对于k = 1:size(pos,1) pstates(k,:) = predict(KF,T);cstates (k) =正确(KF, pos (k,:));终止

绘制轨迹。

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

图中包含一个轴对象。axis对象包含6个类型为line, text的对象。这些物体表示物体位置,预测位置,修正位置。

更多关于

全部展开

算法

卡尔曼滤波通过估计目标的状态来描述目标的运动。这种状态通常包括物体的位置和速度,也可能包括物体的加速度。这种状态可以跨越一个、两个或三个空间维度。最常见的是,使用卡尔曼滤波器来模拟恒定速度或恒定加速度的运动。线性卡尔曼滤波假设过程服从以下线性随机差分方程:

x K + 1. = F K x K + G K U K + v K

xK状态是否处于正常状态KFK为状态转移模型矩阵。GK为控制模型矩阵。UK表示作用于对象的已知广义控制。除了规定的运动方程外,运动还可能受到随机噪声扰动的影响,vK. 状态、状态转移矩阵和控件一起提供了足够的信息,可以在没有噪声的情况下确定对象的未来运动。

在卡尔曼滤波器中,测量值也是状态的线性函数,

Z K = H K x K + W K

在哪里HK为测量模型矩阵。该模型将度量表示为状态的函数。一个测量可以包括一个物体的位置、位置和速度,或它的位置、速度和加速度,或这些量的一些函数。测量还包括噪声扰动,WK

在没有噪声的情况下,这些方程可以模拟物体的实际运动和实际测量结果。每一步的噪声贡献是未知的,无法建模。只有噪声协方差矩阵是已知的。仅利用噪声协方差的知识来更新状态协方差矩阵。

有关线性卡尔曼滤波算法的简要说明,请参阅线性卡尔曼滤波器

参考

[1] Brown、R.G.和P.Y.C.Wang。随机信号分析与应用卡尔曼滤波简介. 第三版。纽约:约翰·威利父子公司,1997年。

R. E.卡尔曼线性滤波和预测问题的新方法ASME交易-基础工程杂志,第82卷,D辑,1960年3月,第35-45页。

[3] 布莱克曼,塞缪尔。多目标跟踪与雷达应用. 阿泰克之家。1986

扩展功能

R2017a中引入