主要内容

添加道路驾驶场景或道路

描述

增加道路驾驶场景

例子

路(场景,roadcenters)添加一个道路驾驶的情况下,场景。您指定的道路形状和方向的道路在二维平面上通过使用一组路中心,roadcenters在离散点。当你指定道路的车道,车道屈指可数的路中心。有关更多信息,请参见画的方向道路和通道的编号

路(场景,roadcenters,roadwidth)与指定的宽度,增加了道路roadwidth

例子

路(场景,roadcenters,roadwidth,bankingangle)添加一个与指定的道路宽度和银行的角度,bankingangle

例子

路(场景,roadcenters“道”,lspec)添加一个道路与指定的通道,lspec

路(场景,roadcenters,bankingangle“道”,lspec)添加一个道路与指定银行角度和车道。

例子

路(___“标题”,roadheadings)添加一个道路与指定的航向角roadheadings,使用任何输入参数组合从以前的语法。

路(___“名称”,的名字)指定的名称。

理查德·道金斯=路(___)返回一个对象存储的属性创建道路。

增加道路路组

例子

路(rg,roadcenters)添加一个道路段路组,rg。使用道路组创建一个交叉路口或十字路口。您指定的形状和道路段在二维平面上的方向通过使用一组路中心,roadcenters在离散点。当你指定数量的车道公路段上,马路车道编号对中心。有关更多信息,请参见画的方向道路和通道的编号

例子

路(rg,roadcenters,roadwidth)添加一个道路段指定的宽度,roadwidth路组。

路(rg,roadcenters,roadwidth,bankingangle)添加一个道路段指定的宽度和银行的角度,bankingangle路组。

例子

路(rg,roadcenters“道”,lspec)添加一个道路段指定的通道,lspec路组。

例子

路(rg,roadcenters,bankingangle“道”,lspec)添加一个道路段与指定银行角度和车道组的必经之路。

例子

路(___“标题”,roadheadings)添加一个道路段指定的航向角roadheadings路集团,从以前的语法使用任何输入参数组合。

例子

路(___“名称”,的名字)指定道路段的名称。

例子

全部折叠

创建一个驾驶场景包含一个弯曲的路,两个笔直的道路,和两个演员:一辆汽车和一辆自行车。两个角色都沿着路60秒钟。

创建驾驶场景对象。

场景= drivingScenario (“SampleTime”0.1”,“StopTime”、60);

使用道路中心创建弯曲的路点弧后800米半径的一个圆。弧始于0°,结束于90°,采样在5°的增量。

ang = [0:5:90] ';R = 800;roadcenters = R * [cosd (ang)信德(ang) 0(大小(ang))];roadwidth = 10;cr =路(场景、roadcenters roadwidth);

添加两个笔直的道路使用默认宽度,使用道路中心分两端。第一个直路道路边缘增加障碍。

roadcenters = [700 0 0;100 0 0];sr1 =路(场景,roadcenters);障碍(场景,sr1)屏障(场景,sr1,“RoadEdge”,“左”)roadcenters = (400 400 0;0 0 0];路(场景,roadcenters);

道路边界。

rbdry = roadBoundaries(场景);

一辆汽车和一辆自行车添加到场景。位置汽车的开头第一个直路。

车=车辆(场景中,“ClassID”,1“位置”(700 0 0),“长度”3,“宽度”2,“高度”,1.6);

自行车位置更远。

