ADAS

什么是 ADAS?

不可不知的三大要点

高级驾驶员辅助系统 (ADAS) 包含一系列硬件和软件组件,自动起到驾驶员的多项作用。目前,常见的车辆 ADAS 功能包括自适应巡航控制、盲点检测、变道检测、自动车道跟随和自动紧急制动。

为什么 ADAS 如此重要?

ADAS 可通过最大限度降低人为错误来提高道路交通安全性。一些 ADAS 系统会在出现不安全的路况时(例如驾驶员盲点处出现一辆车,导致变道可能发生危险时)发出警示,从而强制驾驶员执行安全驾驶习惯。还有一些 ADAS 系统实现了驾驶行为的自动化,如通过自主紧急制动避免碰撞。

事实上,根据波士顿咨询公司的一项研究,在美国,ADAS 可预防 28% 的车祸,每年避免 9900 起死亡。

ADAS 级别

根据国际自动机工程师学会的定义,驾驶自动化有五个级别。现在路上能看到的大部分汽车的 ADAS 功能介于 0 到 3 级之间。身处自动驾驶行业前沿的公司则在努力实现 4 级和 5 级自动驾驶。

自動運転の SAE J3016 レベル

自動運転の SAE J3016 レベル

随着安全性、网络安全和政策问题的解决,全自动驾驶汽车可能会成为现实。

ADAS 功能是如何设计的?

下面我们以自适应巡航控制为例说明 ADAS 功能的设计过程。使用此 ADAS 功能时,汽车在接近前方车辆时会减速;如果前方车辆移至安全距离之外,汽车会加速到巡航速度。

自适应巡航控制 (ACC) 设计工作的第一步是从汽车上安装的传感器采集数据。自适应巡航控制需要用到相机和雷达传感器。相机用于检测视线范围内的其他目标(车辆、行人、树木等),雷达则用于计算我方汽车与这些目标之间的距离。

从传感器采集数据后,我们把重点转向 ADAS 算法开发。自适应巡航控制可分为 3 步:

检测前方是否有车辆的感知算法

步骤 1、2、3 分别与以下内容对应:

  1. 检测前方是否有车辆的感知算法
  2. 计算与前车之间距离的雷达算法
  3. 根据测定距离调整汽车速度的控制算法。

我们在此以 ACC 为例解释 ADAS,不过选择传感器、然后根据传感器数据设计算法是一种通用方法,适用于所有 ADAS 功能。

传感器的重要性

ADAS 功能中最常用的三种传感器类型是相机、雷达以及激光雷达。

相机

相机适合用于与检测相关的 ADAS 任务。车辆侧边的相机可用于检测盲点。位于前方的相机可检测车道、其他车辆、路标、行人以及骑车人。相关 ADAS 检测算法一般使用传统计算机视觉和深度学习算法进行构建。相机的优势有:

  • 可提供极佳的目标检测数据
  • 成本相对较低 - 对于制造商而言,价格低意味着可以更低成本测试多种类型的相机
  • 选择颇多 - 开发人员可对鱼眼、单目和针孔等类型的相机进行测试并从中选择
  • 具备充分研究 - 相机是三类传感器中历史最悠久的,也得到了最充分的研究。

与其他传感器类型的数据相比,相机数据的缺点是不太适合用于检测与目标之间的距离。因此,ADAS 开发人员通常会将相机与雷达搭配使用。

雷达

雷达传感器会发射高频波,并记录波从环境中的目标上反射回来的时间。这种数据可用于计算与目标之间的距离。ADAS 中的雷达传感器通常安装于车辆前部。

雷达可在不同的天气条件下工作,这使其成为实现自动紧急制动和自适应巡航控制等 ADAS 功能时非常实用的传感器选项。

雷达传感器数据非常适合距离检测算法,但并不太适合对检测到的目标进行分类的算法。因此,ADAS 开发人员通常将雷达与相机搭配使用。

激光雷达

激光雷达(光学检测和距离测定)传感器向环境发射激光并记录信号返回的时间。返回的信号将被重构以创建显示激光雷达周遭环境的三维点云。激光雷达数据可用于计算传感器与三维点云中目标之间的距离。

ADAS 应用中会用到两种类型的激光雷达传感器:

  1. 机械(旋转)激光雷达 - 机械激光雷达安装在车辆顶部,它会在采集数据同时旋转以生成环境的三维点云地图。
  2. 固态激光雷达 - 这是一种比较新型的激光雷达,没有移动部件。长远来看,固态激光雷达的速度、成本以及准确性都有望优于机械激光雷达。然而,商用传感器的设计面临安全性和检测范围方面的工程问题。

激光雷达数据可用于实现 ADAS 中的距离检测和目标分类功能。不过,与相机数据和雷达数据相比,激光雷达数据的处理需要更强的计算能力,这也给 ADAS 算法开发人员带来一些挑战。

