本文经自动驾驶之心公众号授权转载,转载请联系出处。
自动驾驶技术在应用到车辆上之后可以通过提高吞吐量来缓解道路拥堵,通过消除人为错误来提高道路安全性,并减轻驾驶员的驾驶负担,从而提高工作效率和休息时间等诸多好处。在过去的30年间,随着传感器和技术的进步使得必要硬件的规模和价格不断减小,在工业界和学术界对于自动驾驶汽车技术的研究力度稳步加大,目前已经取得了诸多的实质性进步。
因此,本文旨在概述自动驾驶汽车软件系统领域的最新发展。本文回顾了自动驾驶汽车软件的基本组成部分,并讨论了各个领域的最新发展。自动驾驶汽车软件系统的核心能力大致可分为三类,即感知、规划和控制,这些能力与车辆与环境的交互如下图所示。此外,可以利用车对车 (V2V) 通信,通过车辆协作进一步改善感知以及规划领域。
自动驾驶汽车软件和硬件的基本组成部分
通过上图可以看出,自动驾驶汽车的软件主要包括感知,规划和控制三个大方向。
- 感知:感知是指自主系统从环境中收集信息和提取相关知识的能力。环境感知是指发展对环境的情境理解,例如障碍物的位置、道路标志以及标记的检测以及根据语义对数据进行分类。定位是指自动驾驶汽车确定其相对于环境的位置的能力。
- 规划:规划是指为了实现自动驾驶汽车更高阶的目标而做出有目的的决策的过程,通常是将车辆从起始位置带到目标位置,同时避开障碍物并优化设计的启发式方法。
- 控制:控制能力是指自动驾驶汽车执行由更高级别流程生成的计划动作的能力。
文章链接:https://www.mdpi.com/2075-1702/5/1/6
感知部分
环境感知
环境感知是自动驾驶汽车的一项基本功能,它为汽车提供有关驾驶环境的重要信息,包括可自由驾驶区域和周围障碍物的位置、速度,甚至未来状态的预测。一般而言自动驾驶汽车上都会配置激光雷达、摄像头、毫米波雷达、超声波雷达等信息采集传感器来实现更高效、准确的周围环境感知。无论采用哪种传感器,感知任务的两个关键要素是路面提取和道路物体检测。
激光雷达传感器
激光雷达是一种光检测和测距设备,它以精心设计的模式每秒发送数百万个光脉冲。借助其旋转轴,它能够创建环境的动态三维地图。激光雷达是大多数现有自动驾驶汽车物体检测的核心。下图显示了3D激光雷达的理想检测结果,所有移动物体均被识别。
3D激光雷达检测到所有移动物体的理想检测结果
在真实场景中,激光雷达返回的点从来都不是完美的。处理激光雷达点的困难在于扫描点稀疏、缺失点和无组织的模式。周围环境也给感知带来了更多挑战,因为表面可能是任意和不稳定的。有时甚至很难从扫描点的可视化中感知到有用的信息。激光雷达的输出是从物体反射回来的稀疏3D点,每个点代表物体相对于激光雷达的3D位置。点的三种主要表示形式通常包括点云、特征和网格。因此,很多学术界的算法都在研究如何实现对于点云特征的更准确表达。
为了要感知3D点云信息,通常涉及两个步骤:分割和分类。有些可能包括第三步,即在时间维度上的积分,以提高准确性和一致性。点云的分割是将点进行聚类的过程,而分类是识别分割的点群的类别,例如自行车、汽车、行人、路面等。3D点云分割算法可分为五类:基于边缘、基于区域、基于属性、基于模型和基于图的各类算法。但随着如今技术的快速发展和迭代,又出现了基于深度学习算法的类别。
在进行点云的分割之后,每个点云簇需要分类为不同的对象类别。每个点云簇中嵌入的信息主要来自空间关系和点的激光雷达强度,这在对象识别中的用途非常有限。因此,大多数算法将通过一些融合机制来实现视觉检测问题。
视觉
自动驾驶汽车环境感知中的视觉系统通常涉及道路检测和道路物体检测。道路检测也包括两类:车道线标记检测和路面检测。
- 车道线标记检测:车道线标记检测是识别道路上的车道线标记并估计车辆相对于检测到车道线的姿态。这条信息可以作为车辆位置反馈给车辆控制系统。近年来,人们在这个领域进行了大量的研究工作,并取得了较为不错的成绩。
- 路面检测:路面检测可告知自动驾驶汽车可在不发生碰撞的情况下行驶的自由空间位置。这是任何在线路径规划和控制操作的先决条件。一般来说,方法可分为三类:基于特征、线索的检测、基于特征、线索的学习和深度学习。
对这部分感兴趣的读者可以在论文原文的第2.1.2小节中找到相关的学术论文和研究成果。
传感器融合
不同的传感器各有优缺点。需要传感器融合技术才能充分利用每个传感器的优势。在自动驾驶汽车环境感知方面,激光雷达能够进行3D 测量,并且不受环境照明的影响,但它提供的物体外观信息很少;相反,摄像头能够提供丰富的外观数据,其中包含有关物体的更多细节,但其性能在不同照明条件下并不一致;此外,摄像头不会隐式提供3D信息。考虑到上述的问题,目前基于工业界和学术界对于各类传感器融合算法开展了大量的研究并且取得了诸多出色的研究进展。相关的学术论文及研究成果可以详见论文原文的第2.1.3小节。
定位
定位是确定自车姿态并测量其自身运动的问题。这是实现自动驾驶的基本能力之一。然而,确定车辆的准确姿态(位置和方向)通常很困难,因此定位问题通常被表述为姿态估计问题。估计自车姿态的问题通常可以分为两个子问题,即姿态固定问题和航位推算问题。在姿态固定问题中,测量值与姿态通过代数或者超越方程相关联。姿态固定需要能够根据姿态(例如地图)预测测量值。在航位推算问题中,状态与观察值通过一组微分方程相关联,并且必须将这些方程积分才能导航。在这种情况下,传感器测量值不一定可以从给定的姿态推断出来。从这个意义上讲,姿态固定和航位推算相辅相成。
在定位问题上目前也有诸多的解决方案,定位车辆的最流行方法之一是卫星导航系统和惯性导航系统的融合。卫星导航系统,如GPS可以定期定位车辆的全球位置。它们的精度可以从几十米到几毫米不等,具体取决于信号强度和所用设备的质量。惯性导航系统使用加速度计、陀螺仪和信号处理技术来估计车辆的姿态,不需要外部基础设施。然而,如果不添加其他传感器,惯性导航系统的启动可能会很困难,并且误差会随着时间的推移而无限增长。有关于其它相关的定位解决方案可以阅读论文中第2.2节相关的技术细节。
规划部分
早期的自动驾驶汽车通常只是半自动驾驶,因为它们的设计功能通常仅限于执行车道跟踪、自适应巡航控制和一些其他基本功能。随着自动驾驶规划技术的快速发展,更全面的规划框架可以使自动驾驶汽车处理各种复杂的城市驾驶场景。任务规划(或路线规划)考虑的是高级的目标,例如接送任务的分配以及应走哪条路来完成任务。行为规划做出临时决策,以便与其他交通智能体正确交互并遵守规则限制,从而生成局部目标,例如,变道、超车或通过交叉路口。运动规划(或局部规划)生成适当的路径或者动作集以实现局部目标,最典型的目标是到达目标区域同时避免与障碍物碰撞。接下来,我们对此分别进行介绍。
任务规划
任务规划通常通过对反映道路或者路径网络连通性的有向图网络进行图形搜索来执行。Dijkstra算法或者A*算法等算法都是任务规划中的经典算法,感兴趣的读者也可以看下针对路线规划为主的综述性论文。
行为规划
行为规划器负责做出决策,以确保车辆遵守任何规定的道路规则,并以常规、安全的方式与其他交通智能体进行交互,同时沿着任务规划器规定的路线逐步前进。这可以通过结合本地目标设定、虚拟障碍物放置、可驾驶区域边界调整或者区域启发式成本调整来实现。
运动规划
运动规划是一个非常广泛的研究领域,应用于移动机器人和操纵臂,应用范围广泛,包括制造、医疗、应急响应、安全监视、农业和运输。在自动驾驶汽车这一研究领域,运动规划是指决定一系列动作以达到指定目标的过程,通常同时避免与障碍物发生碰撞。运动规划器通常根据其计算效率和完整性进行比较和评估。计算效率是指过程运行时间以及它如何根据配置空间的维数进行扩展。如果算法在有限的时间内终止,当存在解决方案时始终返回解决方案,否则指示不存在解决方案,则认为该算法是完整的。
运动规划的核心思想是通过将连续空间模型转换为离散模型,目前常用的一般是如下两类转换方法:
- 组合规划方法:组合规划器旨在通过构建一个离散表示来找到完整的解决方案,该方法准确地表示原始问题,但其特点是对于特殊情况求解器具有方便的属性。
- 基于采样的方法:基于采样的方法依赖于连续空间的随机采样,以及可行轨迹图(也称为树或路线图)的生成,其中通过检查节点和连接这些节点的边的碰撞来验证可行性。理想情况下,生成的路线图应提供所有无障碍空间的良好覆盖和连通性。然后使用路线图上的路径来构建原始运动规划问题的解决方案。
但是,在日常的自动驾驶汽车行驶过程中,许多操作环境并非静态的,因此无法预先知道。在城市环境中,行人以及周围的汽车会移动,道路会因施工或事故清理而绕行和封闭,视野也会经常受阻。自动驾驶汽车必须不断感知环境中的新变化,并能够在考虑多种不确定性的同时做出反应。不确定性来自感知传感器的精度、定位精度、环境变化和控制策略的执行,因此在实际的应用过程中,如何实现准确、舒适和高效的规划依旧是非常重要的挑战。
控制
自主系统的执行能力(通常也称为运动控制)是将意图转化为行动的过程;其主要目的是通过向硬件级别提供必要的输入来执行计划的意图,从而产生所需的运动。控制器从力和能量的角度映射现实世界中的交互,而自主系统中的认知导航和规划算法通常与车辆相对于其环境的速度和位置有关。控制系统内部的测量可用于确定系统运行情况,因此控制器可以做出反应以消除干扰并将系统的动态改变为所需状态。系统模型可用于更详细地描述所需的运动,这对于令人满意的运动执行至关重要。
反馈控制是许多应用中最常见的控制器结构。反馈控制使用测量的系统响应并主动补偿与期望行为的任何偏差。反馈控制可以减少参数变化、建模错误以及不必要的干扰的负面影响。反馈控制还可以修改系统的瞬态行为以及测量噪声的影响。然而,在控制器中仅使用反馈项可能会受到一些限制。仅反馈控制器的第一个重要限制是它对错误的响应延迟,因为它只在错误发生时才做出响应。纯反馈控制器还存在耦合响应的问题,因为对干扰、建模误差和测量噪声的响应都是由同一机制计算的。有关于控制相关的更多研究和解决方案可以参考论文中的第四节内容。
结论
近年来,随着自动驾驶技术的快速发展和迭代,各个自动驾驶系统的子模块也取得了日新月异的发展,本文就针对自动驾驶系统中的感知、规划和控制等软件系统进行了较为详细的总结和归纳,以帮助自动驾驶领域的从业者进行更好的学习。