自行车=演员(场景中,“ClassID”3,“位置”,(706 376 0)',“长度”2,“宽度”,0.45,“高度”,1.5);

画出场景。

情节(场景中,“中心线”,“上”,“RoadCenters”,“上”);标题(“场景”);

图包含一个坐标轴对象。坐标轴对象与标题的场景中,包含X (m), ylabel Y (m)含有1221块类型的对象,线。

显示演员的姿态和概要文件。

allActorPoses = actorPoses(场景)
allActorPoses =242×1结构体数组字段:辊距偏航AngularVelocity ActorID位置速度
allActorProfiles = actorProfiles(场景)
allActorProfiles =242×1结构体数组字段:ActorID ClassID长度宽度高度OriginOffset MeshVertices MeshFaces RCSPattern RCSAzimuthAngles RCSElevationAngles

因为有障碍在这个场景中,每个障碍部分被认为是一个演员,actorPosesactorProfiles函数返回所有平稳和非平稳的演员的姿势。只获得非平稳的姿态和概要演员如汽车和自行车,首先获得相应的演员IDs使用scenario.Actors.ActorID财产。

movableActorIDs = [scenario.Actors.ActorID];

然后,使用这些id只过滤非平稳演员的姿态和概要文件。

movableActorPoseIndices = ismember ([allActorPoses.ActorID], movableActorIDs);movableActorPoses = allActorPoses (movableActorPoseIndices)
movableActorPoses =2×1结构体数组字段:辊距偏航AngularVelocity ActorID位置速度
movableActorProfiles = allActorProfiles (movableActorPoseIndices)
movableActorProfiles =2×1结构体数组字段:ActorID ClassID长度宽度高度OriginOffset MeshVertices MeshFaces RCSPattern RCSAzimuthAngles RCSElevationAngles

创建一个驾驶场景包含一个以道路在世界坐标系中指定的场景。场景的世界坐标转换为自我的坐标系统。

创建一个空的驾驶场景。

场景= drivingScenario;

添加一个以道路场景。显示的场景。

roadCenters = [0 0 1 -20 1 20 20 1 -20 -20 -20 20 1 0 0 1);roadWidth = 3;bankAngle = [0 15 15 -15 -15 0];路(场景、roadCenters roadWidth bankAngle);情节(场景)

图包含一个坐标轴对象。坐标轴对象包含X (m), ylabel Y (m)包含4补丁,类型的对象。

添加一个自我车辆的场景。在世界坐标位置的车辆(-20)和东方的偏航角是-15度。

自我=演员(场景中,“ClassID”,1“位置”(-20 0),“偏航”,-15);

图包含一个坐标轴对象。坐标轴对象包含X (m), ylabel Y (m)包含5补丁,类型的对象。

获得自我的道路边界车辆使用的坐标roadBoundaries函数。指定自我车辆作为输入参数。

rbEgo1 = roadBoundaries(自我);

显示结果上鸟瞰的阴谋。

cep = birdsEyePlot;枸杞多糖= laneBoundaryPlotter (cep),“DisplayName的”,“路”);rbEgo1 plotLaneBoundary (lbp)

图包含一个坐标轴对象。坐标轴对象包含X (m), ylabel Y (m)包含一个类型的对象。这个对象表示。

获得在世界坐标通过道路边界roadBoundaries函数。指定的场景作为输入参数。

rbScenario = roadBoundaries(场景);

获得自我的道路边界车辆使用的坐标driving.scenario.roadBoundariesToEgo函数。

rbEgo2 = driving.scenario.roadBoundariesToEgo (rbScenario、自我);

显示道路边界上鸟瞰的阴谋。

cep = birdsEyePlot;枸杞多糖= laneBoundaryPlotter (cep),“DisplayName的”,“道路边界”);plotLaneBoundary(枸杞多糖,{rbEgo2})

图包含一个坐标轴对象。坐标轴对象包含X (m), ylabel Y (m)包含一个类型的对象。这个对象表示道路边界。

创建一个驾驶场景包含汽车和行人直路。然后,创建和显示道路的路面标志上鸟瞰的阴谋。

创建一个空的驾驶场景。

场景= drivingScenario;

创建一个直,25米道路段在一个方向上有两个旅游航线。

lm = [laneMarking (“固体”)laneMarking (“冲”,“长度”2,“空间”4)laneMarking (“固体”));l = lanespec (2“标记”、lm);路(场景中,[0 0 0;25日0 0],“道”l);

添加到驾驶场景行人过马路以每秒1米和一辆车以每秒10米。

ped =演员(场景中,“ClassID”4“长度”,0.2,“宽度”,0.4,“高度”,1.7);车=车辆(场景中,“ClassID”1);smoothTrajectory (ped [15 3 0;15日3 0],1);smoothTrajectory(汽车,汽车。RearOverhang 0 0;25-car.Length +车。RearOverhang 0 0], 10);

显示相对应的场景和追逐情节。

情节(场景)

chasePlot(汽车)

运行仿真。

  1. 创建一个鸟瞰的阴谋。

  2. 创建一个轮廓绘图仪、车道边界绘图仪和车道标记绘图仪的鸟瞰的阴谋。

  3. 获得的道路边界和目标轮廓。

  4. 获取车道标记顶点和面孔。

  5. 显示车道边界和车道标记。

  6. 运行仿真循环。

