主要内容

initcvukf

从检测报告中创建恒速无迹卡尔曼滤波器

描述

例子

过滤器= initcvukf (检测创建并初始化一个恒定速度的无迹卡尔曼过滤器从包含的信息检测报告。有关无迹卡尔曼滤波器的更多信息,请参见trackingUKF

函数初始化一个恒定速度状态,其约定与constvelcvmeas, (xvxyvyzvz].

例子

全部折叠

从初始检测报告中创建并初始化一个三维恒速无迹卡尔曼滤波对象。

根据物体位置的初始三维测量(10,200,−5)创建检测报告。

检测= objectDetection (0 (10; 200; 5)“MeasurementNoise”, 1.5 *眼(3),...“SensorIndex”, 1“ObjectClassID”, 1“ObjectAttributes”, {“跑车”, 5});

从检测报告中创建新的筛选器并显示筛选器属性。

过滤器= initcvukf(检测)
filter = trackingUKF with properties: State: [6x1 double] StateCovariance: [6x6 double] stattransitionfcn: @constvel ProcessNoise: [3x3 double] HasAdditiveProcessNoise: 0 MeasurementFcn: @cvmeas MeasurementNoise: [3x3 double] hasadditivmeasurementnoise: 1 Alpha: 1.0000e-03 Beta: 2 Kappa: 0 EnableSmoothing: 0

显示状态。

过滤器。状态
ans =6×110 0 200 0 -5 0

显示状态协方差。

过滤器。状态Covariance
ans =6×61.5000 0000 00 100 0000 00 1 0000 00 1 0000 00 1 0000 00 1 0000 00 1 0000 00

初始化一个恒定速度的无迹卡尔曼滤波器,从一个初始检测报告由初始测量在球坐标。因为物体在x - y平面,不做标高测量。如果你想使用球坐标,那么你必须提供一个测量参数结构作为检测报告的一部分框架字段设置为“球”.设置目标的方位角为45度,射程为1000米,射程速率为-4.0 m/s。

帧=“球”;sensorpos =(-40,0)。';sensorvel =(0; 5。0);宽松=眼(3);

创建测量参数结构。集“HasElevation”.然后,测量包括方位角、距离和距离速率。

measparms =结构(“帧”框架,“OriginPosition”sensorpos,...“OriginVelocity”sensorvel,“定位”宽松的,“HasVelocity”,真的,...“HasElevation”、假);量= (45;1000;4);measnoise =诊断接头([3.0,2,1.0]。^ 2);检测= objectDetection(0,量,“MeasurementNoise”...measnoise,“MeasurementParameters”measparms)
detection = objectDetection with properties: Time: 0 Measurement: [3x1 double] MeasurementNoise: [3x3 double] SensorIndex: 1 ObjectClassID: 0 Measurement: [1x1 struct] ObjectAttributes: {}
过滤器= initcvukf(检测);

显示过滤器状态向量。

disp (filter.State)
732.1068 -2.8284 667.1068 2.1716 0 0

输入参数

全部折叠

检测报告,指定为objectDetection对象。

例子:检测= objectDetection(0,[1;4.5;3],'MeasurementNoise', [1.0 0 0;2.0 0 0;0 0 1.5])

输出参数

全部折叠

Unscented卡尔曼滤波器,返回为trackingUKF对象。

算法

  • 该函数计算过程噪声矩阵,假设时间步长为1秒,加速度标准差为1m /s2

  • 你可以使用这个函数作为FilterInitializationFcn财产的multiObjectTracker对象。

扩展功能

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。

介绍了R2017a