主要内容

在驾驶场景或道路组中添加道路

描述

将道路添加到驾驶场景

例子

路(场景roadcenters将道路添加到驾驶场景中,场景.通过使用一组道路中心,你可以在二维平面上指定道路形状和道路的方向,roadcenters,在离散点。当您指定道路上的车道数量时,通道就是对道路中心的编号。有关更多信息,请参阅绘制道路方向及车道编号

路(场景roadcenters路宽添加指定宽度的道路,路宽

例子

路(场景roadcenters路宽bankingangle添加指定宽度和倾斜角度的道路,bankingangle

例子

路(场景roadcenters“道”,lspec添加指定车道的道路,lspec

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

路(___,'名称',名称指定使用以前语法的任何输入参数组合的道路的名称。

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

添加道路到道路组

例子

路(rgroadcenters为道路组添加路段,rg.使用道路组创建道路连接或交叉路口。您可以使用一组公路中心指定2-D平面中道路段的形状和方向,roadcenters,在离散点。当您在路段上指定车道数量时,车道与道路中心编号。有关更多信息,请参阅绘制道路方向及车道编号

例子

路(rgroadcenters路宽添加指定宽度的路段,路宽,给路组。

路(rgroadcenters路宽bankingangle添加具有指定宽度和银行角度的道路段,bankingangle,给路组。

例子

路(rgroadcenters“道”,lspec添加带有指定车道的路段,lspec,给路组。

例子

路(rgroadcentersbankingangle“道”,lspec将具有指定银行角度和车道的路段添加到道路组中。

例子

路(___,'名称',名称指定路段的名称,使用先前语法的任何输入参数组合。

例子

全部折叠

创建一个包含一条弯曲道路、两条笔直道路和两个角色的驾驶场景:一辆汽车和一辆自行车。两位演员在路上走了60秒。

创建驱动场景对象。

场景=驱动器通用('采样时间'0.1”,“StopTime”、60);

沿着半径800米的圆弧,使用道路中心点创建弯曲道路。电弧从0°开始,结束于90°,并以5°增量采样。

ang = [0:5:90] ';R = 800;roadcenters = R*[cosd(angs) sind(angs) zero (size(angs))];roadwidth = 10;路(场景、roadcenters roadwidth);

使用每端的道路中心点添加两个具有默认宽度的直路。

Roadcenters = [7000 00;100 0 0];路(场景,roadcenters)
ans =带有属性的道路:名称:"" RoadID: 2 RoadCenters: [2x3 double] RoadWidth: 6 BankAngle: [2x1 double]
RoadCenters = [400 400 0;0 0 0];路(场景,roadcenters)
ANS = ROAD属性:名称:“”ROADID:3陆路中心:[2x3 DOUBLE] ROODWIDTH:6 Bankangle:[2x1双]

确定道路界限。

rbdry =路线(情景);

在场景中添加一辆汽车和一辆自行车。把车停在第一条直路的起点。

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

把自行车停在路的较远的地方。

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

画出场景。

情节(方案,'中心线'“上”“RoadCenters”“上”);标题('设想');

图中包含一个坐标轴。带有标题场景的轴包含1219个类型的补丁,行。

显示演员姿势和配置文件。

姿势= Actorposs(情景)
姿势=2×1结构数组与字段:行环位置速度横摇俯仰偏航角速度
概要文件= actorProfiles(场景)
概要文件=2×1结构数组与字段:ActorID ClassID长度宽度高度原点偏移网格顶点网格面rcpattern RCSAzimuthAngles RCSElevationAngles

创建一个驾驶场景,其中包含在场景的世界坐标中指定的图8道路。将场景的世界坐标转换为自助式车辆的坐标系。

创建一个空的驾驶场景。

场景=驱动器Cenario;

向该场景添加一个图-8路径。显示的场景。

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

图中包含一个坐标轴。轴包含4个类型为patch, line的对象。

在场景中添加一个自我载体。定位车辆在世界坐标(20,-20),并以-15度偏航角定位它。

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

图中包含一个坐标轴。轴包含5个类型为patch, line的对象。

通过使用使用的自我车辆坐标的道路边界roadBoundaries函数。将EGO车辆指定为输入参数。

rbEgo1 = roadBoundaries(自我);

在鸟瞰图上显示结果。

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

图中包含一个坐标轴。轴包含一个线型对象。这个对象表示Road。

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

rbScenario = roadBoundaries(场景);

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

rbego2 =驾驶.scenario.roadboundariestoego(rbscenario,自我);

在鸟瞰图上显示道路边界。

cep = birdsEyePlot;枸杞多糖= laneBoundaryPlotter (cep),“DisplayName的”'道路边界');Plotlaneboundary(LBP,{RBEGO2})

图中包含一个坐标轴。轴包含一个线型对象。这个对象表示道路边界。

创建一个包含一辆汽车和一个行人在直线道路上的驾驶场景。然后,在鸟瞰图上创建并显示道路的车道标记。

创建一个空的驾驶场景。

场景=驱动器Cenario;

创建一个笔直的,25米长的道路段,在一个方向上有两个车道。

lm = [lanmarking('坚硬的')lanmarking(“冲”“长度”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(汽车,[Car.Rearoverhang 0 0; 25-Car.Length + Car.Rearoverhang 0 0],10);

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

情节(场景)

Chaseplot(汽车)

运行模拟。

  1. 创建一个鸟瞰图。

  2. 为鸟瞰图创建轮廓绘图仪、车道边界绘图仪和车道标记绘图仪。

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

  4. 获得车道标记顶点和面部。

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

  6. 运行模拟循环。

bep = birdseyebplot('xlim'25 [-25],“YLim”,[ -  10 10]);Olplotter = Outlineplotter(BEP);lbplotter = LaneBoudaryPlotter(BEP);lmplotter = lanemarkingplotter(bep,“DisplayName的”“道”);传奇('离开');advance(scenario) rb = roadBoundaries(汽车);(位置、偏航、长度、宽度、originOffset color] = targetOutlines(车);(lmv, lmf) = laneMarkingVertices(车);plotLaneBoundary (lbPlotter, rb);plotLaneMarking (lmPlotter lmv lmf);plotOutline (olPlotter、位置、偏航、长度、宽度、......'OriginOffset'originOffset,'颜色'、颜色);结束

三叉路口是指两条相邻的道路与第三条道路相交成钝角的y形路口,如图所示。要连接这三条道路,您将通过添加三个路段创建一个y型路口。

在驾驶场景中添加三条道路

创建一个空的驾驶场景。

场景=驱动器Cenario;

指定道路中每条车道的数量和宽度。

ls = lanespec (2'宽度'5);

定义三条道路的道路中心,并将其添加到驾驶场景中。第一道路对角导向在场景帆布的左侧,第二道路对角度朝向场景帆布的右侧,并且第三路垂直定向。

%添加第一道路跑步= [-20 0;6 0];路(场景、roadCenters“名字”'1'“道”、ls);加上第二条路道路中心= [23 7;50 33];路(场景、roadCenters“名字”'路2'“道”、ls);加上第三条路道路中心= [23 -7;50 -33];路(场景、roadCenters“名字”'路3'“道”、ls);

画出场景。

图绘制(场景)

图中包含一个坐标轴。轴包含5个类型为patch, line的对象。

创建y-nunction以连接道路

创建一个RoadGroup对象。为构成y形路口的每个路段指定宽度。

rg = strive.scenario.roadgroup(“名字”三通接头的);roadWidth = 10;

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

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

在驾驶场景中添加y路口

添加存储在中的道路段RoadGroup对象用于驱动场景roadGroup函数。在驾驶场景中,道路段形成了连接三条道路的y形路口。

roadGroup(场景,rg);

图中包含一个坐标轴。轴包含3个类型为patch, line的对象。

输入参数

全部折叠

驾驶场景,指定为drivingScenario对象。

公路组定义道路连接或交叉点,指定为aRoadGroup对象。

道路中心用于定义道路,指定为实值N2或N-By-3矩阵。道路中心在离散点确定道路的中心线。

  • 如果roadcenters是一个N- × 2矩阵,则每个矩阵行表示(xy)道路中心的坐标。的z每个道路中心的科学是零。

  • 如果roadcenters是一个N- × 3矩阵,则每个矩阵行表示(xyz)道路中心的坐标。

如果矩阵的第一行与最后一行相同,则道路是循环。单位是米。

数据类型:双倍的

道路宽度,被指定为正实标量。宽度沿整个道路恒定。单位是米。

指定bankingangle输入但没有路宽,指定路宽作为一个空的论点,[]

如果您指定路宽,然后你无法指定lspec输入。

数据类型:双倍的

道路的银行角度,被指定为一个真实值N1的向量。N是道路中心的数量。的银行角度是道路方向的道路的卷角。单位是度数。

车道规格,指定为alanespeccompositelanespec.对象。使用一个lanespec对象创建一个带有单车道规范的道路。您可以指定泳道的数量,每个车道的宽度以及使用的车道标记的类型lanespec对象。指定其中的车道标记lanespec,可以使用laneMarking函数。

使用一个compositelanespec.对象创建具有不同车道规格的多个道路段的道路。有关更多详细信息,请参阅compositelanespec.

如果您指定lspec,然后你无法指定路宽输入。

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

道路的名称,指定为字符向量或字符串标量。

例子:'姓名','Road1'

例子:“名称”、“Road1”

数据类型:char|细绳

输出参数

全部折叠

输出道路,作为一个返回对象,该对象具有本表中描述的属性。除了歹徒,这是一个场景生成的属性,属性名对应于用于创建道路的输入参数。所有属性都是只读的。

财产 价值
名称

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

名称输入参数设置此属性。即使你指定名称作为字符向量名称属性值是字符串标量。

歹徒

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

场景input参数为驾驶场景中的每条道路生成唯一的ID。

院长

道路中心用于定义道路,指定为实值N2或N- 3矩阵,在哪里N是道路中心的数量

roadcenters输入参数设置此属性。

RoadWidth

道路的宽度,指定为正实标量

路宽输入参数设置此属性。

BankAngle

道路的倾斜角度,指定为N实值向量,其中N是路上的道路中心数量

bankingangle输入参数设置此属性。

更多关于

全部折叠

绘制道路方向及车道编号

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

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

  • 对于顶到底部的绘制方向的道路,差异x- 前两个连续的道路中心的控制是积极的。

  • 对于具有靠底绘制方向的道路,差异x前两个连续道路中心的坐标为负。

从上到下绘制方向的道路

靠底绘制方向的道路

  • 对于具有左右绘制方向的道路,差异y- 前两个连续的道路中心的控制是积极的。

  • 对于具有右到左抽取方向的道路,差异y前两个连续道路中心的坐标为负。

左右抽奖方向的道路

右到左左右的道路

编号车道

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

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

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

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

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

单行道的行车号码

为双向道路指定作为正整数的两个元素向量的通道数。如果将向量设置为[12],然后这条路有三个车道:两个车道在一个方向上行驶,一条车道沿相反方向行驶。由于绘制方向,道路有一个左车道和两个右侧车道。车道从路的左边开始编号。

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

双向道路的车道号码

车道规格按通道编号的顺序适用。

算法

函数为驾驶场景中的参与者创建一条道路。你指定使用的道路N二维或三维路径点。每一个N- 航点之间的1个段定义了曲线,其曲率随段段线性而变化。该功能适合分段回旋曲线曲线到(xy通过在航点两侧匹配曲率来坐点的坐标。对于非校集的曲线,第一和最后一个航点处的曲率为零。如果第一个和最后一个航点一致,那么端点之前和之后的曲率都会匹配。的z- 使用形状保存的分段立方曲线插入道路的内置。

介绍了R2017a