cep = birdsEyePlot (“XLim”25 [-25],“YLim”,-10年[10]);olPlotter = outlinePlotter (cep);lbPlotter = laneBoundaryPlotter (cep);lmPlotter = laneMarkingPlotter (cep),“DisplayName的”,“道”);传奇(“关闭”);推进(场景)rb = roadBoundaries(车);(位置、偏航、长度、宽度、originOffset color] = targetOutlines(车);(lmv, lmf) = laneMarkingVertices(车);plotLaneBoundary (lbPlotter, rb);plotLaneMarking (lmPlotter lmv lmf);plotOutline (olPlotter、位置、偏航、长度、宽度、“OriginOffset”originOffset,“颜色”、颜色);结束

创建一个驾驶场景包含两个弯曲的道路连接。指定每个路中心的航向角进行微调的道路连接区域的形状。

创建一个空的驾驶场景。

场景= drivingScenario;

添加两个道路驾驶场景通过定义道路中心和道路航向角。

%添加第一个路roadCenters = [7 20;0 0;30 0;30 -20;10 -30];roadHeadings = [-90;0;南;南;-90); laneMark = laneMarking(“固体”);laneSpecification = lanespec (2, = laneMark);路(场景、roadCenters“道”laneSpecification,“标题”roadHeadings,“名字”,“路1”);%添加第二个路roadCenters = [10 -30;30 -40;30 -60;0 -60;7 -80];roadHeadings = [-90;南;南;180;-90); laneMark = laneMarking(“冲”);laneSpecification = lanespec (2, = laneMark);路(场景、roadCenters“道”laneSpecification,“标题”roadHeadings,“名字”,《路2》);

画出场景。

情节(场景中,“RoadCenters”,“上”)

图包含一个坐标轴对象。坐标轴对象包含X (m), ylabel Y (m)包含5补丁,类型的对象。一个或多个行显示的值只使用标记

三叉路口是一个三通接头,两个相邻道路相交第三路在钝角,如这个图所示。连接三个道路,您将创建一个三通接头通过添加三个路段。

yintersection.png

添加三个道路驾驶场景

创建一个空的驾驶场景。

场景= drivingScenario;

指定通道的数量和每个车道的宽度的道路。

ls = lanespec (2“宽度”5);

定义道路中心三个道路驾驶并将它们添加到场景中。面向第一个路是斜的画布上左边的场景,第二条路对角面向右边的场景画布,垂直面向第三条路。

%添加第一个路roadCenters = [-20 0;6 0];路(场景、roadCenters“名字”,“路1”,“道”、ls);%添加第二个路roadCenters =[23日7;50 33];路(场景、roadCenters“名字”,《路2》,“道”、ls);%添加第三路roadCenters =[23日7;50 -33];路(场景、roadCenters“名字”,“路3”,“道”、ls);

画出场景。

图绘制(场景)

图包含一个坐标轴对象。坐标轴对象包含X (m), ylabel Y (m)包含5补丁,类型的对象。

创建三通接头连接的道路

创建一个RoadGroup对象。指定每个道路段的宽度,形成了三通接头。

rg = driving.scenario.RoadGroup (“名字”,三通接头的);roadWidth = 10;

指定道路中心路三段,并添加这些路段RoadGroup通过使用对象函数。这些道路段彼此相交。

%添加第一个公路段roadCenters =[23日7;14 1;6 0];路(rg roadCenters roadWidth,“名字”,“段1”);%添加第二公路段roadCenters =[23日7;14 1;6 0];路(rg roadCenters roadWidth,“名字”,“分段2”);%添加第三公路段roadCenters =[23日7;21 4;21 4;23日7];路(rg roadCenters roadWidth,“名字”,“段3”);

添加三通接头驾驶场景

添加部分存储在的道路RoadGroup通过使用对象驱动场景roadGroup函数。道路段形成一个三通接头连接三个道路驾驶场景。

roadGroup(场景,rg);

图包含一个坐标轴对象。坐标轴对象包含X (m), ylabel Y (m)包含3补丁,类型的对象。

创建一个驾驶场景与三个道路,并使用一个三叉路连接,如这个图所示。

heading_to_roadgroup.png

添加三个道路驾驶场景

创建一个空的驾驶场景。

场景= drivingScenario;

指定通道的数量和每个车道的宽度的道路。

ls = lanespec (2“宽度”5);

