visionDetectionGenerator

为驾驶场景生成视觉检测

描述

visionDetectionGenerator系统对象™产生从一个单眼相机传感器安装在一个自我检测车辆。所有的检测都是自我的参考坐标系统车辆或车载传感器。您可以使用visionDetectionGenerator对象包含演员和轨迹在一个场景中,您可以创建使用drivingScenario对象。使用一个统计模式,发电机可以模拟真实的检测还添加随机噪声和产生错误的报警检测。此外,您可以使用visionDetectionGenerator对象创建的输入multiObjectTracker。在构建场景使用驾驶场景设计师应用,相机传感器安装在自我车辆输出visionDetectionGenerator对象。

产生视觉检测:

  1. 创建visionDetectionGenerator对象并设置其属性。

  2. 调用对象的参数,就好像它是一个函数。

了解更多关于系统对象是如何工作的,看到的系统对象是什么?(MATLAB)。

创建

描述

传感器= visionDetectionGenerator创建一个视觉检测发电机对象使用默认属性值。

例子

传感器= visionDetectionGenerator (cameraConfig)创建一个视觉检测发电机对象使用monoCamera配置对象,cameraConfig

例子

传感器= visionDetectionGenerator (名称,值)属性使用一个或多个名称-值对。例如,visionDetectionGenerator (‘DetectionCoordinates’,‘传感器笛卡儿’,‘MaxRange’, 200)创建一个视觉检测发电机传感器笛卡儿坐标系统和报告检测的最大探测距离为200米。在报价附上每个属性的名字。

属性

全部展开

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放函数打开它们。

如果一个属性可调在任何时候,你可以改变它的值。

改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象(MATLAB)。

指定类型的探测传感器,产生的“只将对象”,“只道”,“道与阻塞”,或车道和对象的

  • 当设置为“只将对象”,只有检测到演员。

  • 当设置为“只道”,只有检测到车道。

  • 当设置为“道与阻塞”只检测到车道,但演员在相机的视野可以削弱传感器检测通道的能力。

  • 当设置为车道和对象的传感器生成对象检测和阻挡车道检测。

例子:“道与阻塞”

数据类型:字符|字符串

独特的传感器标识符指定为一个正整数。这个属性区分检测来自不同传感器的多传感器系统。

例子:5

数据类型:

需要传感器更新之间的时间间隔,指定为一个积极的真正的标量。的drivingScenario对象调用视觉检测发电机以固定时间间隔。视觉检测器生成新定义的检测间隔UpdateInterval财产。的值UpdateInterval属性必须是一个整数倍数的模拟时间间隔。更新请求之间的传感器更新间隔不包含检测。单位是秒。

例子:5

数据类型:

视觉传感器的位置中心,作为一个指定(x, y)。的SensorLocation高度属性定义的坐标视觉传感器对自我车辆坐标系。默认值对应于一个前置传感器安装在汽车仪表板上。单位是米。

例子:0.1 [4]

数据类型:

传感器高度地平面,指定为一个积极的真正的标量。默认值对应于一个前置视觉传感器安装在仪表板的轿车。单位是米。

例子:1.5

数据类型:

偏航角的视觉传感器,指定为一个真正的标量。偏航角是自我的中心线的夹角的down-range轴车辆和视觉传感器。积极的偏航角对应于一个顺时针旋转时的正方向z设在自我的工具坐标系。单位是在度。

例子:4

数据类型:

螺旋角的视觉传感器,指定为一个真正的标量。螺旋角是角down-range轴之间的视觉传感器和x - y飞机的自我车辆坐标系。一个积极的螺旋角对应于一个顺时针旋转时的正方向y设在自我的工具坐标系。单位是在度。

例子:3

数据类型:

横摇角的视觉传感器,指定为一个真正的标量。卷角的旋转角down-range轴周围的视觉传感器x设在自我的工具坐标系。积极的横摇角对应于一个顺时针旋转时的正方向x设在的坐标系统。单位是在度。

例子:4

数据类型:

内在视觉传感器的标定参数,指定为一个cameraIntrinsics对象。

这个属性是只读的。

角的视野视觉传感器,指定为一个实值向量1×2积极的价值观,[azfov, elfov]。领域的观点定义了传感器的方位角和仰角区段的形象。每个组件必须躺在间隔从0度到180度。领域的观点是来自视觉传感器的固有参数。目标之外的视场角度传感器检测。单位是在度。

数据类型:

最大探测距离,指定为一个积极的真正的标量。传感器无法检测的目标超出了这个范围。单位是米。

例子:200年

数据类型:

最大速度检测对象,指定为一个非负实数。单位是米每秒。

例子:10.0

数据类型:

最大允许对象的闭塞,指定为一个真正的标量范围(0 - 1)。闭塞的分数是一个对象不可见的总表面积的传感器。一个显示对象的价值完全闭塞。单位是无量纲。

例子:0.2

数据类型:

