选择路径点虚幻引擎模拟
这个例子展示了如何从场景中选择一系列路径点,并在3D仿真环境中可视化车辆沿着这些路径点行驶的路径。该环境使用Epic Games®的虚幻引擎®。
简介
自动驾驶工具箱™在Simulink®中集成了虚幻引擎仿真环境。与仿真环境相关的Simulink块可以在drivingsim3d
图书馆。这些块提供了以下功能:
在仿真环境中选择不同的场景。
在现场放置和移动车辆。
在车辆上安装和配置传感器。
基于车辆周围环境模拟传感器数据。
在开发、测试和验证自动驾驶算法的性能时,这个强大的仿真工具可以用来补充真实数据。结合车辆模型,您可以使用该环境执行现实的闭环模拟,包括整个自动驾驶堆栈,从感知到控制。
使用该环境的第一步是理解场景并沿着所需的车辆路径选择路径点。这一步特别适用于没有测试定位算法的场景。本例主要讨论第一步。
在这个例子中,你将:
在MATLAB®中可视化场景。
交互式地沿着场景中的路径选择路径点。
设置仿真环境。
把车沿着小路移动。
想象的场景
首先,在MATLAB中可视化场景。每个场景都可以使用场景在图像上的2D俯视图投影来可视化。每个场景图像都有对应的二维空间参考对象的类imref2d
描述图像中的像素与场景的世界坐标之间的关系。使用helperGetSceneImage
函数检索场景图像和相关的空间参考。这个例子使用了一个大型停车场的预构建场景。要为自定义场景生成场景图像和空间参考,请遵循中描述的过程创建自上而下的虚幻引擎场景地图代替。
sceneName =“LargeParkingLot”;[sceneImage, sceneRef] = helperGetSceneImage(sceneName);
为了更好地理解场景的物理尺寸,检查sceneRef
变量。的XWorldLimits
而且YWorldLimits
属性指定了世界在X和Y方向的极限。
sceneRef。XWorldLimits%(单位:米)
ans =1×2-78.6000 - 72.6000
sceneRef。YWorldLimits%(单位:米)
ans =1×2-77.7000 - 73.5000
方法可视化场景图像helperShowSceneImage
函数。这个辅助函数在图形窗口中显示场景图像。使用平移和缩放工具来探索场景。
hScene =图;helperShowSceneImage (sceneImage sceneRef)标题(sceneName)
交互式地选择锚点
在探索场景后,选择一组路径点来定义车辆的路径。这个路径可以用来移动场景中的车辆。使用helper函数helperSelectSceneWaypoints
交互式地选择场景中的路径点。
hFig = helperSelectSceneWaypoints(sceneImage, sceneRef);
这个助手函数打开一个带有所选场景的图形窗口。
通过缩放和平移场景图像来探索场景。使用鼠标滚轮或轴工具栏进行缩放。悬停在坐标轴的边缘上,向那个方向平移。
点击场景开始绘制路径。路径被创建为由多个点组成的折线。通过双击或右键单击完成绘制路径。
绘制完路径后,单击出口到工作区将变量导出到MATLAB工作区。在弹出的对话框中,单击好吧将一组变量导出到工作区。
以下数据作为MATLAB变量导出到工作区:
锚点:单元格数组,其中每个元素包含米2的矩阵 世界坐标中的路径点。单元格数组的每个元素都对应于来自不同路径的路径点。
路径构成:单元格数组,每个元素包含米3的矩阵 包含每个路径点的姿态的姿态。 而且 以米为单位。 以度数指定。
%如果变量不存在,则将其加载到工作区如果存在(“refPoses”,“var”) = = 0 | |存在(“锚点”,“var”) = = 0加载包含预选路径点的mat文件data =负载(“waypointsLargeParkingLot”);数据= data.waypointsLargeParkingLot;分配给调用者工作区assignin (“来电”,“锚点”, {data.waypoints});assignin (“来电”,“refPoses”, {data.refPoses});结束
导出的变量现在包含一个路径点序列(路点
)和一系列的姿势(refPoses
).使用smoothPathSpline
函数将姿势序列转换为a
连续的路径。
numpose = size(refpose {1}, 1);refDirections = 1 (numPoses, 1);%单向运动numsmoothpose = 20 * numpose;增加这个可以增加返回的姿势的数量[smoothrefposed,~, cumlength] = smoothPathSpline(refposed {1}, refDirections, numsmoothposed);
建立模型和仿真环境
打开VisualizeVehiclePathIn3DSimulation
仿真软件模型。此模型使用仿真3D场景配置块来选择所需的场景。此示例使用大型停车场现场。仿真3D场景配置块建立环境,并在Simulink和仿真环境之间建立通信。
如果~ ispc错误([“3D模拟只支持微软”char (174),“窗口”char (174),“。”]);结束modelName =“VisualizeVehiclePathIn3DSimulation”;open_system (modelName);snapnow;
车辆沿小径移动
使用模拟三维车辆与地面跟踪阻挡放置和移动车辆在现场。该模型被设置为接受变量refPosesX
,refPosesY
,refPosesT
从工作区中使用从工作空间(模型)块。单独的
,
而且
从newRefPoses
变成单独的时间序列。模型读取这些工作空间变量来更新车辆的位置。
配置模型在5秒后停止模拟。simStopTime = 5;set_param (gcs,“StopTime”num2str (simStopTime));通过生成一个时间矢量来创建一个匀速剖面。%与累积路径长度成正比。timeVector =正常化(cumLengths,“范围”[0, simStopTime]);创建Simulink模型所需的变量。。refPosesX = [timeVector, smoothrefposed (:,1)];refPosesY = [timeVector, smoothrefpose (:,2)];refPosesT = [timeVector, smoothrefposed (:,3)];
在模拟模型时,需要几秒钟的时间来初始化模拟环境。初始化完成后,将打开一个单独的窗口,用于模拟环境可视化。下图是模拟环境窗口的快照。
运行仿真。图窗口图显示了车辆在仿真环境中所经过的路径。
sim (modelName);
关闭模型和图形窗口。关上(hFig) close_system (modelName)关闭(hScene)