定义道路中心三个道路驾驶并将它们添加到场景中。第一次和第二次面向道路是垂直的,左边和场景的中心分别画布。第三路是横向的,右边的两个垂直道路和他们之间。

%添加第一个路roadCenters = [70 30;30 30);路(场景、roadCenters“名字”,“路1”,“道”、ls);%添加第二个路roadCenters = [0 0;-40 0];路(场景、roadCenters“名字”,《路2》,“道”、ls);%添加第三路roadCenters = [15 -20;15 -60];路(场景、roadCenters“名字”,“路3”,“道”、ls);

画出场景。

情节(场景)

图包含一个坐标轴对象。坐标轴对象包含X (m), ylabel Y (m)包含5补丁,类型的对象。

创建一个连接来连接道路

创建一个RoadGroup对象。指定每个道路段的宽度,形成了连接。

rg = driving.scenario.RoadGroup (“名字”,“结”);roadWidth = 10;

指定路中心两路部分,并指定航向角第一段。添加这些路段RoadGroup通过使用对象函数。这些道路段相交。

%添加第一个公路段,并指定其航向角roadCenters = [31 30;15 20;15 -21];roadHeadings = [180;-90;-90);路(rg roadCenters roadWidth,“名字”,“段1”,“标题”,roadHeadings);%添加第二公路段roadCenters = [15 0;1 0];路(rg roadCenters roadWidth,“名字”,“分段2”);

添加结驾驶场景

添加部分存储在的道路RoadGroup通过使用对象驱动场景roadGroup函数。道路段形成一个结连接三个道路驾驶场景。

roadGroup(场景,rg);

图包含一个坐标轴对象。坐标轴对象包含X (m), ylabel Y (m)包含3补丁,类型的对象。

输入参数

全部折叠

驾驶的情况下,指定为一个drivingScenario对象。

路组定义了一个交叉路口或交叉,指定为一个RoadGroup对象。