目标的检测概率,指定为一个积极的真正的标量小于或等于1。这个量定义了传感器检测到的概率可检测的对象。一个可检测的对象是一个对象,满足最低可检测尺寸,最大射程,最大速度和最大允许闭塞约束。

例子:0.95

数据类型:

视觉传感器的错误检测数量为每个图像生成,指定为一个非负实数。

例子:2

数据类型:

最小高度和宽度视觉传感器检测到的对象在一个图像,作为指定[minHeight, minWidth]向量的积极的价值观。一个物体的二维投影高度必须大于或等于minHeight。一个物体的投影宽度必须大于或等于minWidth。单位是像素。

例子:30 [20]

数据类型:

边界框的准确性,指定为一个积极的真正的标量。这个量定义了探测器的精度可以匹配目标的边界框。单位是像素。

例子:4

数据类型:

噪声强度用于过滤位置和速度测量,指定为一个积极的真正的标量。噪声强度定义过程噪声的标准差的内部常速卡尔曼滤波器中使用视觉传感器。过滤器模型使用分段常数白噪声过程噪声加速度模型。噪声强度通常是订单的最大加速度级预期的目标。单位是米/秒2

例子:2.5

数据类型:

使添加噪声视觉传感器测量,指定为真正的。将此属性设置为真正的添加噪声传感器测量。否则,测量没有噪音。即使你设置HasNoise,对象仍然计算MeasurementNoise每个检测的属性。

数据类型:逻辑

的最大数量的检测报告的传感器,指定为“汽车”“属性”。当这个属性设置“汽车”所有检测传感器报告。当这个属性设置“属性”、传感器报告不超过指定的检测的数量MaxNumDetections财产。

数据类型:字符|字符串

最大数量的检测报告的传感器,指定为一个正整数。最接近传感器检测报告。

依赖关系

要启用这个特性,设置MaxNumDetectionsSource财产“属性”

数据类型:

坐标系统的检测报告,指定这些值之一:

  • “自我笛卡儿”——在自我检测报告车辆笛卡儿坐标系统。

  • 传感器笛卡儿的——笛卡儿坐标系统传感器的检测报告。

数据类型:字符|字符串

需要间隔时间车道检测更新,指定为一个积极的真正的标量。的drivingScenario对象调用视觉检测发电机以固定时间间隔。视觉检测器生成新车道检测间隔定义为这个属性必须是一个整数倍数的模拟时间间隔。更新请求更新间隔之间的传感器不包含车道检测。单位是秒。

例子:0.4

数据类型:

最小尺寸的预测车道标记后,可以通过传感器检测到占曲率,指定为1×2实值向量,[minHeight minWidth]。车道标记必须超过这两个值被检测出来。使用这个属性只在检测车道。单位是像素。

例子:(5、7)

数据类型:

车道边界的准确性,指定为一个积极的真正的标量。这个属性定义的准确性巷传感器可以将车道边界。单位是像素。使用这个属性只在检测车道。

来源报告的最大数量的车道,指定为“汽车”“属性”。当指定为“汽车”最大数量的车道是自动计算的。当指定为“属性”,可以使用MaxNumLanes属性设置最大数量或车道。

数据类型:字符|字符串

最大数量的车道,指定为一个正整数。

依赖关系

要启用这个特性,设置MaxNumLanesSource财产“属性”

数据类型:字符|字符串

演员概要文件,指定为结构或数组的结构。每个结构都包含物理和雷达的特点,一个演员。

  • 如果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)。单位是在度。

对结构的完整定义字段,请参阅演员车辆功能。

使用

描述

例子

依据=传感器(演员,时间)创建视觉检测,依据,从传感器的测量演员目前的模拟时间。对象可以同时为多个演员生成传感器检测。不包括自我车辆作为一个演员。

要启用这种语法,集DetectionOutput“只将对象”

lanedets=传感器(laneboundaries,时间)生成车道检测,lanedets从车道边界结构,laneboundaries

启用这个语法DetectionOutput“只道”。车道检测器生成车道边界在指定的时间间隔LaneUpdateInterval财产。

lanedets=传感器(演员,laneboundaries,时间)生成车道检测,lanedets从车道边界结构,laneboundaries

要启用这种语法,集DetectionOutput“道与阻塞”。车道检测器生成车道边界在指定的时间间隔LaneUpdateInterval财产。

例子

(___,numValidDets)=传感器(___)还返回的有效的检测报告,numValidDets

(___,numValidDetsisValidTime)=传感器(___)返回一个逻辑值,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财产“只将对象”,“道与阻塞”,或车道和对象的

车道边界,车道边界结构的指定为一个数组。表显示了每个结构的字段。

描述

坐标

车道边界坐标,指定为一个实值N3矩阵,N是车道边界坐标的数量。车道边界坐标定义的位置点的边界指定纵向距离远离自我,沿着中心路。

  • 在MATLAB®这些距离使用,指定“XDistance”名称-值对论点的laneBoundaries函数。

  • 在仿真金宝app软件®这些距离使用,指定距离自我的工具计算边界(m)参数的场景的读者块。

