以编程方式创建演员和车辆轨迹

此示例显示了如何使用自动化驾驶工具箱™功能以编程方式为驾驶场景创建演员和车辆轨迹。以交互式地创建演员和车辆轨迹,使用驾驶场景设计师应用程序。

演员和车辆

驾驶场景中的演员被定义为具有特定长度,宽度和高度的长方体对象。演员还具有雷达横截面(在DBSM中指定),您可以通过定义角坐标(方位角和高程)来改进。长方体驾驶场景将演员的位置定义为其底面的中心。驱动场景使用这一点作为演员与地面的接触点。这一点也是演员的旋转中心。

车辆是一种在车轮上移动的特殊演员。车辆拥有三种额外的属性,用于控制前桥和后桥的放置。

  • 轴距是前轴和后轴之间的距离。

  • 前突出是前桥和车辆前部之间的距离量。

  • 后突破是后桥与车辆尾部之间的距离。

与演员不同,车辆的位置位于后轴的中心的地面上。该位置对应于车辆的自然旋转中心。

此表显示了典型的演员列表及其相应的尺寸:

该代码绘制演员的位置,典型人的尺寸和驾驶场景中的车辆。演员和车辆分别位于位置(0,2)和(0,-2)处。

场景= drivingScenario;a =演员(情景,'班级号',1,“长度”,0.24,'宽度', 0.45,“高度”,1.7);casccar =车辆(方案,'班级号'1);A.Position = [0 2 0] catchcar.position = [0 -2 0]绘图(方案)ylim([ -  4 4])
a =具有属性的actor:entrytime:0 exittime:1 classid:1名称:“”绘图彩色:[0 0.4470 0.7410]位置:[0 2 0]速度:[0 0 0]偏航:0间距:0卷:0 Angular velocity:长度:0.2400宽度:0.4500高度:1.7000网格:[1x1 ExtendedObjectmesh] rcSpattern:[2x2 Double] rcsazimuths:[-90 90] COSTCAR =具有属性的车辆:前端:0.9000后行:1滚轮:2.8000入口时间:0 exittime:2分类:1名称:“”绘图彩色:[0.8500 0.3250 0.0980]位置:[0 -2 0]速度:[0 0]默认:[0 0]默认:0音高:0卷:0 Angular velocity:[0 0 0]长度:4.7000宽度:1.8000高度:1.4000网格:[1x1 ExtendedObjectmesh] rcSpattern:[2x2 Double] RCSazimuths:[-180 180] rcselevationangles:[-90 90]

默认情况下,场景图显示参与者的俯视视图。要更改此视图,您可以通过选择相机工具栏可用于看法情节的菜单。或者,您可以通过使用诸如的功能来编程方式操作图XLIM.ylim.zlim,看法。这些功能使您可以比较演员的相对高度。

zlim([0 4])视图(-60,30)

定义轨迹

通过使用弹道函数,您可以指定演员和车辆以一组给定的速度沿着一组路点沿着一条路径。指定路径点时,路径弹道功能适合在航点之间的每个段的分段卷曲曲线,在点之间保持曲率。桃花曲线具有线性地随距离而变化的曲率,这为驱动器产生非常简单的轨迹,以在恒定速度行驶时导航。

默认情况下,Actor轨迹在端点上没有曲率。要完成循环,请指定相同的第一个和最后一个航点。

要以恒定速度遵循整个轨迹,请将速度指定为标量值。

车辆通过其旋转中心的航点之间的曲线。因此,为了在仿真期间容纳后桥前后车辆的长度,可以抵消开始和结束航点。抵消这些航点在其端点完全符合车辆。

如果车辆需要快速转动以避免障碍物,请将两个点放在一起的预期行程方向。这个例子显示了在两个地方快速转动的车辆,但是通常转向。

