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