这个矩阵也包括自我边界坐标在零距离。这些坐标的左派和右派ego-vehicle起源,它坐落在后桥的中心。单位是米。

曲率

在每一行的车道边界曲率坐标矩阵,指定为一个实值N1的向量。N是车道边界坐标的数量。单位是每米的弧度。

CurvatureDerivative

莱恩的导数边界曲率的每一行坐标矩阵,指定为一个实值N1的向量。N是车道边界坐标的数量。单位是每平方米的弧度。

HeadingAngle

最初的车道边界航向角,指定为一个真正的标量。莱恩的航向角边界相对于自我车辆航向。单位是在度。

LateralOffset

距离自我车辆车道边界的位置,指定为一个真正的标量。抵消一个车道边界左边的自我汽车是正的。一个偏移量的正确自我车辆是负的。单位是米。

BoundaryType

车道边界标记类型,指定这些值之一:

  • “无名”——不存在物理通路标志

  • “固体”——单一的行

  • “冲”——单虚线车道标志线

  • “DoubleSolid”——两个完整的线

  • “DoubleDashed”——两个虚线

  • “SolidDashed”——左边的实线和虚线右边

  • “DashedSolid”——左边虚线和实线在右边

强度

饱和强度的车道边界标志,指定为一个真正的标量从0到1。的值0对应于一个标志的颜色是完全不饱和。标记出现灰色。的值1对应于一个标志的颜色是完全饱和。

宽度

车道边界宽度,指定为一个积极的真正的标量。在两行的车道标记,使用相同的宽度线和线之间的空间。单位是米。

长度

破折号在虚线,长度指定为一个积极的真正的标量。在两行的车道标记,用于线路长度相同。

空间

长度在虚线破折号之间的空间,指定为一个积极的真正的标量。在冲两行的车道标记,同样的空间用于线。

依赖关系

要启用这个论点,设置DetectorOutput财产“只道”,“道与阻塞”,或车道和对象的

数据类型:结构体

当前仿真时间,指定为一个积极的真正的标量。的drivingScenario对象调用视觉检测发电机以固定时间间隔。视觉检测器生成新定义的检测间隔UpdateInterval财产。的值UpdateIntervalLanesUpdateInterval属性必须是一个整数倍数的模拟时间间隔。更新请求之间的传感器更新间隔不包含检测。单位是秒。

例子:10.5

数据类型:

输出参数

全部展开

对象检测,作为细胞数组返回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,生成的检测。假警报,这个值是负的。

返回的检测数量,定义为一个非负整数。

  • MaxNumDetectionsSource属性设置为“汽车”,numValidDets设置的长度吗依据

  • MaxNumDetectionsSource被设置为“属性”,依据是一个单元阵列长度决定的吗MaxNumDetections财产。不超过MaxNumDetections检测返回。如果检测的数量是不足的MaxNumDetections,第一个numValidDets的元素依据持有有效的检测。其余的元素依据设置为默认值。

数据类型:

有效的检测时间,返回01isValidTime0当检测更新请求之间的时间更新指定的时间间隔UpdateInterval

数据类型:逻辑

车道边界检测,作为一个数组返回结构。结构的字段有:

车道边界检测结构

描述
时间 车道检测时间
SensorIndex 唯一标识符的传感器
LaneBoundaries 的数组clothoidLaneBoundary对象。

返回的车道检测数,定义为一个非负整数。

  • MaxNumLanesSource属性设置为“汽车”,numValidLaneDets设置的长度吗lanedets

  • MaxNumLanesSource被设置为“属性”,lanedets是一个单元阵列长度决定的吗MaxNumLanes财产。不超过MaxNumLanes车道检测返回。如果检测的数量是不足的MaxNumLanes,第一个numValidLaneDetections的元素lanedets持有有效的车道检测。其余的元素lanedets设置为默认值。

数据类型:

有效的车道检测时间,返回01isValidLaneTime0当车道检测更新请求之间的时间更新指定的时间间隔LaneUpdateInterval

数据类型:逻辑

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

isLocked 确定系统对象在使用
一步 运行系统对象算法
释放 释放资源,并允许修改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

生成检测使用前置汽车视觉传感器安装在一个自我。假设有两个目标车辆:

  • 车辆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创建一个俯视的检测。传感器覆盖范围。提取xy通过将目标的位置测量领域的细胞变成一个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);

运行仿真。

  1. 创建一个鸟瞰的情节和相关的策划者。

  2. 显示传感器覆盖范围。

  3. 显示车道标记。

  4. 在路上获得地面实况提出的目标。

  5. 获得理想的车道边界点提前60米。

  6. 从理想目标姿态和生成检测车道边界。

  7. 显示目标的轮廓。

  8. 显示对象时检测对象检测是有效的。

  9. 显示巷巷时边界检测是有效的。

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系统对象™。产生理想的检测,集DetectionProbability1,FalsePositivesPerImage0,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)

扩展功能

介绍了R2017a