场景= drivingScenario;道路(场景,[0 0; 10 0; 53-20],'车道',lanespec(2));情节(场景,'waypoints''上')IDleCar =车辆(方案,'班级号',1,“位置”,[25-5.5 0],'偏航', -22);casccar =车辆(方案,'班级号',1)路径点= [1 -1.5;16.36 - -2.5;17.35 - -2.765;23.83 - -2.01;24.9 - -2.4;50.5 - -16.7);速度= 15;轨迹(passingCar、锚点、速度)
COLLYCAR =带有物业的车辆:前端行:0.9000 REREROVERHANG:1滚轮:2.8000入口时间:0 exittime:2 CLASSID:1名称:“”绘图彩色:[0.8500 0.3250 0.0980]位置:[0 0]速度:[0 00]偏航:0间距:0滚动:0 Angular velocity:长度:4.7000宽度:1.8000高度:1.4000网格:[1x1 ExtendedObjectmesh] rcSpattern:[2x2 double] rcsazimuths:[-180 180] rcselevationangles:[ -90 90]

或者,您可以通过在每个航点处明确地设置车辆的横摆方向角度来使用更少的航点。横摆在逆时针方向上是积极的,其单位处于度数。在前面示例的这种变型中,轨迹被约束使得车辆进入左车道之后的车辆处于-15度角。通过设置航点, 这弹道功能默认为将梭曲线拟合到通向该航点的段。在这种情况下,该段是轨迹中的最后一个。

航点= [1-1.5;16.6 -2.1;23.7 -0.9;52.2 -17.6];yaw = [0;0;-15;[轨迹(COSSCAR,航点,速度,'偏航',偏航)

在交叉点处转动和制动

对于急转弯,定义在旋转开始和结尾处的路点,或者在每个航点处明确地设置车辆的偏航。这种环境忠实地使转向的突然变化。

在这个例子中,一辆车在十字路口使用明确设置的偏航值进行急转弯。在第一个路径点和转弯前的路径点,车辆有0度的偏航。在转弯后的路径点和最终路径点,车辆有90度的偏航,这是车辆完成转弯后的方向。通过约束轨迹,使车辆实现这些偏航方向,车辆转弯比使用默认偏航方向时更尖锐。

要指定车辆遵循分段恒定加速的曲线,请在每个航点处指定车速。在该示例中,车辆从20米/秒的速度减速,并且在位置(-5,-2)处的简要完整停止。完成转弯后,车辆逐渐加速回其原始速度。

场景= drivingScenario;路(场景中,[0 -25;0 25),'车道'lanespec ([1]));道路(情景,[ -  25 0; 25 0],'车道'lanespec ([1]));turningCar =车辆(场景中,'班级号'1);路径点= [-20 -2;5 - 2;2 5;2 20];速度= [15 5 5 15];yaw = [0 0 90 90];轨迹(转向卡,航点,速度,'偏航',偏航)情节(情景,'waypoints''上'

移动车辆

定义所有道路,演员和演员轨迹后,您可以使用使用的递增每个actor的位置进步在循环中的驾驶场景上的功能。

前进(方案)暂停(0.01)结尾

将车辆相反

若要指定反向驾驶运动,请指定负速度的轨迹。当在正向和反向运动之间切换时,你必须在这些运动之间指定一个路径点,其速度为0.。在此航点,车辆减速,直到达到完整的停止,然后改变行驶方向。

此示例在前面的示例中展开。这次,在完成左转后,车辆备份并在交叉路口逆转。然后,车辆再次切换方向并向前推动,直到它停止在其启动的相对的道路中。

场景= drivingScenario;路(场景中,[0 -25;0 25),'车道'lanespec ([1]));道路(情景,[ -  25 0; 25 0],'车道'lanespec ([1]));turningCar =车辆(场景中,'班级号'1);路径点= [-20 -2;5 - 2;2 5;2 20;2 5;5 - 2;-20 2];速度= [15 5 5 0 -15 0 15];Yaw = [0 0 90 90 -90 0 -180]; trajectory(turningCar,waypoints,speed,'偏航',偏航)情节(情景,'waypoints''上'前进(方案)暂停(0.01)结尾

下一步

此示例显示了如何使用a创建驾驶场景的演员和车辆轨迹驱动器Cenario.目的。要在交互环境中模拟,可视化或修改此驱动方案,请尝试导入驱动器Cenario.对象进入驾驶场景设计师应用程序使用此命令:

驱动器CenarioDesigner(方案)

也可以看看

应用

对象

职能

相关的话题