laneMarking

创建道路标线对象

描述

单线标记型

lm= laneMarking (类型创建指定类型的默认车道标记对象(实线车道、虚线车道等)。这个对象定义了道路上的车道边界标记的特征。在驾驶场景中创建道路时,可以使用车道标记对象作为lanespec对象。

例子

lm= laneMarking (类型名称,值使用一个或多个名称-值对设置车道标记对象的属性。例如,laneMarking(“固体”、“颜色”、“黄色”)创建一个实心黄色车道标记。

沿车道有多种标记类型

例子

厘米= laneMarking (lmArray从车道标记对象数组中创建一个复合车道标记对象,lmArray.使用此语法生成包含多种标记类型的车道标记。

例如,通过定义,创建一个同时具有实线和虚线标记类型的车道边界标记lmArray

lmArray = [laneMarking('Solid') laneMarking('虚线')]cm = laneMarking(lmArray)
标记类型出现的顺序取决于道路的绘制方向。有关更多信息,请参见绘制道路方向及车道编号复合车道标志

例子

厘米= laneMarking (lmArray“SegmentRange”,范围使用名称-值对参数指定复合车道标记中每个标记类型的范围“SegmentRange”范围

例子

全部折叠

创建一个驾驶场景,道路中心为一条80米长的直路。

场景= drivingScenario;道路中心= [0 0;80 0];

创建一个lanespec反对四车道公路。使用laneMarking功能指定其五个车道标记。中心线是重实色和重黄色。最外面的线是纯白色的。内线是虚线和白色的。

solidW = laneMarking (“固体”“宽度”,0.3);dashW=laneMarking(“冲”“空间”5);doubleY = laneMarking (“DoubleSolid”“颜色”“黄色”);Lspec = lanespec([2 2],“宽度”,[5 5 5 5],...“标记”,[solidW dashW doubleY dashW solidW]);

将道路添加到驾驶场景中。显示的道路。

路(场景、roadCenters“道”, lspec);情节(场景)

模拟一辆车沿s曲线行驶的驾驶场景。创建和绘制车道边界。

创建一个有s形曲线的道路的驾驶场景。

场景= drivingScenario (“StopTime”3);道路中心= [-35 20 0;-20 -20 0;0 0 0;20个20 0;35 -20 0];

创建车道并将其添加到道路上。

lm = [laneMarking (“固体”“颜色”' w ');...laneMarking (“冲”“颜色”“y”);...laneMarking (“冲”“颜色”“y”);...laneMarking (“固体”“颜色”' w '));ls = lanespec (3“标记”、lm);路(场景、roadcenters“道”、ls);

添加一个自我飞行器,并从它的路径点指定它的轨迹。默认情况下,汽车以每秒30米的速度行驶。

车=车辆(场景中,...“ClassID”, 1...“位置”, 20 0 [-35]);路径点= [-35 20 0;-20 -20 0;0 0 0;20个20 0;35 -20 0];轨迹(车,路点);

绘制场景和相应的追逐图。

情节(场景)

chasePlot(汽车)

运行模拟循环。

  1. 初始化鸟瞰图并创建轮廓绘图仪、左车道和右车道边界绘图仪以及道路边界绘图仪。

  2. 获得道路边界和矩形轮廓。

  3. 获取车辆左右两侧的车道边界。

  4. 改进模拟并更新绘图仪。

cep = birdsEyePlot (“XLim”, 40 [-40],“YLim”[-30] 30日);olPlotter = outlinePlotter (cep);lblPlotter = laneBoundaryPlotter (cep),“颜色”“r”“线型”“- - -”);lbrPlotter = laneBoundaryPlotter (cep),“颜色”‘g’“线型”“- - -”);rbsEdgePlotter = laneBoundaryPlotter (cep);传奇(“关闭”);advance(scenario) rbs = roadBoundaries(car);(位置、偏航、长度、宽度、originOffset color] = targetOutlines(车);磅= laneBoundaries(车,“XDistance”0:5:30,“LocationType”“中心”...“AllBoundaries”、假);plotLaneBoundary(lblPlotter,{lb(1).Coordinates}) plotLaneBoundary(lbrPlotter,{lb(2).Coordinates})...“OriginOffset”originOffset,“颜色”、颜色)结束

这个例子展示了如何创建一个驾驶场景,例如改变车道和超过其他车辆。您可以创建带有通过区域的道路,并将车辆添加到场景中。然后,定义这些车辆的轨迹,以模拟车辆在超车区域的变道。

使用复合车道标记创建具有超车区域的道路

创建一个驾驶场景。指定道路中心和车道数量,以添加一条双向、双车道、54米的直线道路,从上到下绘制方向。

场景= drivingScenario (“StopTime”10);道路中心= [50 0;4 0];numLanes = [1 1];

通常情况下,车道标记的数量等于车道的数量加1。一条双向、双车道的道路有3个车道标记,最外面的车道标记在两边都是白实线。

创建一个标记宽度为0.25米的实体标记对象,构成双向道路最外面的车道标记。

outerLM = laneMarking (“固体”“宽度”, 0.25);

创建一个车道标记数组SolidMarkingDashedMarking包含实线和虚线双黄线属性的对象。

lmArray = [laneMarking (“DoubleSolid”“颜色”“黄色”“宽度”0.25) laneMarking (“DashedSolid”“颜色”“黄色”“长度”, 1“空间”, 1.5,“宽度”0.25) laneMarking (“DoubleSolid”“颜色”“黄色”“宽度”0.25) laneMarking (“SolidDashed”“颜色”“黄色”“长度”, 1“空间”, 1.5,“宽度”0.25)];

使用车道标记阵列为中心车道标记创建一个复合车道标记对象。为每个标记对象指定规范化长度。

centerLM = laneMarking (lmArray,“SegmentRange”,[0.1 0.25 0.2 0.35]);

创建最外层和中心车道标记对象的矢量。将向量作为输入传递给lanespec功能,以定义道路的车道规格。

标志= [outerLM centerLM outerLM];ls = lanespec (numLanes,“宽度”7“标记”,标志着);

将道路添加到驾驶场景中。绘制驾驶场景。由于道路的绘制方向是自上而下的,因此复合车道标记中的标记类型也是自上而下的。

路(场景、roadCenters“道”、ls);figMark =图;集(figMark,“位置”,[0 0 600 600]);hPlot =轴(figMark);情节(场景中,“父”,hPlot);头衔(“复合标记:有通行区域的道路”

模拟通过区域的车辆变道

在场景中添加慢行车辆(SMV)。指定路径点和速度值来设置SMV的轨迹。

slowVehicle =车辆(场景中,“ClassID”, 1“位置”[37 3 0]);路径点= [37 -3;12 -3];速度= 2;轨迹(slowVehicle、锚点、速度);

向场景中添加另一个车辆。设置车辆的轨迹,使其通过在通过区域改变车道而超过前面的SMV。

passingVehicle =车辆(场景中,“ClassID”, 1“位置”,[49 -3 0]); 航路点=[49-3;45-3;40-3;350;303;263;223;183;80;5-2;2-3;1-3];速度=6;轨迹(通过车辆、航路点、速度);

创建自定义地物窗口并绘制场景。

关闭所有;figScene =图;集(figScene,“位置”,[0 0 600 600]);hPanel = uipanel (figScene);hPlot =轴(hPanel);情节(场景中,“父”,hPlot);头衔(“通行区:变道超车”%运行模拟推进(场景)暂停(0.01)结束

输入参数

全部折叠

车道标记的类型,指定为这些值之一。

“无名” “固体” “冲” “DoubleSolid” “DoubleDashed” “SolidDashed” “DashedSolid”

没有车道标志

实线

虚线

两个实线

两个虚线

左边实线,右边虚线

左虚线,右实线

车道标记的类型存储在类型,返回的车道标记对象的只读属性。

车道标记对象的一维数组,指定为

  • LaneMarking对象“无名”车道标志的类型。

  • SolidMarking对象“固体”“DoubleSolid”车道标记的类型。

  • DashedMarking对象“冲”“DoubleDashed”“SolidDashed”,“DashedSolid”车道标记的类型。

例子:lmArray = [laneMarking('Solid') laneMarking(' dash ')]

每个标记类型的范围,指定为在区间[0,1]内具有规格化值的向量。向量的长度必须与输入数组中指定的标记类型的数量相同lmArray

中指定的标记类型数量的倒数是车道中每个标记类型的默认范围值lmArray

例如,如果输入的车道标记数组包含三个车道标记对象,例如lmArray = [lanemark ('Solid') lanemark('虚线')lanemark ('Solid')],则每个标记类型的缺省范围值为1/3,即范围= [0.3330 0.3330 0.3330]

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:laneMarking(“冲”、“宽度”,0.25,“长度”,5.0)创建一条宽0.25米、间隔5米的破折线。

车道标记宽度,指定为逗号分隔对组成“宽度”一个正的实标量。对于双车道标记,对两条线使用相同的宽度。单位是米。

例子:0.20

车道标记的颜色,指定为逗号分隔对组成“颜色”以及RGB三元组、十六进制颜色代码、颜色名称或简短的颜色名称。对于双车道标记,两条线使用相同的颜色。

对于自定义颜色,指定RGB三元组或十六进制颜色代码。

  • RGB三元组是一个由三个元素组成的行向量,其元素指定颜色的红色、绿色和蓝色组件的强度。强度必须在这个范围内[0, 1];例如,(0.4 0.6 0.7)

  • 十六进制颜色代码是以哈希符号开头的字符向量或字符串标量(),然后是3个或6个十六进制数字,其范围可以是0F.这些值不区分大小写。因此,颜色是代码“# FF8800”“# ff8800”“# F80”,“# f80”是等价的。

或者,您可以通过名称指定一些常见的颜色。该表列出了已命名的颜色选项、等价的RGB三联体和十六进制颜色代码。

颜色名称 短名称 RGB值 十六进制颜色代码 外观
“红色” “r” (1 0 0) “# FF0000”

“绿色” ‘g’ (0 1 0) “# 00 ff00”

“蓝” “b” [0 0 1] “# 0000 ff”

“青色” “c” (0 1 1) “# 00飞行符”

“洋红” “米” (1 0 1) “#就”

“黄色” “y” (0.98 0.86 0.36) “# FFFF00”

“黑” “k” (0 0 0) '#000000'

“白色” ' w ' (1 1 1) “# FFFFFF”

例子:[0.8 0.8 0.8]

车道标记颜色的饱和度强度,指定为逗号分隔对组成“力量”以及一个在[0,1]范围内的实标量。的值0对应于颜色完全不饱和的标记。标记是灰色的。的值1对应于颜色完全饱和的标记。对于双车道标记,对两条线使用相同的强度。

例子:0.20

虚线中破折号的长度,指定为组成的逗号分隔对“长度”一个正的实标量。对于双车道标记,两条线的长度是相同的。虚线是虚线的可见部分。单位是米。

例子:2.0

一个破折号的结束和下一个破折号的开始之间的空格长度,指定为逗号分隔对,由“空间”一个正的实标量。对于双车道标记,两条线的长度是相同的。单位是米。

例子:2.0

输出参数

全部折叠

车道标记,返回为LaneMarking对象,SolidMarking对象,或DashedMarking对象。属性的返回对象的类型取决于指定的输入通道标记的类型类型输入。

输入类型 输出通道标记 车道标记属性
“无名”

LaneMarking对象

  • 类型

“固体”

SolidMarking对象

  • 颜色

  • 宽度

  • 强度

  • 类型

“DoubleSolid”
“冲”

DashedMarking对象

  • 长度

  • 空间

  • 颜色

  • 宽度

  • 强度

  • 类型

“DashedSolid”
“SolidDashed”
“DoubleDashed”

属性的对应名称-值对可以在创建车道标记对象时设置这些属性laneMarking函数。要在创建后更新这些属性,请使用点表示法。例如:

lm = laneMarking (“固体”);lm。宽= 0.2;
您可以在创建后设置除类型,它是只读的。的几何性质的细节SolidMarkingDashedMarking对象,请参见莱恩规范

复合车道标记,返回为CompositeMarking对象的属性标记SegmentRange

复合车道标记特性 描述
标记 此属性是一个车道标记对象数组,定义了组成复合车道标记的多种标记类型。每个线标对象定义的线标部分为标记片段.此属性是只读的。
SegmentRange 此属性指定复合车道标记中每个标记段的规范化范围。此属性是只读的。

使用此对象可指定沿车道的多个标记类型。有关如何指定复合车道标记以及沿车道的标记段顺序的详细信息,请参见复合车道标志

更多关于

全部折叠

绘制道路方向及车道编号

创造一条道路通过使用函数,指定道路中心作为矩阵输入。该函数创建一条横过道路中心的有向线,从矩阵的第一行坐标开始,到矩阵的最后一行坐标结束。矩阵前两行的坐标指定画的方向的道路。这些坐标对应前两个连续的道路中心。绘制方向是道路在场景图中渲染的方向。

创造一条道路通过使用驾驶场景设计师应用,你可以指定道路中心参数或交互式绘制场景帆布.有关详细示例,请参见创建驾驶场景.在这种情况下,绘制方向是道路渲染的方向场景帆布

  • 对于具有从上到下绘制方向的道路,两者之间的差异x前两个连续道路中心的坐标是正的。

  • 对于具有从下到上绘制方向的道路x前两个连续道路中心的坐标为负。

  • 对于具有从左到右绘制方向的道路,y前两个连续道路中心的坐标是正的。

  • 对于具有从右到左绘制方向的道路,y前两个连续道路中心的坐标为负。

编号车道

车道必须从左到右编号,道路的左边缘定义相对于道路的绘制方向。对于单向道路,默认情况下,道路的左边缘为实黄色标记,表示横向方向(垂直方向绘制方向)的道路尽头。对于双向道路,默认情况下,两条边都用白实线标记。

例如,这些图表显示了如何在单向和双向道路上用从上到下的绘制方向进行编号。

在单行道上为车道编号 在双向道路上为车道编号

指定单行道的车道数为正整数。如果您将整数值设置为3.,那么这条路有三条向同一方向行驶的车道。车道从路的左边开始编号。

123.分别指道路的第一、第二和第三车道。

将车道数指定为双向道路的正整数双元素向量。如果将向量设置为[12,则有三条车道:两条车道向一个方向行驶,另一条车道向相反方向行驶。由于方向不同,这条路有一个左车道和两个右车道。车道从路的左边开始编号。

1 l指这条路唯一左边的车道。1 r2 r分别指道路的第一及第二右车道。

车道的规格是按照车道编号的顺序来执行的。

复合车道标志

复合车道标记由两个或多个标记段组成,这些标记段沿车道定义了多种标记类型。复合车道标记的几何特性包括每种标记类型的几何特性和标记段的规格化长度。

指定标记段在复合车道标记中出现的顺序取决于道路的绘制方向。每个标记段是一个有方向的段,有起点,并向最后一个道路中心移动。第一个标记段从第一个道路中心开始,并以指定的长度向最后一个道路中心移动。第二标记段从第一标记段的终点开始,并以指定的长度向最后一条道路中心移动。同样的过程适用于为复合车道标记指定的每个标记段。属性可以为每个标记段设置规范化长度范围输入参数。

例如,考虑一条有两条车道的单行道。从道路左侧边缘开始的第二车道标记为具有标记类型的复合车道标记固体.每个标记类型的标准化范围是0.5。第一个标记段是实标记,第二个标记段是虚线标记。这些图表显示了标记区段应用于道路从左到右和从右到左绘制方向的顺序。

有关车道标记的几何属性的信息,请参见莱恩规范

莱恩规范

该图显示了道路、车道和车道标记的组成部分和几何属性。

lane规格对象,lanespec,定义了道路。

  • NumLanes属性指定车道的数量。创建此对象时,必须指定车道的数量。

  • 宽度属性指定每个通道的宽度。

  • 标记属性包含道路上每个车道标记的规格。标记是一个车道标记对象数组,每个车道有一个对象。要创建这些对象,使用laneMarking函数。车道标记规范包括:

    • 类型-车道标记类型(实线,虚线,等等)

    • 宽度-线标宽度

    • 颜色-车道标记颜色

    • 强度-车道标记颜色的饱和度值

    • 长度—对于虚线道,每个虚线的长度

    • 空间-对于虚线,虚线之间的间距

    • SegmentRange—对于复合车道标记,每个标记段的归一化长度。

  • 类型属性包含道路中每个车道的车道类型规格。类型可以是同质车道类型对象或异质车道类型数组。

    • 同质车道类型对象包含道路中所有车道的车道类型规格。

    • 异构车道类型数组包含车道类型对象的数组,每个车道有一个对象。

    要创建这些对象,使用laneType函数。Lane类型规格包括:

    • 类型-车道类型(驾驶,边界等)

    • 颜色- Lane彩色

    • 强度-车道颜色的强度

介绍了R2018a