为驾驶场景生成视觉检测
的visionDetectionGenerator
系统对象™产生从一个单眼相机传感器安装在一个自我检测车辆。所有的检测都是自我的参考坐标系统车辆或车载传感器。您可以使用visionDetectionGenerator
对象包含演员和轨迹在一个场景中,您可以创建使用drivingScenario
对象。使用一个统计模式,发电机可以模拟真实的检测还添加随机噪声和产生错误的报警检测。此外,您可以使用visionDetectionGenerator
对象创建的输入multiObjectTracker
。在构建场景使用驾驶场景设计师应用,相机传感器安装在自我车辆输出visionDetectionGenerator
对象。
产生视觉检测:
创建visionDetectionGenerator
对象并设置其属性。
调用对象的参数,就好像它是一个函数。
了解更多关于系统对象是如何工作的,看到的系统对象是什么?(MATLAB)。
创建一个视觉检测发电机对象使用默认属性值。传感器
= visionDetectionGenerator
创建一个视觉检测发电机对象使用传感器
= visionDetectionGenerator (cameraConfig
)monoCamera
配置对象,cameraConfig
。
属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放
函数打开它们。
如果一个属性可调在任何时候,你可以改变它的值。
改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象(MATLAB)。
DetectorOutput
- - - - - -类型的检测传感器所产生的“只将对象”
(默认)|“只道”
|“道与阻塞”
|车道和对象的
指定类型的探测传感器,产生的“只将对象”
,“只道”
,“道与阻塞”
,或车道和对象的
。
当设置为“只将对象”
,只有检测到演员。
当设置为“只道”
,只有检测到车道。
当设置为“道与阻塞”
只检测到车道,但演员在相机的视野可以削弱传感器检测通道的能力。
当设置为车道和对象的
传感器生成对象检测和阻挡车道检测。
例子:“道与阻塞”
数据类型:字符
|字符串
SensorIndex
- - - - - -独特的传感器标识符独特的传感器标识符指定为一个正整数。这个属性区分检测来自不同传感器的多传感器系统。
例子:5
数据类型:双
UpdateInterval
- - - - - -需要传感器更新之间的时间间隔0.1
|积极的真正的标量需要传感器更新之间的时间间隔,指定为一个积极的真正的标量。的drivingScenario
对象调用视觉检测发电机以固定时间间隔。视觉检测器生成新定义的检测间隔UpdateInterval
财产。的值UpdateInterval
属性必须是一个整数倍数的模拟时间间隔。更新请求之间的传感器更新间隔不包含检测。单位是秒。
例子:5
数据类型:双
SensorLocation
- - - - - -传感器的位置3.4 [0]
|(x, y)
向量视觉传感器的位置中心,作为一个指定(x, y)
。的SensorLocation
和高度
属性定义的坐标视觉传感器对自我车辆坐标系。默认值对应于一个前置传感器安装在汽车仪表板上。单位是米。
例子:0.1 [4]
数据类型:双
高度
- - - - - -传感器高度地平面1.1
|积极的真正的标量传感器高度地平面,指定为一个积极的真正的标量。默认值对应于一个前置视觉传感器安装在仪表板的轿车。单位是米。
例子:1.5
数据类型:双
偏航
- - - - - -偏航角的视觉传感器0
|真正的标量偏航角的视觉传感器,指定为一个真正的标量。偏航角是自我的中心线的夹角的down-range轴车辆和视觉传感器。积极的偏航角对应于一个顺时针旋转时的正方向z设在自我的工具坐标系。单位是在度。
例子:4
数据类型:双
球场
- - - - - -螺旋角的视觉传感器0
|真正的标量螺旋角的视觉传感器,指定为一个真正的标量。螺旋角是角down-range轴之间的视觉传感器和x - y飞机的自我车辆坐标系。一个积极的螺旋角对应于一个顺时针旋转时的正方向y设在自我的工具坐标系。单位是在度。
例子:3
数据类型:双
卷
- - - - - -横摇角的视觉传感器0
|真正的标量横摇角的视觉传感器,指定为一个真正的标量。卷角的旋转角down-range轴周围的视觉传感器x设在自我的工具坐标系。积极的横摇角对应于一个顺时针旋转时的正方向x设在的坐标系统。单位是在度。
例子:4
数据类型:双
intrinsic
- - - - - -内在的视觉传感器的标定参数cameraIntrinsics (800 [800], [320 - 240], [480 - 640])
(默认)|cameraIntrinsics
对象内在视觉传感器的标定参数,指定为一个cameraIntrinsics
对象。
FieldOfView
- - - - - -角的视野视觉传感器这个属性是只读的。
角的视野视觉传感器,指定为一个实值向量1×2积极的价值观,[azfov, elfov]
。领域的观点定义了传感器的方位角和仰角区段的形象。每个组件必须躺在间隔从0度到180度。领域的观点是来自视觉传感器的固有参数。目标之外的视场角度传感器检测。单位是在度。
数据类型:双
MaxRange
- - - - - -最大探测距离150年
|积极的真正的标量最大探测距离,指定为一个积极的真正的标量。传感器无法检测的目标超出了这个范围。单位是米。
例子:200年
数据类型:双
MaxSpeed
- - - - - -最大可检测物体速度50
(默认)|非负实数最大速度检测对象,指定为一个非负实数。单位是米每秒。
例子:10.0
数据类型:双
MaxAllowedOcclusion
- - - - - -最大允许对象的闭塞0.5
(默认)|真正的标量范围(0 1]最大允许对象的闭塞,指定为一个真正的标量范围(0 - 1)。闭塞的分数是一个对象不可见的总表面积的传感器。一个显示对象的价值完全闭塞。单位是无量纲。
例子:0.2
数据类型:双
DetectionProbability
- - - - - -检测概率0.9
(默认)|积极的真正的标量小于或等于1目标的检测概率,指定为一个积极的真正的标量小于或等于1。这个量定义了传感器检测到的概率可检测的对象。一个可检测的对象是一个对象,满足最低可检测尺寸,最大射程,最大速度和最大允许闭塞约束。
例子:0.95
数据类型:双
FalsePositivesPerImage
- - - - - -每张图片数量的错误检测0.1
(默认)|非负实数视觉传感器的错误检测数量为每个图像生成,指定为一个非负实数。
例子:2
数据类型:双
MinObjectImageSize
- - - - - -最小可检测对象的图像大小(15 15)
(默认)|1×2向量的积极的价值观最小高度和宽度视觉传感器检测到的对象在一个图像,作为指定[minHeight, minWidth]
向量的积极的价值观。一个物体的二维投影高度必须大于或等于minHeight
。一个物体的投影宽度必须大于或等于minWidth
。单位是像素。
例子:30 [20]
数据类型:双
BoundingBoxAccuracy
- - - - - -边界框的准确性5
(默认)|积极的真正的标量边界框的准确性,指定为一个积极的真正的标量。这个量定义了探测器的精度可以匹配目标的边界框。单位是像素。
例子:4
数据类型:双
ProcessNoiseIntensity
- - - - - -用于过滤噪声强度的位置和速度测量5
(默认)|积极的真正的标量噪声强度用于过滤位置和速度测量,指定为一个积极的真正的标量。噪声强度定义过程噪声的标准差的内部常速卡尔曼滤波器中使用视觉传感器。过滤器模型使用分段常数白噪声过程噪声加速度模型。噪声强度通常是订单的最大加速度级预期的目标。单位是米/秒2。
例子:2.5
数据类型:双
HasNoise
- - - - - -使添加噪声视觉传感器测量真正的
(默认)|假
使添加噪声视觉传感器测量,指定为真正的
或假
。将此属性设置为真正的
添加噪声传感器测量。否则,测量没有噪音。即使你设置HasNoise
来假
,对象仍然计算MeasurementNoise
每个检测的属性。
数据类型:逻辑
MaxNumDetectionsSource
- - - - - -来源的最大数量的检测报告“汽车”
(默认)|“属性”
的最大数量的检测报告的传感器,指定为“汽车”
或“属性”
。当这个属性设置“汽车”
所有检测传感器报告。当这个属性设置“属性”
、传感器报告不超过指定的检测的数量MaxNumDetections
财产。
数据类型:字符
|字符串
MaxNumDetections
- - - - - -最大数量的检测报告50
(默认)|正整数最大数量的检测报告的传感器,指定为一个正整数。最接近传感器检测报告。
要启用这个特性,设置MaxNumDetectionsSource
财产“属性”
。
数据类型:双
DetectionCoordinates
- - - - - -坐标系统的检测报告“自我笛卡儿”
(默认)|传感器笛卡儿的
坐标系统的检测报告,指定这些值之一:
“自我笛卡儿”
——在自我检测报告车辆笛卡儿坐标系统。
传感器笛卡儿的
——笛卡儿坐标系统传感器的检测报告。
数据类型:字符
|字符串
LaneUpdateInterval
- - - - - -必需的车道检测更新之间的时间间隔0.1
(默认)|积极的真正的标量需要间隔时间车道检测更新,指定为一个积极的真正的标量。的drivingScenario
对象调用视觉检测发电机以固定时间间隔。视觉检测器生成新车道检测间隔定义为这个属性必须是一个整数倍数的模拟时间间隔。更新请求更新间隔之间的传感器不包含车道检测。单位是秒。
例子:0.4
数据类型:双
MinLaneImageSize
- - - - - -最小巷大小的图像20 [5]
(默认)|1×2实值向量最小尺寸的预测车道标记后,可以通过传感器检测到占曲率,指定为1×2实值向量,[minHeight minWidth]
。车道标记必须超过这两个值被检测出来。使用这个属性只在检测车道。单位是像素。
例子:(5、7)
数据类型:双
LaneBoundaryAccuracy
- - - - - -车道边界的准确性3
|积极的真正的标量车道边界的准确性,指定为一个积极的真正的标量。这个属性定义的准确性巷传感器可以将车道边界。单位是像素。使用这个属性只在检测车道。
MaxNumLanesSource
- - - - - -的最大数量的报告道“属性”
(默认)|“汽车”
来源报告的最大数量的车道,指定为“汽车”
或“属性”
。当指定为“汽车”
最大数量的车道是自动计算的。当指定为“属性”
,可以使用MaxNumLanes
属性设置最大数量或车道。
数据类型:字符
|字符串
MaxNumLanes
- - - - - -最大数量的报告道30.
(默认)|正整数最大数量的车道,指定为一个正整数。
要启用这个特性,设置MaxNumLanesSource
财产“属性”
。
数据类型:字符
|字符串
ActorProfiles
- - - - - -演员简介演员概要文件,指定为结构或数组的结构。每个结构都包含物理和雷达的特点,一个演员。
如果ActorProfiles
是一个结构,所有演员传递到吗visionDetectionGenerator
对象使用这个配置文件。
如果ActorProfiles
是一个数组,每个演员都传递到对象必须有一个独特的演员。
为你的驾驶场景生成的数组结构,使用actorProfiles
函数。表显示了有效的结构字段。如果你不指定一个字段,字段设置为默认值。如果没有传递到对象,演员的ActorID
字段是不包括在内。
场 | 描述 |
---|---|
ActorID |
场景定义演员标识符指定为一个正整数。 |
ClassID |
分类标识符指定为一个非负整数。0 被预留给一个未知或未赋值的类的一个对象。 |
长度 |
演员,长度指定为一个积极的真正的标量。默认值是4.7 。单位是米。 |
宽度 |
指定宽度的演员,是一个积极的真正的标量。默认值是1.8 。单位是米。 |
高度 |
高度的演员,指定为一个积极的真正的标量。默认值是1.4 。单位是米。 |
OriginOffset |
演员的旋转中心偏移的几何中心,指定为一个(x,y,z实值向量。旋转中心,或起源,位于底部的中心的演员。车辆,旋转中心是点在地上在后桥的中心。默认值是(0 0 0) 。单位是米。 |
RCSPattern |
雷达横截面的演员,指定为一个元素个数(RCSElevationAngles) ——- - - - - -元素个数(RCSAzimuthAngles) 实值矩阵。默认值是[10 10;10 10] 。单位是每平方米在分贝。 |
RCSAzimuthAngles |
方位角度对应于行RCSPattern 指定为一个向量的值范围(-180、180)。默认值是(-180 180) 。单位是在度。 |
RCSElevationAngles |
高度角对应的行RCSPattern 指定为一个向量的值范围(-90、90)。默认值是(-90 90) 。单位是在度。 |
生成车道检测,lanedets
=传感器(laneboundaries
,时间
)lanedets
从车道边界结构,laneboundaries
。
启用这个语法DetectionOutput
来“只道”
。车道检测器生成车道边界在指定的时间间隔LaneUpdateInterval
财产。
生成车道检测,lanedets
=传感器(演员
,laneboundaries
,时间
)lanedets
从车道边界结构,laneboundaries
。
要启用这种语法,集DetectionOutput
来“道与阻塞”
。车道检测器生成车道边界在指定的时间间隔LaneUpdateInterval
财产。
(___,
还返回的有效的检测报告,numValidDets
)=传感器(___)numValidDets
。
(___,
返回一个逻辑值,numValidDets
isValidTime
)=传感器(___)isValidTime
,这表明UpdateInterval
生成检测的时间已经用完了。
(
返回对象检测,依据
,numValidDets
,isValidTime
,lanedets
,numValidLaneDets
,isValidLaneTime
)=传感器(演员
,laneboundaries
,时间
)依据
和车道检测lanedets
。这个语法也返回有效的车道检测报告的数量,numValidLaneDets
一个标志,isValidLaneTime
,表明是否需要模拟生成车道检测的时间已经用完了。
要启用这种语法,集DetectionOutput
来车道和对象的
。
演员
- - - - - -场景演员的姿势场景演员的姿势,指定为一个结构数组或结构。每个结构对应于一个演员。您可以生成使用这个结构actorPoses
函数。你也可以手动创建这些结构。表显示的字段,生成探测对象使用。所有其他字段将被忽略。
场 | 描述 |
---|---|
ActorID |
场景定义演员标识符指定为一个正整数。 |
位置 |
演员的位置,指定为一个实值向量的形式xyz]。单位是米。 |
速度 |
速度(v)的演员x- - - - - -,y- - - - - -,z方向,指定为一个实值向量的形式vxvyvz]。单位是米每秒。 |
卷 |
横摇角的演员,指定为一个真正的标量。单位是在度。 |
球场 |
螺旋角的演员,指定为一个真正的标量。单位是在度。 |
偏航 |
偏航角的演员,指定为一个真正的标量。单位是在度。 |
AngularVelocity |
角速度(ω)的演员x- - - - - -,y- - - - - -,z方向,指定为一个实值向量的形式ωxωyωz]。单位是每秒度。 |
要启用这个论点,设置DetectorOutput
财产“只将对象”
,“道与阻塞”
,或车道和对象的
。
laneboundaries
- - - - - -车道边界车道边界,车道边界结构的指定为一个数组。表显示了每个结构的字段。
场 | 描述 |
|
车道边界坐标,指定为一个实值N3矩阵,N是车道边界坐标的数量。车道边界坐标定义的位置点的边界指定纵向距离远离自我,沿着中心路。
这个矩阵也包括自我边界坐标在零距离。这些坐标的左派和右派ego-vehicle起源,它坐落在后桥的中心。单位是米。 |
|
在每一行的车道边界曲率坐标 矩阵,指定为一个实值N1的向量。N是车道边界坐标的数量。单位是每米的弧度。 |
|
莱恩的导数边界曲率的每一行坐标 矩阵,指定为一个实值N1的向量。N是车道边界坐标的数量。单位是每平方米的弧度。 |
|
最初的车道边界航向角,指定为一个真正的标量。莱恩的航向角边界相对于自我车辆航向。单位是在度。 |
|
距离自我车辆车道边界的位置,指定为一个真正的标量。抵消一个车道边界左边的自我汽车是正的。一个偏移量的正确自我车辆是负的。单位是米。 |
|
车道边界标记类型,指定这些值之一:
|
|
饱和强度的车道边界标志,指定为一个真正的标量从0到1。的值 |
|
车道边界宽度,指定为一个积极的真正的标量。在两行的车道标记,使用相同的宽度线和线之间的空间。单位是米。 |
|
破折号在虚线,长度指定为一个积极的真正的标量。在两行的车道标记,用于线路长度相同。 |
|
长度在虚线破折号之间的空间,指定为一个积极的真正的标量。在冲两行的车道标记,同样的空间用于线。 |
要启用这个论点,设置DetectorOutput
财产“只道”
,“道与阻塞”
,或车道和对象的
。
数据类型:结构体
时间
- - - - - -当前仿真时间当前仿真时间,指定为一个积极的真正的标量。的drivingScenario
对象调用视觉检测发电机以固定时间间隔。视觉检测器生成新定义的检测间隔UpdateInterval
财产。的值UpdateInterval
和LanesUpdateInterval
属性必须是一个整数倍数的模拟时间间隔。更新请求之间的传感器更新间隔不包含检测。单位是秒。
例子:10.5
数据类型:双
依据
- - - - - -对象检测objectDetection
对象对象检测,作为细胞数组返回objectDetection
对象。每个对象包含这些字段:
财产 | 定义 |
---|---|
时间 |
测量时间 |
测量 |
对象的测量 |
MeasurementNoise |
测量噪声协方差矩阵 |
SensorIndex |
传感器的惟一ID |
ObjectClassID |
对象分类 |
ObjectAttributes |
额外的信息传递给跟踪 |
MeasurementParameters |
所使用的参数初始化函数的非线性卡尔曼跟踪滤波器 |
测量
,MeasurementNoise
,MeasurementParameters
在指定的坐标系统报告吗DetectionCoordinates
财产的visionDetectionGenerator
。
测量
DetectionCoordinates财产 | 坐标测量和测量噪声 |
---|---|
“自我笛卡儿” |
[x, y, z, vx; v; vz] |
传感器笛卡儿的 |
MeasurementParameters
参数 | 定义 |
---|---|
框架 |
枚举类型指示帧用来测量报告。当框架 被设置为“矩形” 在笛卡尔坐标系中,检测报告。当框架 设置“球” 在球坐标中,检测报告。 |
OriginPosition |
三维矢量传感器原点的偏移自我车辆来源。向量来源于SensorLocation 和高度 属性中指定的visionDetectionGenerator 。 |
取向 |
取向的视觉传感器坐标系对自我车辆坐标系。定位来源于偏航 ,球场 ,卷 的属性visionDetectionGenerator 。 |
HasVelocity |
表明测量是否包含速度或范围率组件。 |
ObjectAttributes
属性 | 定义 |
---|---|
TargetIndex |
标识符的演员,ActorID ,生成的检测。假警报,这个值是负的。 |
numValidDets
——数量的检测返回的检测数量,定义为一个非负整数。
当MaxNumDetectionsSource
属性设置为“汽车”
,numValidDets
设置的长度吗依据
。
当MaxNumDetectionsSource
被设置为“属性”
,依据
是一个单元阵列长度决定的吗MaxNumDetections
财产。不超过MaxNumDetections
检测返回。如果检测的数量是不足的MaxNumDetections
,第一个numValidDets
的元素依据
持有有效的检测。其余的元素依据
设置为默认值。
。
数据类型:双
isValidTime
——有效的检测时间0
|1
有效的检测时间,返回0
或1
。isValidTime
是0
当检测更新请求之间的时间更新指定的时间间隔UpdateInterval
。
数据类型:逻辑
lanedets
——车道边界检测车道边界检测,作为一个数组返回结构。结构的字段有:
车道边界检测结构
场 | 描述 |
时间 |
车道检测时间 |
SensorIndex |
唯一标识符的传感器 |
LaneBoundaries |
的数组clothoidLaneBoundary 对象。 |
numValidLaneDets
——数量的检测返回的车道检测数,定义为一个非负整数。
当MaxNumLanesSource
属性设置为“汽车”
,numValidLaneDets
设置的长度吗lanedets
。
当MaxNumLanesSource
被设置为“属性”
,lanedets
是一个单元阵列长度决定的吗MaxNumLanes
财产。不超过MaxNumLanes
车道检测返回。如果检测的数量是不足的MaxNumLanes
,第一个numValidLaneDetections
的元素lanedets
持有有效的车道检测。其余的元素lanedets
设置为默认值。
。
数据类型:双
isValidLaneTime
——有效的车道检测时间0
|1
有效的车道检测时间,返回0
或1
。isValidLaneTime
是0
当车道检测更新请求之间的时间更新指定的时间间隔LaneUpdateInterval
。
数据类型:逻辑
使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj
使用这个语法:
发行版(obj)
生成检测使用前置汽车视觉传感器安装在一个自我。假设有两个目标车辆:
车辆1是直接在前面的自我,以同样的速度移动。
车辆2车辆驾驶速度超过12公里的自我车辆在左边的车道。
所有位置、速度和测量是相对于自我。运行仿真的十个步骤。
dt = 0.1;car1 =结构(“ActorID”,1“位置”(100 0 0),“速度”(5 * 1000/3600 0 0));car2 =结构(“ActorID”2,“位置”(150 10 0),“速度”(12 * 1000/3600 0 0]);
创建一个汽车视觉传感器从自我车辆位置偏移。默认情况下,传感器的位置是在(3.4,0)米的车辆中心和飞机离地面1.1米. .
传感器= visionDetectionGenerator (“DetectionProbability”,1…“MinObjectImageSize”,5 [5],“MaxRange”,200,“DetectionCoordinates”,传感器笛卡儿的);追踪= multiObjectTracker (“FilterInitializationFcn”@initcvkf,…“ConfirmationParameters”(3 - 4),“NumCoastingUpdates”6);
产生视觉检测non-ego演员当他们移动。输出检测单元阵列。只提取检测通过的位置信息multiObjectTracker
,预计只有位置信息。更新每个新的检测的跟踪。
simTime = 0;nsteps = 10;为k = 1: nsteps侦破=传感器([car1 car2], simTime);n =大小(侦破,1);为k = 1: n量=侦破{k} .Measurement (1:3);依据k {}。测量=量;measmtx =侦破{k} .MeasurementNoise (1:3, 1:3);依据k {}。MeasurementNoise = measmtx;结束[confirmedTracks, tentativeTracks allTracks] = updateTracks(记录、侦破、simTime);simTime = simTime + dt;car1。位置= car1。位置+ dt*car1.Velocity; car2.Position = car2.Position + dt*car2.Velocity;结束
使用birdsEyePlot
创建一个俯视的检测。传感器覆盖范围。提取x和y通过将目标的位置测量
领域的细胞变成一个MATLAB®数组。然后,绘制检测使用birdsEyePlot
功能。
BEplot = birdsEyePlot (“XLim”220年[0],“YLim”75年[-75]);caPlotter = coverageAreaPlotter (BEplot,“DisplayName的”,“视觉覆盖范围”);plotCoverageArea (caPlotter sensor.SensorLocation sensor.MaxRange,…sensor.Yaw sensor.FieldOfView (1) detPlotter = detectionPlotter (BEplot,“DisplayName的”,视觉检测的);detPos = cellfun (@ (d) d.Measurement(1:2),精细,“UniformOutput”、假);detPos = cell2mat (detPos ') ';如果~ isempty (detPos) plotDetection (detPlotter detPos)结束
创建一个视觉传感器通过使用单眼相机配置,并生成检测传感器。
指定相机的内部参数和创建一个monoCamera
从这些参数对象。相机上装的是一个自我车辆的高度离地面1.5米和1度到距地面。
focalLength = (800 - 800);principalPoint = (320 - 240);图象尺寸= (480 - 640);intrinsic = cameraIntrinsics (focalLength principalPoint图象尺寸);身高= 1.5;距= 1;monoCamConfig = monoCamera (intrinsic、身高、“节”、沥青);
创建一个视觉检测发电机使用单眼相机配置。
visionSensor = visionDetectionGenerator (monoCamConfig);
生成一个驾驶场景与自我车辆和两个目标的汽车。第一目标位置车30米正前方自我的工具。第二目标位置的车在前面的自我20米,但是3米向左偏移。
场景= drivingScenario;egoVehicle =车辆(场景);targetCar1 =车辆(场景中,“位置”,30 0 0);targetCar2 =车辆(场景中,“位置”[20 3 0]);
使用一个鸟瞰的情节显示车辆轮廓和传感器覆盖范围。
图cep = birdsEyePlot (“XLim”,50 [0],“YLim”20 [-20]);olPlotter = outlinePlotter (cep);(位置、偏航、长度、宽度、originOffset color] = targetOutlines (egoVehicle);plotOutline (olPlotter、位置、偏航、长度、宽度);caPlotter = coverageAreaPlotter (cep),“DisplayName的”,“覆盖范围”,“FaceColor”,“蓝”);plotCoverageArea (caPlotter visionSensor.SensorLocation visionSensor.MaxRange,…visionSensor.Yaw visionSensor.FieldOfView (1))
获得目标的提出了汽车车辆从自我的角度。使用这些姿势来生成检测的传感器。
提出了= targetPoses (egoVehicle);[侦破,numValidDets] = visionSensor(姿势,scenario.SimulationTime);
显示(X,Y)位置的有效检测。对于每个检测,(X,Y)职位的第一个两个值测量
字段。
为i = 1: numValidDets XY =侦破{我}.Measurement (1:2);detXY = sprintf (“检测% d: X = %。2 f米,Y = %。2 f米”,我,XY);disp (detXY)结束
检测1:X = 19.09米,2:Y = 2.79米检测X = 27.81米,Y = 0.08米
创建一个驾驶场景包含一个自我车辆和目标车辆沿着三车道公路旅行。检测车道边界通过使用视觉检测发电机。
场景= drivingScenario;
创建一个三车道公路通过车道规范。
roadCenters = [0 0 0;60 0 0;120年30 0];lspc = lanespec (3);路(场景、roadCenters“道”,lspc);
指定车辆自我中心巷在30 m / s。
egovehicle =车辆(场景);egopath = (1.5 0 0;60 0 0;111年25 0];egospeed = 30;轨迹(egovehicle egopath egospeed);
指定目标车辆旅行前的自我车辆40 m / s和变更车道车辆接近自我。
targetcar =车辆(场景中,“ClassID”2);定位路径= [8 2;60 -3.2;120年33];targetspeed = 40;定位路径轨迹(targetcar, targetspeed);
的3 d视图显示一个追逐情节场景从自我后面车辆。
chasePlot (egovehicle)
创建一个视觉检测发电机检测车道和对象。场上的传感器点一度下降。
visionSensor = visionDetectionGenerator (“节”,1.0);visionSensor。DetectorOutput =车道和对象的;visionSensor。ActorProfiles= actorProfiles(scenario);
运行仿真。
创建一个鸟瞰的情节和相关的策划者。
显示传感器覆盖范围。
显示车道标记。
在路上获得地面实况提出的目标。
获得理想的车道边界点提前60米。
从理想目标姿态和生成检测车道边界。
显示目标的轮廓。
显示对象时检测对象检测是有效的。
显示巷巷时边界检测是有效的。
cep = birdsEyePlot (“XLim”,60 [0],“YLim”35 [-35]);caPlotter = coverageAreaPlotter (cep),“DisplayName的”,“覆盖范围”,…“FaceColor”,“蓝”);detPlotter = detectionPlotter (cep),“DisplayName的”,“对象检测”);lmPlotter = laneMarkingPlotter (cep),“DisplayName的”,“车道标记”);lbPlotter = laneBoundaryPlotter (cep),“DisplayName的”,…“车道边界检测”,“颜色”,“红色”);olPlotter = outlinePlotter (cep);plotCoverageArea (caPlotter visionSensor.SensorLocation,…visionSensor.MaxRange visionSensor.Yaw,…visionSensor.FieldOfView (1));而推进(场景)(lmv, lmf) = laneMarkingVertices (egovehicle);plotLaneMarking (lmv lmPlotter, lmf) tgtpose = targetPoses (egovehicle);lookaheadDistance = 0:0.5:60;磅= laneBoundaries (egovehicle,“XDistance”lookaheadDistance,“LocationType”,“内心”);[obdets, nobdets obValid、lb_dets nlb_dets, lbValid] =…visionSensor (tgtpose磅,scenario.SimulationTime);[objposition, objyaw objlength、objwidth objoriginOffset, color] = targetOutlines (egovehicle);plotOutline (olPlotter、objposition objyaw、objlength objwidth,…“OriginOffset”objoriginOffset,“颜色”、颜色)如果obValid detPos = cellfun (@ (d) d.Measurement (1:2), obdets,“UniformOutput”、假);detPos = vertcat (0 (0, 2), cell2mat (detPos ') ');plotDetection (detPlotter detPos)结束如果lbValid plotLaneBoundary (lbPlotter vertcat (lb_dets.LaneBoundaries))结束结束
从理想的视觉传感器生成检测和比较这些检测的噪声传感器。一个理想的传感器是一个总是生成检测,没有假阳性,没有添加随机噪声。
创建一个驾驶场景
创建一个驾驶场景,在该场景中,前面的自我定位车辆的对角阵目标的汽车。使用这个配置,您可以稍后情节没有检测到目标的测量噪声协方差目标车挡住。
场景= drivingScenario;egoVehicle =车辆(场景);numTgts = 6;x = linspace (20、50、numTgts)”;y = linspace (-20 0, numTgts) ';x = [x, x (1: end-1)];y = [y; - y (1: end-1)];numTgts =元素个数(x);为m = 1: numTgts车辆(场景中,“位置”,(x (m) y (m) 0]);结束
情节的驾驶场景一个鸟瞰的阴谋。
cep = birdsEyePlot (“XLim”,60 [0]);传奇(“隐藏”)olPlotter = outlinePlotter (cep);(位置、偏航、长度、宽度、originOffset color] = targetOutlines (egoVehicle);plotOutline (olPlotter、位置、偏航、长度、宽度、…“OriginOffset”originOffset,“颜色”、颜色)
创建一个理想的视觉传感器
创建一个视觉传感器使用visionDetectionGenerator
系统对象™。产生理想的检测,集DetectionProbability
来1
,FalsePositivesPerImage
来0
,HasNoise
来假
。
DetectionProbability = 1
——传感器总是生成检测目标,只要目标不是闭塞和满足范围,速度,和图像大小的限制。
FalsePositivesPerImage = 0
——传感器检测来自驾驶场景中唯一真正的目标。
HasNoise = false
——传感器不添加随机噪声目标的位置和速度。然而,objectDetection
对象返回的传感器测量噪声值设置为噪声方差,如果补充道HasNoise
是真正的
。这些噪声值,你可以处理的理想检测使用multiObjectTracker
。这种技术是非常有用的分析策略滞后而无需运行耗时的蒙特卡罗模拟。
idealSensor = visionDetectionGenerator (…“SensorIndex”,1…“UpdateInterval”scenario.SampleTime,…“SensorLocation”(0.75 * egoVehicle。轴距0),…“高度”,1.1,…“节”0,…“intrinsic”cameraIntrinsics(800, 240年[320],[480]640),…“BoundingBoxAccuracy”,50岁,…%的噪音大,便于说明“ProcessNoiseIntensity”5,…“MaxRange”现年60岁的…“DetectionProbability”,1…“FalsePositivesPerImage”0,…“HasNoise”假的,…“ActorProfiles”actorProfiles(场景))
idealSensor = visionDetectionGenerator属性:SensorIndex: 1 UpdateInterval: 0.0100 SensorLocation:[2.1000 0]高度:1.1000偏航:0节:0卷:0 intrinsic: [1 x1 cameraIntrinsics] DetectorOutput:“对象只有”FieldOfView: [43.6028 - 33.3985] MaxRange: 60 MaxSpeed: 50 MaxAllowedOcclusion: 0.5000 MinObjectImageSize: [15 15] DetectionProbability: 1 FalsePositivesPerImage: 0显示所有属性
理想的视觉传感器的覆盖范围。
传奇(“显示”)caPlotter = coverageAreaPlotter (cep),“DisplayName的”,“覆盖范围”,“FaceColor”,“蓝”);mountPosition = idealSensor.SensorLocation;范围= idealSensor.MaxRange;取向= idealSensor.Yaw;fieldOfView = idealSensor.FieldOfView (1);plotCoverageArea (caPlotter mountPosition、范围、定位、fieldOfView);
模拟理想的视觉检测
获得目标的位置。在自我车辆坐标的位置。
gTruth = targetPoses (egoVehicle);
生成时间戳视力检测。这些检测是作为细胞数组返回objectDetection
对象。
时间= scenario.SimulationTime;依据= idealSensor (gTruth、时间);
检查测量和测量噪声方差的第一(最左边的)检测。尽管检测是理想的,因此没有添加随机噪声,MeasurementNoise
属性显示了值的检测有噪音。
依据{1}.Measurement
ans =6×131.0000 - -11.2237 0 0 0 0
依据{1}.MeasurementNoise
ans =6×61.5427 - -0.5958 0 0 0 0 -0.5958 0.2422 100.0000 0 0 0 0 0 0 0 0 0 0 0 0 0.5398 -0.1675 0 0 0 0 0 0 0 0 0 0 0.1741 -0.1675 100.0000
图2σ的理想检测和椭圆轮廓的测量噪声协方差。
pos = cell2mat (cellfun (@ (d) d.Measurement(1:2)相同,…“UniformOutput”、假));x =重塑(cell2mat (cellfun (@ (d) d.MeasurementNoise(1:2, 1:2),精细,…“UniformOutput”假)”,2,2,[]);绘图机= trackPlotter (cep,“DisplayName的”,“理想的检测”,…“MarkerEdgeColor”,“蓝”,“MarkerFaceColor”,“蓝”);σ= 2;plotTrack(绘图仪、pos、σ^ 2 *浸)
模拟噪声检测进行比较
创建一个噪声传感器基于理想的传感器的属性。
noisySensor =克隆(idealSensor);(noisySensor) noisySensor发布。HasNoise = true;
重置驾驶场景回到原来的状态。
重启(场景)
收集统计信息从嘈杂的检测。
numMonte = 1 e3;pos = [];为itr = 1: numMonte时间= scenario.SimulationTime;依据= noisySensor (gTruth、时间);%保存噪声测量pos = [pos; cell2mat (cellfun (@ (d) d.Measurement(1:2)相同,“UniformOutput”、假));推进(场景);结束
情节吵闹的检测。
绘图机= detectionPlotter (cep,“DisplayName的”,噪声检测的,…“标记”,“。”,“MarkerEdgeColor”,“红色”,“MarkerFaceColor”,“红色”);plotDetection(绘图仪、pos)
使用笔记和限制:
看到系统在MATLAB代码生成对象(MATLAB编码器)。
drivingScenario
|laneMarking
|lanespec
|lidarPointCloudGenerator
|monoCamera
|multiObjectTracker
|objectDetection
|radarDetectionGenerator
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。