主要内容

设计车道标记探测器使用虚幻引擎模拟环境

这个例子展示了如何使用一个3 d模拟环境记录合成传感器数据,开发一个车道标记检测系统和测试系统在不同的场景。这个模拟的环境呈现使用虚幻引擎从史诗游戏®®。

概述

开发一个可靠的感知系统可以非常具有挑战性的。视觉感知系统必须是可靠的在各种各样的情况下,特别是当它被用在一个完全自动化的系统,控制车辆。这个示例使用一个车道检测算法的过程来说明使用3 d仿真环境加强算法的设计。的主要焦点的例子是有效使用3 d仿真工具而不是算法本身。因此,本例中重用的感知算法视觉感知使用单眼相机的例子。

视觉感知使用单眼相机的例子使用记录视频数据开发视觉感知系统包含车道标记检测和分类,车辆检测和距离估计。使用记录的视频是一个很好的开始,但它是不够的探索许多其他情况下,可以更容易地在一个虚拟环境中合成。更复杂的场景可能包括复杂车道改变动作,闭塞的车道标记由于其他车辆,等等。最重要的是,闭环仿真涉及感知和控制的车辆,这两个需要虚拟环境,或一个真正的车辆。此外,测试一个真正的汽车很贵,因此使用3 d模拟环境非常有吸引力。

这个例子需要以下步骤让您熟悉一个方法来设计一个视觉感知算法:

  1. 介绍了3 d仿真环境模型®金宝app

  2. 指导您通过设置一个虚拟车辆和相机传感器

  3. 向您展示如何有效地设置调试环境为您的视觉感知算法

  4. 提出了如何提高场景的复杂性为闭环仿真做准备

介绍了3 d仿真环境

自动驾驶工具箱™集成了一个3 d仿真软件仿真环境。金宝app三维仿真环境使用虚幻引擎通过史诗般的游戏。金宝app仿真软件模块相关的3 d模拟环境提供的能力:

  • 选择不同的场景的三维可视化引擎

  • 将场景中的车辆

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

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

3 d仿金宝app真的仿真软件模块可以通过开放访问drivingsim3d图书馆。

帮助设计中视觉感知算法在本例中,您使用一个块定义了一个场景,一块控制虚拟车辆,和一块定义了一个虚拟摄像头。专注于检测车道标记的例子使用单眼相机系统。

创建一个简单的直路在3 d场景模拟

首先定义一个简单的场景涉及笔直的高速公路上行使车道标记检测算法。

open_system (“straightRoadSim3D”);

模拟3 d场景配置块让你选择一个预定义的场景,在这种情况下直路。当调用模型,它发射虚幻引擎®。的模拟3 d车辆与地面块创建一个虚拟车辆在游戏引擎和仿真软件可以控制其通过提供的地位金宝appXY米,偏航在度。X,Y,偏航世界坐标系统,指定的起源在中间。在这种情况下,由于道路是直,一个0.75米的抵消Y方向和一系列的增加X价值观推动车辆前进。后来的这个例子展示了如何定义没有诉诸于更复杂的动作X,Y,偏航设置基于试验和错误。

模型还包含一个模拟3 d相机块中提取视频帧从一个虚拟摄像机连接在后视镜内的虚拟车辆。相机摄像机参数让你模拟典型的参数,可以描述由针孔摄像机模型,包括焦距、相机光学中心,径向畸变,输出图像的大小。当调用模型,生成的场景显示从一个视角摄像机自动跟踪。

sim卡(“straightRoadSim3D”);

视觉感知模块的设计和调试

视觉感知通常是复杂的,它涉及是否经典计算机视觉或深度学习。开发这样一个系统通常需要快速迭代和增量的改进。虽然仿真软件是一个金宝app功能强大的系统级环境工程和闭环仿真,基于知觉算法通常在文本中开发像MATLAB或c++编程语言。此外,启动时间的模型需要建立动态仿真模块之间的通信和虚幻引擎®是显著的。金宝app由于这些原因,方便记录生成的图像数据虚拟摄像头视频和在MATLAB开发感知算法。以下模型相机记录到一个MP4文件在磁盘上。

open_system (“straightRoadVideoRecording”);

