主要内容

推进

一次步进的先进驾驶场景模拟

描述

例子

正在=进步(场景提出了一种单时间步的驾驶场景模拟。要指定步长时间,请使用SampleTime输入属性drivingScenario对象,场景.函数返回状态,正在,模拟的。

例子

全部折叠

创建一个驾驶场景。使用默认的0.01秒采样时间。

场景= drivingScenario;

在场景中添加一条30米长的直路。这条路有两条车道。

道路中心= [0 0;30 0];路(场景、roadCenters“道”lanespec (2));

增加一辆以每秒30米的恒定速度行驶在左车道的车辆。在运行模拟之前绘制场景。

v =车辆(场景中,“ClassID”1);路径点= [5 2;25 2];速度= 30;% m / ssmoothTrajectory (v,锚点、速度)情节(场景)

调用推进函数在一个循环中推进模拟一个时间一步一次。每0.01秒暂停一次,观察地图上车辆的运动。

推进(场景)暂停(0.01)结束

创建一个驱动场景,并显示目标大纲如何随着模拟的进展而变化。

创建一个由两条相交的直线道路组成的驾驶场景。第一段路长45米。第二条笔直的路长32米,两边都有护栏,与第一条路相交。在第一条道路上,以每秒12.0米的速度行驶的汽车以每秒2.0米的速度接近正在穿过十字路口的行人。

场景= drivingScenario (“SampleTime”, 0.1,“StopTime”1);道路1 =道路(场景,[-10 0 0;45 -20 0]);道路2 =道路(场景,[-10 -10 0;35 10 0]);障碍(场景,road1)屏障(场景、road1“RoadEdge”“左”) ped =演员(场景,“ClassID”4“长度”, 0.4,“宽度”, 0.6,“高度”, 1.7);车=车辆(场景中,“ClassID”1);pedspeed = 2.0;carspeed = 12.0;smoothTrajectory (ped [15 3 0;15日3 0],pedspeed);smoothTrajectory(车,-10 -10 0;35 10 0], carspeed);

为车辆创建一个以自我为中心的追逐情节。

chasePlot(车,“中心线”“上”

创建一个空的鸟瞰图,并添加轮廓绘图仪和车道边界绘图仪。然后,运行模拟。在每个模拟步骤:

  • 更新追踪图以显示道路边界和目标轮廓。

  • 更新鸟瞰图以显示更新的道路边界和目标轮廓。情节视角总是与自我载体有关。

bepPlot = birdsEyePlot (“XLim”50 [-50],“YLim”, 40 [-40]);outlineplotter = outlineplotter (bepPlot);laneplotter = laneBoundaryPlotter (bepPlot);传奇(“关闭”advance(scenario) rb = roadBoundaries(汽车);(位置、偏航、长度、宽度、originOffset color] = targetOutlines(车);[bposition, byaw blength、bwidth boriginOffset, bcolor, barrierSegments] = targetOutlines(车,“障碍”);plotLaneBoundary (laneplotter, rb) plotOutline (outlineplotter、位置、偏航、长度、宽度、...“OriginOffset”originOffset,“颜色”(颜色)plotBarrierOutline outlineplotter、barrierSegments bposition, byaw, blength, bwidth,...“OriginOffset”boriginOffset,“颜色”bcolor)暂停(0.01)结束

图中包含一个坐标轴。坐标轴是空的。

模拟一辆车沿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];smoothTrajectory(车,路点);

绘制场景和相应的追逐情节。

情节(场景)

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,“颜色”、颜色)结束

输入参数

全部折叠

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

输出参数

全部折叠

模拟的运行状态,按逻辑返回1真正的)或0).

  • 如果正在1,模拟正在运行。

  • 如果正在0时,模拟已停止运行。

模拟运行,直到满足以下条件中的至少一个:

  • 模拟时间超过模拟停止时间。要指定停止时间,请使用StopTime的属性场景

  • 任何行动者或车辆到达指定轨道的末端。指定的轨迹由最近一次对轨迹函数的调用来指定。

推进函数只在参与者和车辆有指定轨迹时更新它们。要更新没有指定轨迹的参与者和车辆,您可以设置位置速度球场偏航,或AngularVelocity属性在模拟期间的任何时间。

介绍了R2017a