ADAS —— 高级驾驶员辅助系统,包含一系列硬件和软件组件,自动起到驾驶员的多项作用。目前,常见的车辆 ADAS 功能包括自适应巡航控制、盲点检测、变道检测、自动车道跟随和自动紧急制动。
本文将涵盖三个内容:为什么 ADAS 如此重要?ADAS 功能是如何设计的?如何使用 MATLAB 与 Simulink 助力 ADAS 开发? 为什么 ADAS 如此重要? ADAS 可通过最大限度降低人为错误来提高道路交通安全性。一些 ADAS 系统会在出现不安全的路况时(例如驾驶员盲点处出现一辆车,导致变道可能发生危险时)发出警示,从而强制驾驶员执行安全驾驶习惯。还有一些 ADAS 系统实现了驾驶行为的自动化,如通过自主紧急制动避免碰撞。 事实上,根据波士顿咨询公司的一项研究,在美国,ADAS 可预防 28% 的车祸,每年避免 9900 起死亡。 ADAS 级别 根据国际自动机工程师学会的定义,驾驶自动化有五个级别。现在路上能看到的大部分汽车的 ADAS 功能介于 0 到 3 级之间。身处自动驾驶行业前沿的公司则在努力实现 4 级和 5 级自动驾驶。
SAE J3016 自动驾驶等级 随着安全性、网络安全和政策问题的解决,全自动驾驶汽车可能会成为现实。
ADAS 功能是如何设计的?
下面我们以自适应巡航控制为例说明 ADAS 功能的设计过程。使用此 ADAS 功能时,汽车在接近前方车辆时会减速;如果前方车辆移至安全距离之外,汽车会加速到巡航速度。 自适应巡航控制 (ACC) 设计工作的第一步是从汽车上安装的传感器采集数据。自适应巡航控制需要用到相机和雷达传感器。相机用于检测视线范围内的其他目标(车辆、行人、树木等),雷达则用于计算我方汽车与这些目标之间的距离。 从传感器采集数据后,我们把重点转向 ADAS 算法开发。自适应巡航控制可分为 3 步:
步骤 1、2、3 分别与以下内容对应:
检测前方是否有车辆的感知算法
计算与前车之间距离的雷达算法
根据测定距离调整汽车速度的控制算法。
我们在此以 ACC 为例解释 ADAS,不过选择传感器、然后根据传感器数据设计算法是一种通用方法,适用于所有 ADAS 功能。
传感器的重要性
ADAS 功能中最常用的三种传感器类型是相机、雷达以及激光雷达。
相机 相机适合用于与检测相关的 ADAS 任务。车辆侧边的相机可用于检测盲点。位于前方的相机可检测车道、其他车辆、路标、行人以及骑车人。相关 ADAS 检测算法一般使用传统计算机视觉和深度学习算法进行构建。相机的优势有:
可提供极佳的目标检测数据
成本相对较低 - 对于制造商而言,价格低意味着可以更低成本测试多种类型的相机
选择颇多 - 开发人员可对鱼眼、单目和针孔等类型的相机进行测试并从中选择
具备充分研究 - 相机是三类传感器中历史最悠久的,也得到了最充分的研究。
与其他传感器类型的数据相比,相机数据的缺点是不太适合用于检测与目标之间的距离。因此,ADAS 开发人员通常会将相机与雷达搭配使用。
雷达
雷达传感器会发射高频波,并记录波从环境中的目标上反射回来的时间。这种数据可用于计算与目标之间的距离。ADAS 中的雷达传感器通常安装于车辆前部。 雷达可在不同的天气条件下工作,这使其成为实现自动紧急制动和自适应巡航控制等 ADAS 功能时非常实用的传感器选项。 雷达传感器数据非常适合距离检测算法,但并不太适合对检测到的目标进行分类的算法。因此,ADAS 开发人员通常将雷达与相机搭配使用。
激光雷达
激光雷达(光学检测和距离测定)传感器向环境发射激光并记录信号返回的时间。返回的信号将被重构以创建显示激光雷达周遭环境的三维点云。激光雷达数据可用于计算传感器与三维点云中目标之间的距离。 ADAS 应用中会用到两种类型的激光雷达传感器:
机械(旋转)激光雷达 - 机械激光雷达安装在车辆顶部,它会在采集数据同时旋转以生成环境的三维点云地图。
固态激光雷达 - 这是一种比较新型的激光雷达,没有移动部件。长远来看,固态激光雷达的速度、成本以及准确性都有望优于机械激光雷达。然而,商用传感器的设计面临安全性和检测范围方面的工程问题。
激光雷达数据可用于实现 ADAS 中的距离检测和目标分类功能。不过,与相机数据和雷达数据相比,激光雷达数据的处理需要更强的计算能力,这也给 ADAS 算法开发人员带来一些挑战。
使用仿真开发 ADAS 算法
在硬件上进行测试成本高昂,所以工程师们会先使用虚拟仿真技术来测试其 ADAS 解决方案。仿真环境既可以是二维的,也可以是三维的。 二维仿真可用于相机与雷达的 ADAS 算法的开发和测试。我们首先创建包含道路、行人、骑车人和其他车辆的虚拟场景。然后将我们的车辆放入场景,并将虚拟的相机和雷达传感器装载在车辆上。接下来就可以对汽车的运动进行编程,从而生成虚拟传感器数据以进行 ADAS 算法的开发和测试。 三维仿真建立在二维仿真的基础上,不仅支持测试相机和雷达,还可测试激光雷达。三维环境的复杂度相对较高,所以需要更强的算力。 在仿真环境中完成 ADAS 算法的开发工作后,下一个阶段是硬件在环 (HIL) 测试。该阶段需要将真实汽车硬件(如真实制动系统)连接到仿真环境,以对 ADAS 算法进行测试。HIL 测试能够让我们对车辆的 ADAS 组件在现实世界中的运作情况有很好的了解。 除此以外,还有驾驶员在环等其他 ADAS 测试,而车载测试则是最终的测试,该阶段将考察所有部件组合在一起时车辆的性能表现。这是成本最高的 ADAS 测试,但同时也是结果最准确的测试,它是车辆投产前必不可少的环节。
借助 MATLAB 与 Simulink 构建 ADAS 功能
MATLAB 与 Simulink 可在 ADAS 开发工作流的各个阶段提供支持:
分析数据
合成驾驶场景
设计 ADAS 规划与控制算法
设计感知算法
部署算法
集成和测试
分析数据 MATLAB 让您可以在 ADAS 开发过程中访问、可视化以及标注实时或记录的驾驶数据。MATLAB 还支持来自 HERE HD Live Maps、OpenStreetMap 和 Zenrin Japan Maps 的地理地图数据。这些数据经常用于 ADAS 算法开发与验证工作。
真值标注器用于在视频、图像序列或激光雷达点云中以交互方式标注真值数据。
合成驾驶场景
MATLAB 支持您在虚拟场景中开发和测试 ADAS 算法,针对控制、传感器融合及运动规划算法可使用立方体模拟环境,针对感知算法则可使用虚幻引擎环境。您还可使用 RoadRunner 来设计逼真的三维场景。
驾驶场景设计器可用于 ADAS 应用中的场景设计、传感器配置以及合成数据生成。
设计 ADAS 规划与控制算法
MATLAB 提供许多自动驾驶参考应用,可作为自行设计 ADAS 规划和控制算法的起点。
在鸟瞰图中直观显示高速公路驾驶场景中各条可能轨迹的评估。
设计感知算法
MATLAB 提供了使用相机、雷达和激光雷达数据开发感知算法的工具。您可使用计算机视觉、深度学习、雷达与激光雷达处理以及传感器融合等进行算法开发。 借助 MATLAB 使用预训练的 R-CNN 检测停车标志。
部署 ADAS 算法
MATLAB Coder、Embedded Coder 和 GPU Coder 等工具箱可帮助您自动生成代码,并将 ADAS 算法部署到嵌入式设备和面向服务的架构中(如 ROS 和 AUTOSAR)。 一块 NVIDIA Jetson TX2 开发板。可使用 GPU Coder 为其生成 CUDA 代码
集成和测试
您可借助 Simulink 工具来集成并测试感知、规划和控制系统。使用 Requirements Toolbox,您可以捕获和管理 ADAS 需求。您也可以使用 Simulink Test 以并行方式运行测试用例,并实现测试工作的自动化。
高速公路车道跟随参考应用需求测试。