视频记录使用多媒体文件块。由此产生的straightRoad.mp4文件现在可以用于开发感知模块,不引起的启动时间处罚3 d仿真环境。

设计车道标记探测器,你使用的模块视觉感知使用单眼相机的例子。然而,如果你简单地移植现有的helperMonoSensor.m常规的例子中,即使是最简单的直路的场景不会产生好的结果。马上,你可以看到强大的虚拟环境。你可以选择任何轨迹或环境为您的车辆,因此让您探索许多假设场景之前,将感知模块在一个实际的车辆。

帮助的设计算法,使用提供的HelperLaneDetectorWrapper.m系统对象。这个系统对象在MATLAB当放置在工作MATLAB系统块(金宝app模型)在仿真金宝app软件。下面的脚本,helperStraightRoadMLTest从MATLAB命令提示符,调用包装器。这种方法允许快速迭代的设计没有连续调用3 d仿真环境。

helperStraightRoadMLTest

算法开始运行良好后,您可以将它放回一个模型如下所示。你可以尝试改变汽车的轨迹,证明的选择路径点虚幻引擎模拟的例子。这样,你就可以寻找方法将汽车这样算法失败。整个过程是迭代。

open_system (“straightRoadMonoCamera”);

浏览一个更复杂的场景来提高感知算法

在开发你的算法,可以提高场景的复杂性水平继续您的系统适应现实条件相似。在本节中,切换场景虚拟Mcity,它提供了延伸的道路弯曲的小巷,没有路标,或合并车道标记。

在您开始之前,您需要定义一个虚拟Mcity通过合适的轨迹,这是一个表示的实际测试,属于密歇根大学。看到如何获得一系列的细节X,Y,偏航值适合移动汽车通过一个复杂的环境中,请参考选择路径点虚幻引擎模拟的例子。关键步骤总结如下,为了您的方便。

%提取场景基于场景的图像位置的名字sceneName =“VirtualMCity”;[sceneImage, sceneRef] = helperGetSceneImage (sceneName);
%通过Mcity交互式地选择锚点helperSelectSceneWaypoints (sceneImage sceneRef)
%稀疏路标点转换成一个密集的轨迹,一辆汽车%按照numPoses =大小(refPoses, 1);refDirections = 1 (numPoses, 1);%单向运动numSmoothPoses = 20 * numPoses;%增加这个姿势返回的数量增加[newRefPoses, ~, cumLengths] = smoothPathSpline (refPoses, refDirections numSmoothPoses);
%创建一个恒定的速度剖面通过生成一个向量%的累积路径长度成正比simStopTime = 10;timeVector =正常化(cumLengths,“范围”[0,simStopTime]);
refPosesX = [timeVector newRefPoses (: 1)];refPosesY = [timeVector newRefPoses (:, 2)];refPosesYaw = [timeVector newRefPoses (:, 3)];

加载预配置的车辆使用上面所示的方法创建的姿势。

提出了=负载(“mcityPoses”);

几乎与预定义的轨迹,您现在可以通过车辆驾驶时间的一个复杂的虚拟环境。

open_system (“mcityMonoCamera”);sim卡(“mcityMonoCamera”);清晰的提出了;

很多次,结果都不太理想。例如,注意的障碍在哪里与车道标志相混淆,当选择感兴趣的区域进行分析捡起左边的车道太窄。

然而,探测器在其他方面表现良好的场景。

虚拟环境的主要观点是,让你压力测试设计,帮助你意识到你可能会遇到什么样的条件在真正的道路。你的算法在虚拟环境中运行也可以节省你的时间。如果你的设计不成功运行在虚拟环境中,那么就没有点运行它在实际车辆在路上,这是费时和昂贵得多。

闭环测试

最强大的特性之一,一个3 d仿真环境,它可以促进一个复杂的系统的闭环测试。例如,车道保持辅助涉及车辆的感知和控制。一旦感知系统是非常复杂的场景和完善执行好,它可以被用来驱动控制系统,将车驶。在这种情况下,而不是手动设置一个轨迹,车辆使用感知系统驱动本身。它是超出了这个例子的范围显示整个过程。然而,这里所描述的步骤应该为您提供如何设计和调试你的知觉系统之后可以用于更复杂的闭环仿真。

bdclose所有;

另请参阅

相关的话题