文档

trackingKF类

线性卡尔曼滤波器

描述

trackingKF类创建一个离散时间线性卡尔曼滤波器,用于跟踪在自动驾驶场景中可能遇到的物体的位置和速度,如汽车、行人、自行车和静止结构或障碍物。卡尔曼滤波是在对过程进行测量时估计过程演化状态的递归算法。当状态的演化遵循线性运动模型,且测量值为状态的线性函数时,滤波器是线性的。过程和测量都可能有附加噪声。该过滤器还允许可选的控制或力量作用于车辆。当过程噪声和测量噪声均为高斯噪声时,卡尔曼滤波器是线性过程的最优最小均方误差状态估计器。

你可以用两种方式使用这个对象:

  • 第一种方法是明确指定运动模型。设置运动模型属性,MotionModel,自定义然后使用StateTransitionModel属性设置状态转移矩阵。

  • 第二种方法是设置MotionModel属性设置为预定义的状态转换模型:

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

建设

过滤器= trackingKF返回离散时间、二维等速运动对象的线性卡尔曼滤波对象。的卡尔曼滤波器使用默认值StateTransitionModelMeasurementModel,ControlModel属性。的MotionModel属性设置为“二维恒定速度”

过滤器= trackingKF (FH指定状态转换模型,F,以及测量模型,H.的MotionModel属性设置为“自定义”

过滤器= trackingKF (FHG还指定了控制模型,G.的MotionModel属性设置为“自定义”

过滤器= trackingKF (“MotionModel”模型设置运动模型属性,MotionModel,模型

过滤器= trackingKF (___的名字价值)使用一个或多个参数配置卡尔曼滤波器的属性的名字价值对参数。任何未指定的属性都接受默认值。

属性

全部展开

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

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

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

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

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

数据类型:

状态误差协方差,指定为一个正标量或一个正定实值——- - - - - -矩阵,是国家的大小。将值指定为标量将创建——- - - - - -单位矩阵。这个矩阵表示状态的不确定性。

例子:(20 0.1;0.1 - 1]]

数据类型:

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

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

[x, vx)

[1 dt;0 1]

“二维恒定速度”

[x, vx; y v)

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

“3 d恒定速度”

[x, vx; y, v, z,登陆)

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

“一维恒定加速度”

[x, vx; ax)

[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 ax, y, v, ay, z, vz; az)

块对角矩阵[1 dt 0.5 * dt ^ 2;0 1 dt;0 0 1]块重复xy和空间z

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

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

数据类型:字符

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

例子:[1 0;1 2]

依赖关系

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

数据类型:

控件模型,指定为——- - - - - -l矩阵。状态向量的维数是和吗l是控制或力量的数量。控制模型增加了控制对状态演化的影响。

例子:[.010.2]

数据类型:

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

例子:[1.0 - 0.05;0.05 - 2

数据类型:

度量模型,指定为实值N——- - - - - -矩阵,N测量矢量的大小是和吗为状态向量的大小。的度量模型是一个线性矩阵,它根据预测状态确定预测的测量值。

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

数据类型:

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

例子:0.2

数据类型:

方法

克隆 创建具有相同属性值的线性卡尔曼滤波对象
正确的 修正卡尔曼状态向量和状态协方差矩阵
距离 从测量值到预测测量值的距离
预测 预测线性卡尔曼滤波状态

例子

全部折叠

创建一个线性卡尔曼滤波器二维恒定的速度运动模型。假设测量由物体的x - y的位置。

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

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: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 (“y [m]”)网格xt = [x-2 pos(1,1)+0.1 pos(end,1)+0.1];Yt = [y pos(1,2) pos(end,2)];文本(xt,欧美,{“第一测量”“第一位置”的最后一个位置})(传说的对象的位置“预测位置”“纠正位置”

更多关于

全部展开

算法

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

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]布朗,R.G.,王p.y.c。《随机信号分析与应用卡尔曼滤波导论》第三版。纽约:约翰·威利父子公司,1997年。

R. E.卡尔曼线性滤波和预测问题的新方法asme基础工程学报,第82卷,D系列,1960年3月,第35-45页。

[3] Blackman,撒母耳。雷达应用的多目标跟踪,Artech House, 1986。

扩展功能

介绍了R2017a

这个话题有用吗?