主要内容

选择路径点虚幻引擎模拟

这个例子展示了如何从一个场景选择一个锚点序列和可视化的道路车辆以下中转地点3 d仿真环境。这个环境中使用虚幻引擎®®的史诗般的游戏。

介绍

自动驾驶工具箱™虚幻引擎集成仿真环境模型®。金宝app金宝app相关仿真软件模块仿真环境中可以找到drivingsim3d图书馆。这些模块提供的能力:

  • 在仿真环境中选择不同的场景。

  • 将场景中的车辆。

  • 连接和配置车辆上的传感器。

  • 模拟传感器数据基于车辆周围的环境。

这强大的仿真工具可以用来补充真正的数据在开发、测试和验证自动驾驶算法的性能。结合车辆模型,您可以使用这个环境来执行实际的闭环仿真,包括整个自动驾驶堆栈,从感知到控制。

使用这个环境的第一步是了解现场,沿着所需的车辆路径选择锚点。这一步是特别有用的场景下的定位算法不测试。这个例子的重点是第一步。

在本例中,您将:

  • 在MATLAB®可视化场景。

  • 交互式地选择场景中沿着路径锚点。

  • 设置仿真环境。

  • 沿着路径移动车辆。

想象的场景

首先,在MATLAB可视化场景。每一个场景都可以使用一个2 d顶视图可视化场景投影到一个图像。每个场景图像有一个对应的2 d空间引用对象的类imref2d描述图像中像素之间的关系和世界坐标的场景。使用helperGetSceneImage函数来获取场景图像和相关的空间参考。这个示例使用一个预先构建的场景的大型停车场。生成场景的自定义场景图像和空间参考,跟描述的过程创建自上而下的静态地图虚幻引擎的场景代替。

sceneName =“LargeParkingLot”;[sceneImage, sceneRef] = helperGetSceneImage (sceneName);

为了更好地理解的物理尺寸现场,检查sceneRef变量。的XWorldLimitsYWorldLimits属性指定的极限世界在X和Y方向。

sceneRef.XWorldLimits%(单位:米)
ans =1×2-78.6000 - 72.6000
sceneRef.YWorldLimits%(单位:米)
ans =1×2-77.7000 - 73.5000

可视化场景图像通过使用helperShowSceneImage函数。这个helper函数显示现场图窗口形象。使用平移和缩放工具来探索。

hScene =图;helperShowSceneImage (sceneImage sceneRef)标题(sceneName)

交互式地选择锚点

探索现场后,选择的路点定义一个路径车辆。这条路可以用来移动场景中的车辆。使用辅助函数helperSelectSceneWaypoints交互式地选择中转地点现场。

hFig = helperSelectSceneWaypoints (sceneImage sceneRef);

图绘制场景路径点包含一个坐标轴对象和其他对象类型的uicontrol。坐标轴对象包含一个类型的对象的形象。

这个helper函数打开一个图窗口选择的场景。

  • 探讨现场通过现场图像的缩放和移动。使用鼠标scrollwheel或轴缩放工具栏。在轴盘的边缘的方向。

  • 开始绘制一条路径通过点击现场。创建一个路径由多个点组成的折线。完成图的路径通过双击或右键。

  • 一旦你完成绘制路径,点击出口到工作区将变量导出到MATLAB工作区。在打开的对话框中,单击好吧导出一组变量的工作区。

以下数据导出到工作区,MATLAB变量:

  • 锚点:一个细胞数组,每个元素包含一个2的矩阵 ( x , y ) 锚点在世界坐标系。细胞数组的每个元素对应的路径点从不同的路径。

  • 路径构成:与每个元素包含单元阵列3的矩阵 ( x , y , θ ) 提出了包含每个路标的姿势。 x y 指定在米。 θ 指定在度。

%负载变量空间如果他们不存在如果存在(“refPoses”,“var”)= = 0 | |存在(“锚点”,“var”)= = 0%负载MAT-file包含预选的锚点data =负载(“waypointsLargeParkingLot”);数据= data.waypointsLargeParkingLot;%分配给调用者的工作区assignin (“来电”,“锚点”,{data.waypoints});assignin (“来电”,“refPoses”,{data.refPoses});结束

现在出口变量包含一系列的锚点(路点)和一系列的姿势(refPoses)。使用smoothPathSpline函数变换的顺序对一个 C 2 连续的路径。

numPoses =大小(refPoses {1}, 1);refDirections = 1 (numPoses, 1);%单向运动numSmoothPoses = 20 * numPoses;%增加这个姿势返回的数量增加[smoothRefPoses ~, cumLengths] = smoothPathSpline (refPoses {1}, refDirections, numSmoothPoses);

建立模型和仿真环境

打开VisualizeVehiclePathIn3DSimulation金宝app仿真软件模型。这个模型使用模拟3 d场景配置块选择所需的场景。下面的例子使用了大型停车场现场。模拟3 d场景配置块设置环境和建立模型和模拟之间的通信环境。金宝app

如果~ ispc错误([“3 d模拟仅支持微软的金宝appchar (174),“窗口”char (174),“。”]);结束modelName =“VisualizeVehiclePathIn3DSimulation”;open_system (modelName);snapnow;

沿着路径移动车辆

使用模拟3 d车辆与地面块地方,将场景中的车辆。模型建立接受变量refPosesX,refPosesY,refPosesT从工作空间使用从工作空间(金宝app模型)块。单独的 x , y θ newRefPoses成单独的时间序列。模型读取这些工作空间变量更新车辆的位置。

%配置模型停止仿真在5秒。simStopTime = 5;set_param (gcs,“StopTime”num2str (simStopTime));%创建一个恒定的速度剖面通过生成一个向量%的累积路径长度成正比。timeVector =正常化(cumLengths,“范围”[0,simStopTime]);%创建变量模型所需的模型。金宝apprefPosesX = [timeVector smoothRefPoses (: 1)];refPosesY = [timeVector smoothRefPoses (:, 2)];refPosesT = [timeVector smoothRefPoses (:, 3)];

当你模拟模型,需要几秒钟来初始化仿真环境。这个初始化完成后,将打开一个单独的窗口进行可视化仿真环境。下图是模拟环境的快照窗口。

运行仿真。图窗口图显示了车辆的路径遍历通过仿真环境。

sim (modelName);

%关闭模型和图的窗口。关上(hFig) close_system (modelName)关闭(hScene)

另请参阅

功能

相关的话题