主要内容

检测转换成objectDetection格式

这些例子显示如何将实际检测原生格式的传感器objectDetection对象。objectDetection标准输入格式对于大多数跟踪过滤器和追踪器工具箱。六个例子逐步显示如何设置objectDetection与不同的跟踪情况。

  • 示例1配置检测在一个固定的矩形框架。

  • 示例2配置检测在一个移动的矩形框架。

  • 示例3配置检测在一个移动的球形框架。

  • 示例4显示了如何表达检测获得的连续旋转。

  • 示例5展示了如何配置三维检测。

  • 例子6展示了如何配置分类检测。

一个objectDetection检测报告必须包含基本信息:时间测量。它还可以包含其他关键属性,包括MeasurementNoise,SensorIndex,ObjectClassID,ObjectClassParameters,ObjectAttributes,MeasurementParameters。设置MeasurementParameters正确这样一个过滤器或跟踪器可以在创建解释测量是至关重要的objectDetection。第一个例子显示的基本设置objectDetection。例子2到5关注如何正确设置MeasurementParameters。最后一个例子展示了如何设置ObjectClassParameters

示例1:转换检测在固定矩形框架

考虑一个二维跟踪场景与一个固定塔和一辆卡车。塔位于原点的坐标系的场景是配备一个雷达传感器。在 t = 0秒,卡车的位置(10年,20年,0)米是在积极的旅行 X 方向5 m / s的速度。

雷达传感器输出的3 d场景坐标系的位置和速度测量,因此,可以编写测量如下:

measurement1 = (10、20、0; 5。0, 0];% (x, y, z, vx; v; vz]

您可以指定额外的属性,比如MeasurmentNoise,SensorIndex,ObjectClassID,ObjectAttributesobjectDetection对象。例如,假设位置和速度测量噪声的标准差是10 m和1 m / s,分别可以定义的测量误差协方差矩阵为:

measurementNoise1 =诊断接头((10 * 1 (3,1);1 (3,1)]);

创建一个objectDetection使用这些值。

time1 = 0;%检测时间detect1 = objectDetection (time1 measurement1,“MeasurementNoise”measurementNoise1)
detect1 = objectDetection属性:时间:0测量:x1双[6]MeasurementNoise: [6 x6双]SensorIndex: 1 ObjectClassID: 0 ObjectClassParameters: [] MeasurementParameters: {} ObjectAttributes: {}

示例2:转换探测移动矩形框架

考虑一个二维跟踪场景自我汽车和一辆卡车。在 t = 0秒,汽车位于(20、10,0)米的场景框架。的车是移动5米/秒的速度 Y 场景坐标系的方向。自我的地方(向前)框架车,{ x , y },从场景坐标系旋转一个角度90度。与前面的示例中,一辆卡车的位置(10年,20年,0)米是在积极的旅行 X 方向5 m / s的速度。

同时,自我的车是观察卡车在自己的本地框架,{ x , y }。在实践中,您可以获得自我的直接从传感器系统测量车。从图中,卡车的测量(10;10;0 5;5;0]关于{ x , y }帧的顺序的x, y, z, vx; v,登陆]。

measurement2 = [10;10;0;5;5;0);% (x, y, z, vx; v; vz]

指定对象检测,您需要指定矩形的坐标变换场景帧{ X , Y }当地矩形框架{ x , y }。您可以使用MeasurementParameters的属性objectDetection这些转换参数来指定。在转换中,场景框架框架,自我汽车本地框架孩子框架。

  • 框架属性集孩子框架式的矩形的(在这个例子中)或“球形的

  • OriginPosition属性集的位置的子帧的父框架。

  • OriginVelocity属性集的速度的子帧的父框架。

MP2 =结构();MP2。帧=“矩形”;MP2。OriginPosition = [20;10;0);MP2。OriginVelocity = [0;5;0);

指定旋转使用欧拉角的旋转矩阵转换。集IsParentToChild为true指示从父母对孩子帧旋转。

rotAngle2 = (90 0 0);%(偏航、俯仰、行)rotQuat2 =四元数(rotAngle2,“Eulerd”,“ZYX股票”,“帧”);rotMatrix2 = rotmat (rotQuat2,“帧”);MP2。取向= rotMatrix2;MP2。IsParentToChild = true;

指定的测量。

  • HasElevationHasAzimuth,因为孩子框架是长方形的。

  • HasRange真正的使位置测量。

  • HasVelocity真正的使速度测量。

MP2。HasElevation = false;MP2。HasAzimuth = false;MP2。HasRange = true;MP2。HasVelocity = true;

创建objectDetection对象和指定MeasurementParameters财产。