路中心用于定义一条道路,指定为一个实值N2或N3矩阵。路中心确定道路的中心线在离散点。

  • 如果roadcenters是一个N2矩阵,然后每个矩阵行代表(x,y路中心的坐标。的z每路中心的坐标是零。

  • 如果roadcenters是一个N3矩阵,然后每个矩阵行代表(x,y,z路中心的坐标。

如果矩阵的第一行和最后一行是一样的,这条路是一个循环。单位是米。

数据类型:

指定宽度的道路,是一个积极的真正的标量。沿着整个道路宽度是不变的。单位是米。

指定bankingangle输入但不roadwidth,指定roadwidth作为一个空参数,[]

如果您指定roadwidth,那么你不能指定lspec输入。

数据类型:

银行角度的道路,指定为一个实值N1的向量。N路中心的数量。的银行角度横摇角的道路以及道路的方向。单位是在度。

莱恩规范,指定为一个lanespeccompositeLaneSpec对象。使用一个lanespec对象创建一个路一巷规范。您可以指定通道的数量,每个车道的宽度,路面标志使用的类型lanespec对象。指定内车道标记lanespec,可以使用laneMarking函数。

使用一个compositeLaneSpec对象创建一个有不同的道路与多个路段车道规范。更多细节,请参阅compositeLaneSpec

如果您指定lspec,那么你不能指定roadwidth输入。

例子:“道”,lanespec (3)指定与默认三车道公路车道宽度和车道标记。

路的名称,指定为一个特征向量或字符串标量。

例子:“名称”、“Road1”

例子:“名称”、“Road1”

数据类型:字符|字符串

道路航向角,指定为一个实值N1矢量角的范围(-180、180)。N路中心的数量。单位是在度。

标题角度约束相关的道路中心。为了避免约束道路中心点,您必须指定相应的元素roadheadings作为。的为无约束函数自动确定航向角路中心。有关更多信息,请参见航向角

输出参数

全部折叠

输出,作为一个返回这个表中描述的对象的属性。除了RoadIDscenario-generated属性,属性名对应于输入参数用于创建。所有属性是只读的。

财产 价值
的名字

道路名称,指定为字符串标量

的名字输入参数设置这个属性。即使你指定的名字作为一个特征向量,的名字属性值是一个字符串标量。

RoadID

标识符的道路,指定为一个正整数

场景输入参数生成一个惟一的ID中每一个道路驾驶场景。

RoadCenters

路中心用于定义一条道路,指定为一个实值N2或N3矩阵,N路中心的数量吗

roadcenters输入参数设置这个属性。

RoadWidth

指定宽度的道路,是一个积极的真正的标量

roadwidth输入参数设置这个属性。

BankAngle

银行角度的道路,作为一个指定N1实值向量,N路中心的数量在路上吗

bankingangle输入参数设置这个属性。

标题

航向角的道路,作为一个指定N1实值向量,N路中心的数量在路上吗

roadheadings输入参数设置这个属性。

更多关于

全部折叠

画的方向道路和通道的编号

通过创建一个道路函数,指定道路中心作为一个矩阵输入。的函数创建一个有向线横穿马路中心,从坐标矩阵的第一行,结束在最后一行的坐标矩阵。矩阵的坐标的两行指定画的方向的道路。这些坐标对应于第一个连续两路中心。画方向的方向道路场景的渲染情节。

通过创建一个道路驾驶场景设计师应用程序,您可以指定道路中心参数或交互式地画场景帆布。一个详细的例子,看到创建一个驾驶场景。在这种情况下,画方向的方向道路呈现的场景帆布

  • 自上而下的道路方向,之间的差别x坐标的第一个连续两路中心是正的。

  • 与自下而上画方向,道路之间的差别x坐标的第一个连续两路中心是负的。

路与自上而下画的方向

路与自下而上画的方向

  • 道路与方向从左到右画,之间的差别y坐标的第一个连续两路中心是正的。

  • 为从右到左的方向画一条道路,之间的差别y坐标的第一个连续两路中心是负的。

路,从左到右画的方向

画的方向从右到左的道路

编号车道

从左到右车道必须编号,路的左边缘定义相对于路的方向。单向道路,默认情况下,左边缘的道路是一个坚实的黄色标记表明路的尽头在横向方向(方向垂直于画方向)。双向的,默认情况下,边缘都标有坚实的白线。

例如,这些图显示通道编号在单向和双向道路上画方向。

编号车道单向道路 编号车道双向道路

指定数量的车道为单向道路一个正整数。如果你设置整数值3有三个车道的道路,那么,旅游方向相同。的车道从路的左边缘开始编号。

1,2,3表示第一、第二和第三车道的路上,分别。

在单向车道数

双元素向量指定数量的车道作为一个正整数的双向道路。如果你设置向量(12),然后路上有三个车道:两道在一个方向和一个旅行巷旅游在相反的方向。因为画的方向,路上有一个左车道和两个右车道。的车道从路的左边缘开始编号。

1 l表示只有左车道的道路。1 r2 r表示第一和第二车道的路上,分别。

莱恩数字双向道路

巷规范适用的顺序车道已经屈指可数了。

航向角

路的航向角指的是角在给定道路中心点朝着下一个路中心,测量逆时针的x设在范围(-180、180)度。

道路航向角

指定航向角作为道路中心点的约束使精确控制的形状和方向道路。

例如,创建一个路通过指定其路中心。情节的道路

场景= drivingScenario;roadCenters = [0 35;0 18;15 10;32 3;32 -12);roadHeadings =[南;南;0;南; NaN]; road(scenario,roadCenters,“标题”,roadHeadings);情节(场景中,“中心线”,“上”,“RoadCenters”,“上”)

这图显示了路与一个约束路航向角和各自的道路中心在这个例子中指定。其他道路中心无约束和航向角的自动确定函数。

道路航向角无约束的例子

现在指定道路中心点的航向角为每一个在路上。情节的新道路。

场景= drivingScenario;roadCenters = [0 35;0 18;15 10;32 3;32 -12);roadHeadings = [-90;-90;0;-90; -90]; road(scenario,roadCenters,“标题”,roadHeadings);情节(场景中,“中心线”,“上”,“RoadCenters”,“上”)

这图显示了道路与道路航向角和各自的道路中心指定的例子。

道路航向角的例子

算法

函数创建一个道路驾驶场景中为一个演员。您指定使用的道路N二维或三维的锚点。每一个N- 1段路径点之间定义了一个曲线的曲率变化线性线段的距离。函数符合分段回旋曲线曲线(x,y)坐标匹配路径点的曲率两岸的路标。非闭曲线,第一个和最后一个航点的曲率为零。如果第一个和最后一个锚点重合,那么前后曲率端点相匹配。的z路的坐标是使用一种保形插值分段立方曲线。

版本历史

介绍了R2017a