主要内容

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

这个例子展示了如何以编程方式创建演员和车辆轨迹对于驾驶场景使用自动驾驶工具箱™函数。创建演员和车辆轨迹交互,使用驾驶场景设计师应用程序。

演员和车辆

演员在驾驶的情况下被定义为长方体对象与一个特定的长度,宽度和高度。演员也有雷达截面(dBsm中指定),您可以通过定义完善角坐标(方位角和仰角)。长方体的驾驶场景定义一个演员的位置为中心的底部的脸。驾驶场景使用这一点作为演员与地面的接触点。这一点也是演员的旋转中心。

汽车是一种特殊的演员,车轮上的移动。车辆具有三个属性管理前后轮轴的位置。

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

  • 前悬是前轴之间的距离和车辆的前面。

  • 后方过剩后桥之间的距离,后面的车辆。

与演员、地面车辆的位置在后桥的中心。这个位置对应的自然中心的旋转。

这个表显示了一个典型的演员名单和相应的维度:

这个代码块的位置一个演员,维度的一个典型的人类,和车辆驾驶场景。演员和车辆位于位置(0,2)和(0,2),分别。

场景= drivingScenario;=演员(的情况下,“ClassID”,1“长度”,0.24,“宽度”,0.45,“高度”,1.7);passingCar =车辆(场景中,“ClassID”1);一个。位置= [0 2 0]passingCar。位置=[0 2 0]阴谋(场景)ylim ((4 - 4))
=演员的属性:EntryTime: 0 ExitTime:正ActorID: 1 ClassID: 1名称:“PlotColor:[0 0.4470 - 0.7410]位置:[0 2 0]速度:[0 0 0]偏航:0节:0卷:0 AngularVelocity:(0 0 0)长度:0.2400宽度:0.4500高度:1.7000网:[1 x1 extendedObjectMesh] RCSPattern: [2 x2双]RCSAzimuthAngles: 180年[-180]RCSElevationAngles: [-90 90] passingCar =车辆属性:FrontOverhang: 0.9000 RearOverhang: 1轴距:2.8000 EntryTime: 0 ExitTime:正ActorID: 2 ClassID: 1名称:“PlotColor:(0.8500 0.3250 0.0980)位置:[0 2 0]速度:[0 0 0]偏航:0节:0卷:0 AngularVelocity:(0 0 0)长度:4.7000宽度:1.8000高度:1.4000网:[1 x1 extendedObjectMesh] RCSPattern: [2 x2双]RCSAzimuthAngles: 180年[-180]RCSElevationAngles: (-90 90)

默认情况下,场景图显示了一个俯视的演员。改变这种观点,你可以操纵场景情节交互式地选择相机工具栏可用的视图菜单的阴谋。另外,您可以通过编程的方式操纵阴谋使用等功能xlim,ylim,zlim,视图。这些功能使您能够比较的相对高度的演员。

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

定义轨迹

通过使用smoothTrajectory功能,您可以指定演员和车辆跟随路径以及一组路径点在一组给定的速度。当你指定路径点,smoothTrajectory功能符合分段回旋曲线曲线锚点之间的每一部分,保留点之间的曲率。回旋曲线曲线的曲率与距离线性变化,这将创建一个非常简单的轨迹为驾驶员导航旅行时在恒定速度。

默认情况下,演员没有轨迹曲率的端点。完成一个循环,指定相同的第一个和最后一个锚点。

遵循以恒定的速度,整个轨迹指定速度作为一个标量值。

车辆通过曲线锚点之间的旋转中心。因此,以适应车辆的长度在仿真期间后桥的背后,你可以抵消开始和结束的锚点。完全抵消这些路径点适合车辆在道路的端点。

如果车辆需要迅速避开障碍物,把两个点接近预期的发展方向。这个例子显示了一个汽车将很快在两个地方,否则转向正常。