time2 = 0;detection2 = objectDetection (time2 measurement2,“MeasurementParameters”,MP2)
detection2 = objectDetection属性:时间:0测量:x1双[6]MeasurementNoise: [6 x6双]SensorIndex: 1 ObjectClassID: 0 ObjectClassParameters: [] MeasurementParameters: [1 x1 struct] ObjectAttributes: {}

检测来验证对象,您可以使用cvmeas测量功能重新生成测量。的cvmeas函数可以把目标的实际状态和测量参数作为输入。的状态输入cvmeas的订单(x, vx; y, v, z,登陆]。如以下输出所示,同意的结果measurement2

state2 = [10; 5、20 0, 0, 0);%的卡车[x, vx; y; v; z; vz]cvmeas2 = cvmeas (state2, MP2)%测量[x, y, z, vx; v; vz]
cvmeas2 =6×110.0000 - 10.0000 -5.0000 - -5.0000 0

示例3:在移动球面坐标系转换检测

考虑前面的跟踪情况,只是现在的测量是通过扫描雷达球形输出帧。孔径雷达的方向是一致的 Y 方向(一样 x 方向) t = 0秒。

因为卡车和汽车之间的相对速度在视线方向,测量,的顺序(方位;海拔高度;范围;数据,可以得到如下:

measurement3 = [45;0;10 /信德(45);5 /信德(45)];% (az; el rng; rr)。单位度。

指定的测量参数。

MP3 =结构();MP3。帧=“球”;%孩子框架是球形。MP3。OriginPosition = [20;10;0);MP3。OriginVelocity = [0;5;0);%指定旋转。rotAngle3 = (90 0 0);rotQuat3 =四元数(rotAngle3,“Eulerd”,“ZYX股票”,“帧”);rotMatrix3 = rotmat (rotQuat3,“帧”);MP3。取向= rotMatrix3;MP3。IsParentToChild = true;

HasElevationHasAzimuth真正的在球形输出方位角和高度角的孩子。集HasRangeHasVelocity真正的分别输出范围和数据。

MP3。HasElevation = true;MP3。HasAzimuth = true;MP3。HasRange = true;MP3。HasVelocity = true;

创建objectDetection对象。

历史问题= 0;measurement3 detection3 = objectDetection(历史问题,“MeasurementParameters”、MP3)
detection3 = objectDetection属性:时间:0测量:x1双[4]MeasurementNoise: [4 x4双]SensorIndex: 1 ObjectClassID: 0 ObjectClassParameters: [] MeasurementParameters: [1 x1 struct] ObjectAttributes: {}

验证结果使用cvmeas。结果同意measurement3

state3 = [10; 5、20 0, 0, 0);% [x, vx; y; v; z; vz]cvmeas3 = cvmeas (state3、MP3)% (az; el rng; rr)
cvmeas3 =4×145.0000 0 14.1421 - -7.0711

示例4:三个坐标系之间的转换检测

考虑前面的跟踪场景中,只是现在孔径雷达旋转45度的方向 x 汽车的地方坐标系的方向。

新的测量,表示在新的球面坐标系{ x , y },有:

measurement4 = [0;0;10 /信德(45);5 /信德(45)];% (az; el rng; rr)

测量的参数,可以指定旋转135度旋转场景坐标系到新的球面坐标系。此外,您可以指定它作为两个连续的旋转:矩形{ X , Y }矩形{ x , y }和矩形{ x , y 球形{} x , y }。说明了多个帧转换功能的支持金宝appMeasurementParameters的属性,这个示例使用后一种方法。

第一组测量参数是完全一样的MP2中使用的示例2MP2矩形的旋转{占 X , Y }的矩形{ x , y }。第二组的测量参数,MP4,您只需要指定矩形的45度旋转{ x , y }的球形{ x , y }。

MP4 =结构();MP4。帧=“球”;MP4。OriginPosition = [0;0;0);%托管的位置。MP4。OriginVelocity = [0;0;0);%同源速度。%指定旋转。rotAngle4 = [45 0 0];rotQuat4 =四元数(rotAngle4,“Eulerd”,“ZYX股票”,“帧”);rotMatrix4 = rotmat (rotQuat4,“帧”);MP4。取向= rotMatrix4;MP4。IsParentToChild = true;%在球形的孩子中指定输出帧。MP4。HasElevation = true;MP4。HasAzimuth = true;MP4。HasRange = true;MP4。HasVelocity = true;

创建相结合MeasurementParameters输入,货币政策委员会

MPc = (MP4 MP2);

注意,测量参数的顺序问题。指定的货币政策委员会代表第一个执行相应的坐标变换MP2然后执行相应的坐标变换MP4

接下来,创建objectDetection对象。

time4 = 0;detection4 = objectDetection (time4 measurement4,“MeasurementParameters”,MPc)
detection4 = objectDetection属性:时间:0测量:x1双[4]MeasurementNoise: [4 x4双]SensorIndex: 1 ObjectClassID: 0 ObjectClassParameters: [] MeasurementParameters: [1 x2 struct] ObjectAttributes: {}

验证结果使用cvmeas。结果同意measurement4

state4 = [10; 5、20 0, 0, 0);% [x, vx; y; v; z; vz]cvmeas4 = cvmeas (state4 MPc)% (az; el rr; rrate)
cvmeas4 =4×10.0000 0 14.1421 - -7.0711

例5:转换3 d检测

考虑一个无人机(UAV)监控区域。在 t = 0秒,无人机在的位置(5、5、1)公里对全球north-east-down (NED)框架。无人机的速度(-50、-100、5)m / s。无人机的方向车身骨架{ x , y , z }对全球NED给出帧(-120、2、2)学位偏航,音高,滚。与此同时,一辆车的位置(1 1 0)公里正在东移30 m / s的速度。汽车使用的无人机措施雷达系统与自己的身体轴。

基于这些信息,指定的运动参数测量转换。

指定帧类型、源位置和起源无人机车身骨架的速度。

里=结构();里。帧=“球”;里。OriginPosition = [5000;5000;-1000);里。OriginVelocity = [-50;-100;5);

指定的旋转NED帧无人机主体框架。

Rot_angle5 = (-120 2);%(偏航、俯仰、滚)Rot_quat5 =四元数(Rot_angle5,“Eulerd”,“ZYX股票”,“帧”);Rot_matrix5 = rotmat (Rot_quat5,“帧”);里。取向= Rot_matrix5;里。IsParentToChild = true;

指定输出测量球面坐标系。

里。HasElevation = true;里。HasAzimuth = true;里。HasRange = true;里。HasVelocity = true;

你可以获得直接从无人机的雷达系统测量。在这里,您使用cvmeas函数获取的顺序测量方位;海拔范围;数据。

car_state5 = [1000; 0; 1000; 30 0; 0];% [x, vx; y; v; z; vz]。measurement5 = cvmeas (car_state5里);meas_az5 = measurement5 (1)
meas_az5 = -14.6825
meas_el5 = measurement5 (2)
meas_el5 = 12.4704
meas_rng5 = measurement5 (3)
meas_rng5 = 5.7446 e + 03
meas_rr5 = measurement5 (4)
meas_rr5 = -126.2063

仰角被定义为一个角度从xy平面到z方向。这就是为什么仰角是正对地面目标相对于无人机。本公约使用整个工具箱。

方位角的测量噪声,海拔高度、范围、和数据[1,1 20 2],分别。同时,雷达的索引2,雷达可以探测对象归为1的类型的汽车的

index5 = 2;covariance5 =诊断接头([1;1;20;2]);classID5 = 1;

创建一个objectDetection为检测对象。

time5 = 0;检测= objectDetection (time5 measurement5,“SensorIndex”index5,“MeasurementNoise”covariance5,“ObjectClassID”classID5,“MeasurementParameters”里)
检测与属性= objectDetection:时间:0测量:x1双[4]MeasurementNoise: [4 x4双]SensorIndex: 2 ObjectClassID: 1 ObjectClassParameters: [] MeasurementParameters: [1 x1 struct] ObjectAttributes: {}

示例6:分类检测

考虑一个视觉跟踪场景,相机帧给一个对象探测器。在这种情况下,检测通常提供一个对象的分类。考虑一个对象探测器输出边界框检测并将对象分为以下类{””、“行人”、“自行车”}。探测器的数据被混淆矩阵C。创建一个边界框的检测测量。”行人的分类,和混淆矩阵C如下定义

C = [0.9 0.05 0.05;0.05 0.9 0.05;0.05 0.05 0.9);ClassID = 2;%行人ClassParams =结构(“ConfusionMatrix”C);boundingbox = (250 140 300 400);%边界框的左上角宽度高度坐标,边界框(检测= objectDetection(0,大小)ObjectClassID = ClassID ObjectClassParameters =结构(“ConfusionMatrix”C))
检测与属性= objectDetection:时间:0测量:[250 140 300 400]MeasurementNoise: [4 x4双]SensorIndex: 1 ObjectClassID: 2 ObjectClassParameters: [1 x1 struct] MeasurementParameters: {} ObjectAttributes: {}

另请参阅