检测转换成objectDetection
格式
这些例子显示如何将实际检测原生格式的传感器objectDetection
对象。objectDetection
标准输入格式对于大多数跟踪过滤器和追踪器工具箱。六个例子逐步显示如何设置objectDetection
与不同的跟踪情况。
一个objectDetection
检测报告必须包含基本信息:时间
和测量
。它还可以包含其他关键属性,包括MeasurementNoise
,SensorIndex
,ObjectClassID
,ObjectClassParameters
,ObjectAttributes
,MeasurementParameters
。设置MeasurementParameters
正确这样一个过滤器或跟踪器可以在创建解释测量是至关重要的objectDetection
。第一个例子显示的基本设置objectDetection
。例子2到5关注如何正确设置MeasurementParameters
。最后一个例子展示了如何设置ObjectClassParameters
。
示例1:转换检测在固定矩形框架
考虑一个二维跟踪场景与一个固定塔和一辆卡车。塔位于原点的坐标系的场景是配备一个雷达传感器。在 = 0秒,卡车的位置(10年,20年,0)米是在积极的旅行 方向5 m / s的速度。
雷达传感器输出的3 d场景坐标系的位置和速度测量,因此,可以编写测量如下:
measurement1 = (10、20、0; 5。0, 0];% (x, y, z, vx; v; vz]
您可以指定额外的属性,比如MeasurmentNoise
,SensorIndex
,ObjectClassID
,ObjectAttributes
为objectDetection
对象。例如,假设位置和速度测量噪声的标准差是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:转换探测移动矩形框架
考虑一个二维跟踪场景自我汽车和一辆卡车。在 = 0秒,汽车位于(20、10,0)米的场景框架。的车是移动5米/秒的速度 场景坐标系的方向。自我的地方(向前)框架车,{ , },从场景坐标系旋转一个角度90度。与前面的示例中,一辆卡车的位置(10年,20年,0)米是在积极的旅行 方向5 m / s的速度。
同时,自我的车是观察卡车在自己的本地框架,{
,
}。在实践中,您可以获得自我的直接从传感器系统测量车。从图中,卡车的测量(10;10;0 5;5;0]关于{
,
}帧的顺序的x, y, z, vx; v,登陆
]。
measurement2 = [10;10;0;5;5;0);% (x, y, z, vx; v; vz]
指定对象检测,您需要指定矩形的坐标变换场景帧{
,
}当地矩形框架{
,
}。您可以使用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;
指定的测量。
集
HasElevation
和HasAzimuth
既假
,因为孩子框架是长方形的。集
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:在移动球面坐标系转换检测
考虑前面的跟踪情况,只是现在的测量是通过扫描雷达球形输出帧。孔径雷达的方向是一致的 方向(一样 方向) = 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;
集HasElevation
和HasAzimuth
来真正的
在球形输出方位角和高度角的孩子。集HasRange
和HasVelocity
既真正的
分别输出范围和数据。
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度的方向 汽车的地方坐标系的方向。
新的测量,表示在新的球面坐标系{ , },有:
measurement4 = [0;0;10 /信德(45);5 /信德(45)];% (az; el rng; rr)
测量的参数,可以指定旋转135度旋转场景坐标系到新的球面坐标系。此外,您可以指定它作为两个连续的旋转:矩形{
,
}矩形{
,
}和矩形{
,
球形{}
,
}。说明了多个帧转换功能的支持金宝appMeasurementParameters
的属性,这个示例使用后一种方法。
第一组测量参数是完全一样的MP2
中使用的示例2。MP2
矩形的旋转{占
,
}的矩形{
,
}。第二组的测量参数,MP4
,您只需要指定矩形的45度旋转{
,
}的球形{
,
}。
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)监控区域。在 = 0秒,无人机在的位置(5、5、1)公里对全球north-east-down (NED)框架。无人机的速度(-50、-100、5)m / s。无人机的方向车身骨架{ , , }对全球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: {}