使用仿真开发 ADAS 算法

在硬件上进行测试成本高昂,所以工程师们会先使用虚拟仿真技术来测试其 ADAS 解决方案。仿真环境既可以是二维的,也可以是三维的。

二维仿真可用于相机与雷达的 ADAS 算法的开发和测试。我们首先创建包含道路、行人、骑车人和其他车辆的虚拟场景。然后将我们的车辆放入场景,并将虚拟的相机和雷达传感器装载在车辆上。接下来就可以对汽车的运动进行编程,从而生成虚拟传感器数据以进行 ADAS 算法的开发和测试。

三维仿真建立在二维仿真的基础上,不仅支持测试相机和雷达,还可测试激光雷达。三维环境的复杂度相对较高,所以需要更强的算力。

在仿真环境中完成 ADAS 算法的开发工作后,下一个阶段是硬件在环 (HIL) 测试。该阶段需要将真实汽车硬件(如真实制动系统)连接到仿真环境,以对 ADAS 算法进行测试。HIL 测试能够让我们对车辆的 ADAS 组件在现实世界中的运作情况有很好的了解。

除此以外,还有驾驶员在环等其他 ADAS 测试,而车载测试则是最终的测试,该阶段将考察所有部件组合在一起时车辆的性能表现。这是成本最高的 ADAS 测试,但同时也是结果最准确的测试,它是车辆投产前必不可少的环节。

借助 MATLAB 与 Simulink 构建 ADAS 功能

MATLAB® 与 Simulink® 可在 ADAS 开发工作流的各个阶段提供支持:

  1. 分析数据
  2. 合成驾驶场景
  3. 设计 ADAS 规划与控制算法
  4. 设计感知算法
  5. 部署算法
  6. 集成和测试

分析数据

MATLAB 让您可以在 ADAS 开发过程中访问、可视化以及标注实时或记录的驾驶数据。MATLAB 还支持来自 HERE HD Live Maps、OpenStreetMap 和 Zenrin Japan Maps 的地理地图数据。这些数据经常用于 ADAS 算法开发与验证工作。

App 左侧显示视频画面,画面用蓝色边界框和 Car 字样标注了一辆汽车;右侧显示激光雷达序列点云,图上用蓝色三维边界框标注了一辆汽车。

真值标注器用于在视频、图像序列或激光雷达点云中以交互方式标注真值数据。

合成驾驶场景

MATLAB 支持您在虚拟场景中开发和测试 ADAS 算法,针对控制、传感器融合及运动规划算法可使用立方体模拟环境,针对感知算法则可使用虚幻引擎环境。您还可使用 RoadRunner 来设计逼真的三维场景。

App 左侧为场景画布,右侧为该场景的鸟瞰图。左侧展示了一个有多辆汽车的交叉路口,其中一辆蓝色自主车辆向北行驶。右侧是同一个交叉路口的鸟瞰图,显示了自主车辆的相机传感器和雷达传感器的检测范围。

驾驶场景设计器可用于 ADAS 应用中的场景设计、传感器配置以及合成数据生成。

设计 ADAS 规划与控制算法

MATLAB 提供许多自动驾驶参考应用,可作为自行设计 ADAS 规划和控制算法的起点。

自主车辆行驶的道路,上有几条弯曲的路径轨迹,左边是跟拍视图,右边是俯视图。路径由多种颜色进行标识,分别表示为最佳、碰撞、不可行和未评估。

在鸟瞰图中直观显示高速公路驾驶场景中各条可能轨迹的评估。

设计感知算法

MATLAB 提供了使用相机、雷达和激光雷达数据开发感知算法的工具。您可使用计算机视觉、深度学习、雷达与激光雷达处理以及传感器融合等进行算法开发。

驾驶员视角中黄色边界框包围的停车标志,标注为“stopSign:(Confidence = 0.995492)”。

借助 MATLAB 使用预训练的 R-CNN 检测停车标志。

部署 ADAS 算法

MATLAB Coder™、Embedded Coder® 和 GPU Coder™ 等工具箱可帮助您自动生成代码,并将 ADAS 算法部署到嵌入式设备和面向服务的架构中(如 ROS 和 AUTOSAR)。

NVIDIA Jetson TX2 开发板。

一块 NVIDIA Jetson TX2 开发板。可使用 GPU Coder 为其生成 CUDA 代码

集成和测试

您可借助 Simulink 工具来集成并测试感知、规划和控制系统。使用 Requirements Toolbox™,您可以捕获和管理 ADAS 需求。您也可以使用 Simulink Test™ 以并行方式运行测试用例,并实现测试工作的自动化。

需求编辑器界面,左侧为文件查看器,右侧为属性。属性面板显示了一张测试表,用于弯曲道路上的堵车路况测试。此表描述了目标车辆,以及自主车辆的需求。

高速公路车道跟随参考应用需求测试。