场景= drivingScenario;路(场景中,[0 0;10 0;53 -20],“道”lanespec (2));情节(场景中,“锚点”,“上”)idleCar =车辆(场景中,“ClassID”,1“位置”0],[25 -5.5,“偏航”,-22);passingCar =车辆(场景中,“ClassID”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;smoothTrajectory (passingCar、锚点、速度)
passingCar =车辆的属性:FrontOverhang: 0.9000 RearOverhang: 1轴距:2.8000 EntryTime: 0 ExitTime:正ActorID: 2 ClassID: 1名称:“PlotColor:(0.8500 0.3250 0.0980)位置:[0 0 0]速度:[0 0 0]偏航:0节:0卷:0 AngularVelocity:(0 0 0)长度:4.7000宽度:1.8000高度:1.4000网:[1 x1 extendedObjectMesh] RCSPattern: [2 x2双]RCSAzimuthAngles: 180年[-180]RCSElevationAngles: (-90 90)

或者,您可以使用更少的路径点在这样将通过显式地设置偏航方向角的车辆在每一个路标。偏航逆时针方向为正,在度及其单位。在这个变化之前的示例中,车辆的轨迹是限制在-15度角后进入左边的车道。通过设置一个路标,smoothTrajectory功能默认为回旋曲线拟合曲线段的主要路径。在这种情况下,这部分是最终的轨迹。

路点= [1 -1.5;16.6 - -2.1;23.7 - -0.9;52.2 - -17.6);偏航= [0;0;-15;南);smoothTrajectory (passingCar锚点、速度、“偏航”偏航)

十字路口的转弯和刹车

对于急转弯,要么定义路径点近的开始和结束的偏航转弯或显式地设置车辆在每一个路标。这个设置忠实呈现突然转向的变化。

在这个例子中,汽车使大幅使用显式地设置在一个路口左转偏航值。在第一个路标,路标前,车辆的偏航0度。在转身后的航点最后的路标,车辆偏航90度,这是车辆的方向后完成。通过约束轨迹,使车辆达到这些偏航方向,车辆将比如果你有使用尖锐的默认偏航方向。

smoothTrajectory生成一个光滑函数,jerk-limited轨迹,没有加速度之间的锚点的不连续性。当不同车辆的速度,例如将放缓,锚点之间的距离必须足够大的车辆达到所需的速度,同时保持平稳加速。另外,在较短的距离,速度的变化必须相对较小。在这个例子中,车辆从6米/秒的速度减慢到5 m / s,因为它进入。完成后,车辆加速回到原来的速度。

场景= drivingScenario;路(场景中,[0 -25;0 25),“道”lanespec ([1]));路(场景中,[-25 0;25 0],“道”lanespec ([1]));turningCar =车辆(场景中,“ClassID”1);路点= [-20 2;5 - 2;2 5;2 20);速度= (6 5 5 6);偏航= [0 0 90 90];smoothTrajectory (turningCar锚点、速度、“偏航”、偏航)情节(场景中,“锚点”,“上”)

移动车辆

在您定义的所有道路,演员,演员轨迹,可以增加每个演员使用的位置推进函数驱动场景在一个循环中。

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

在反向移动车辆

指定反向驱动动作,指定一个负速度轨迹。在正向和反向运动之间切换时,您必须指定一个路径点之间运动的速度0。在这个路标,汽车减慢,直到完全停止,然后改变行驶方向。

这个例子中扩展了前面的示例。这一次,完成后左转,交叉路口车辆备份和反转。然后,再次汽车开关的方向推动,直到它阻止对面车道上开始。因为车辆以缓慢的速度,加快仿真,仿真之间指定一个更短的暂停更新。

场景= drivingScenario;路(场景中,[0 -25;0 25),“道”lanespec ([1]));路(场景中,[-25 0;25 0],“道”lanespec ([1]));turningCar =车辆(场景中,“ClassID”1);路点= [-20 2;5 - 2;2 5;2 20;2 5;5 - 2;-20 2];速度= (6 5 5 0 2 0 5);偏航= [0 0 90 90 -90 0 -180); smoothTrajectory(turningCar,waypoints,speed,“偏航”、偏航)情节(场景中,“锚点”,“上”)推进(场景)暂停(0.001)结束

下一个步骤

这个例子展示了如何创建演员和车辆轨迹的驾驶场景中使用drivingScenario对象。模拟、可视化或修改这个驾驶场景在一个交互式的环境,试着导入drivingScenario对象进驾驶场景设计师应用程序通过使用这个命令:

drivingScenarioDesigner(场景)

另请参阅

应用程序

对象

功能

相关的话题