知晓:一文详解自动驾驶决策规划系统
--关注回复“26262”--
https://img0.baidu.com/it/u=1015299388,1569007347&fm=253&fmt=auto&app=120&f=JPEG?w=640&h=399
↓↓领取:ISO 26262↓↓
自动驾驶自诞生那天起,其志向便已立下,成为熟知城市每一处道路的“老司机”,成为乘客更安全、更舒适、更高效出行的“守护神”。在搞钱捞钱的大背景下,这个无私追求朴素得令人敬畏。在自动驾驶的分工中,决策规划将承担上述志向实现的大部分工作,也因此被毫不吝啬的称为自动驾驶的大脑。多光谱视觉技术https://www.foresightauto.com.cn/company/ 福飒特是一家开发智能多光谱视觉软件解决方案的技术公司,提供自动驾驶汽车解决方案,帮助他们开发自动驾驶汽车的三维感知和探测能力,以检测车辆周围的障碍物。Foresight 的立体视觉解决方案可应用于汽车、国防、自动驾驶汽车和重型工业设备等市场。
自动驾驶系统分类
自动驾驶系统没有严谨的分类,但行业内普遍喜欢将自动驾驶系统区别为模块化的和端到端的。图1所示为两者系统的原理框图对比。
图1 模块化和端到端自动驾驶系统原理简图
一、模块化自动驾驶系统
这是最经典也是业界采用最多的一种自动驾驶系统,也是最简明清爽的一种结构,其作用是实时地求解出连续的控制输出使得自动驾驶车辆可以安全地由初始位置行驶到目标位置。基于模块化的思想,将自动驾驶系统划分为三层:环境感知层、决策规划层和控制执行层。每一层还可以划分为不同的模块,每个模块还可以划分为不同的子模块……。
环境感知层就像是人的眼睛和耳朵,负责对外部环境进行感知并将感知结果送入决策规划层。决策规划层就像是人的大脑,在接收到感知信息后进行分析、决策,并生成加减速、变道、直行等控制命令。控制执行层就像人的双手和双脚,在接收到控制命令后控制执行器完成加速、转向等操作。
模块化自动驾驶系统中每一层都是关键和核心。但从实现自动驾驶功能的角度,环境感知层是基础,决策规划层是核心,控制执行层是保障。作为核心的决策规划层带着自动驾驶往“更安全、更舒适、更高效”的道路上狂奔,毕竟小小的失误小则影响乘坐舒适性、通行效率,大则影响人生财产安全。
在模块化自动驾驶系统中,不同团队负责不同的模块,可以实现更好的分工合作,从而提高开发效率。同时团队内部可以对负责的模块进行充分的评估,了解各模块的性能瓶颈所在,从而让我们能对最后的0.1%的不足有更清晰的认知,技术的迭代、更新。
缺点就是整个系统非常复杂、庞大、需要人工设计成百上千个模块。此外对车载硬件计算能力要求高,如果越来越多的子模块采用深度学习网络,这将带来灾难性的计算需求爆炸。基于模块化的自动驾驶系统,我们可能花10%的时间就实现了99.9%的问题,但我们还需要花90%的时间去解决最后0.1%的不足。
这个系统的难度之大,已经远超一家公司的能力范围,需要一个协作的生态。
二、端到端自动驾驶系统
术语端到端(End to End)来源于深度学习,指的是算法直接由输入求解出所需的输出,即算法直接将系统的输入端连接到输出端。2016年NVIDIA将端到端的深度学习技术应用在自动驾驶汽车之后,端到端自动驾驶迅速捕获圈内一众大佬的芳心,各种demo更是层出不穷。
所谓端到端自动驾驶是指车辆将传感器采集到的信息(原始图像数据、原始点云数据等),直接送入到一个统一的深度学习神经网络,神经网络经过处理之后直接输出自动驾驶汽车的驾驶命令(方向盘转角、方向盘转速、油门踏板开度、制动踏板开度等)。
2016年NVIDIA发表了论文《End to End Learning for Self-Driving Cars》,拉开了端到端自动驾驶内卷的序幕。
论文首先展示了训练数据的采集系统,如图2所示。论文中只涉及了车道保持功能,因此训练数据也只对摄像机的视频数据和人类驾驶员操作方向盘的角度数据进行了采集。
图2 数据采集系统框图
三架摄像机安装在采集车的挡风玻璃后面,并按照左中右依次布置,这样布置是为了捕获完整的前向路面信息。一台NVIDIA DRIVETM PX被用来作为采集车的计算单元。摄像机生成的每一帧视频数据(30FPS)都与人类驾驶员的转向角度进行时间同步。
采集车最终在各式道路以及多样照明和天气条件组合下采集了72小时的驾驶数据。训练数据包含视频采样得到的单一图像,搭配相应的转向命令。
但是只有来自人类驾驶员的正确数据是不足以完成训练的,神经网络还必须学习如何从任何错误中恢复,否则自动驾驶汽车就将慢慢偏移道路。因此训练数据还扩充了额外的图像,这些图像显示了远离车道中心的偏离程度以及不同道路方向上的转动。两个特定偏离中心的变化图像可由左右两个摄像机捕获。
训练数据准备完毕之后,将其送入一个卷积神经网络(CNN),训练系统框图如图3所示。
图3 训练系统框图
CNN计算一个被推荐的转向命令,这个被推荐的转向命令会与该图像的期望命令相比较,CNN权重就会被调整以使其实际输出更接近期望输出。在这个框架中,只要提供足够的训练数据,即人类驾驶员驾驶携带有摄像头的车辆累计驾驶大量的里程,再加上人为创造系统的“极限”道路状态——偏离道路线的各种工况,CNN就会得到充分的训练,而变得足够强大。
一旦训练完成,网络就能够从单中心摄像机(single center camera)的视频图像中生成转向命令,图4展示了这个配置。
图4 训练过的网络用于从单中心前向摄像机中生成转向命令
在端到端自动驾驶中,没有人工设计的繁复规则,只需要极少的来自人类的训练数据,深度学习神经网络就会学会驾驶。且不用关心有没有高精地图覆盖、此时是行驶在高速主干路还是城区道路、道路上车道线有没有缺失等。
相比模块化自动驾驶系统,端到端自动驾驶系统设计难度低,硬件成本小,还能借助数据的多样性获得不同场景下的泛用性。各方面条件得天独厚,从理论层面看堪称自动驾驶的终极梦想。
然而端到端深度学习神经网络是一个完完全全的黑盒子,不具解释分析性,可靠性、灵活性差,工程师们没有办法对它进行系统化的解释分析,而是只能依靠推测和实验进行调整。最终带来的结果是安全难以得到保障,而自动驾驶最最关注的恰是安全。
比如端到端自动驾驶系统下汽车做出一个汽车减速左转的行动,工程师们无法确定这是因为汽车看到行人,还是因为看到较远处的红灯。但是,在模块化的自动驾驶系统下,由于多个识别系统嵌套,相对好理解到底汽车所做的每一个举动背后的逻辑。
这也意味着,如果端到端系统出现问题时,工程师们并不能对其对症下药,做出合理的应对。更多情况下甚至只能简单向模型灌注更多的数据,希冀它能在进一步的训练中“自行”解决问题。这也会大大降低端到端自动驾驶系统原本开发简单的优势。
决策规划分层架构
决策规划的任务,就是在对感知到的周边物体的预测轨迹的基础上,结合结合自动驾驶车辆的和当前位置,对车辆做出最合理的决策和控制。
正如人的大脑又分为左脑和右脑、并负责不同的任务一样,模块化自动驾驶系统中决策规划层也可以继续细分为执行不同任务的子层。而这一分层设计最早其实是源自2007年举办的DAPRA城市挑战赛,比赛中多数参赛队伍都将自动驾驶系统的决策规划方式包括三层:全局路径规划层(Route Planning)、行为决策层(Behavioral Layer)和运动规划层(Motion Planning),如图5所示。
图5?决策规划分层架构
全局路径规划层聚焦在相对顶层的路径规划,聚焦在分钟到小时级别的规划。该层在接收到输入的目的地信息后,基于存储的地图信息搜素出一条自起始点至目标点的一条可通过的路径。如图6所示,在蓝色起点和黄色终点之间,黑色就是搜索出来的一条可通行的路径,当然路径不止一条,如何搜索出最优是下文将要介绍的内容。
图6 全局路径规划示例
在全局路径规划的时候,也可以基于地图精度和丰富度,提前可以考虑道路曲率半径、坡度等信息,来避免搜索出部分参数超出ODD要求的全局路径。但是高度随机的交通参与者、高度动态的交通流以及高度复杂的道路结构,全局路径规划是无法考虑周到的,因此还需要基于具体的行为决策进行后面的运动规划,也就是局部路径规划。
行为决策层在收到全局路径后,结合感知环境信息、交通规则信息、车辆状态信息、驾驶场景信息等,推导判断下一分钟或下一秒时刻的情况,作出车道保持、车辆跟随、车道变换和制动避撞等的适合当前交通环境的驾驶行为。如图7所示,自车在检测到前方存在低速行驶车辆,且右侧车道满足变道条件后,作出向右变道的驾驶行为决策。
图7 行为决策示例
运动规划层也被成为局部路径规划层,与全局路径规划聚焦在分钟到小时级别的规划不同,运动规划聚焦在毫秒级到秒级的规划。规划的时候,根据输入的行为决策信息、结合车辆实时位姿信息、局部环境信息、全局路径参考信息等,在“安全、舒适、效率”的精神引领下,规划生成一条满足特定约束条件的平滑轨迹轨迹(包括行驶轨迹、速度、方向等),并输入给控制执行层。
如图8所示,在车辆收到行为决策层的左变道指令后,主车基于各种信息规划出几条可行的路径,如何规划出最优的路径也是下文要介绍的内容。
图9 运动规划示意图
全局路径规划与运动规划作为两个层级的不同规划,现将其特点汇总为表1。
表1 全局路径规划与运动规划特点对比
转载自十一号组织,文中观点仅供分享交流,不代表本公众号立场,如涉及版权等问题,请您告知,我们将及时处理。
-- END --
页:
[1]