从自动驾驶的架构来看,往往最能理解自动驾驶的原理。大众对自动驾驶最简单易懂的理解就是感知、决策和执行。所有的机器人都是这样建造的。感知回答了周围是什么的问题,类似于人的眼睛、耳朵。通过摄像头、雷达、地图等方式获取周边障碍物和道路信息。决策回答了我该怎么做的问题,类似于大脑。通过分析感知信息,生成路径和车速。执行力类似于手脚,将决策信息转化为刹车、油门和转向信号,控制车辆按预期行驶。接下来我们更深入一层,问题开始变得有点复杂。在我们的日常生活中,我们可能会直觉地认为我是在根据我眼睛无时无刻不在看到的信息来决定我的下一步决策,但往往并非如此。从眼睛到头再到手脚总是有时间延迟的,自动驾驶也是如此。但是我们感觉不到这种影响,因为大脑会自动处理“预测”的事情。即使只有几毫秒,我们的决定也会根据我们对所见事物的预测来指导手脚的运动,这是我们正常运作的基础。因此,我们会在自动驾驶决策之前加入预测模块。感知过程同样隐藏在宇宙之中,仔细推敲也分为“感知”和“感知”两个阶段。“感知”获取的是图片等原始传感器数据,“感知”是从图片中处理得到的有用信息(比如图片中有多少人)。有句老话说“眼见为实,耳闻为实”。“感知”的有用信息又可以分为自身车辆感知和外部感知。人类或自动驾驶汽车在处理这两类信息时通常有不同的策略。本车感知——接收器时刻获取的信息(包括摄像头、雷达、GPS等)外部感知——外部代理或过去记忆收集和处理的信息(包括定位、地图、车联信息等),前提需要自身车辆定位感知(GPS)的输入。此外,各种传感器通过算法处理的障碍物和车道信息也经常存在矛盾。雷达看到您面前有障碍物,但摄像头告诉您没有人。这时候就需要添加一个“融合”模块。对不一致的信息做进一步的联想和判断。这里我们也经常把“融合与预测”概括为“世界模型”。这句话说的很形象,不管你是唯物主义的还是理想主义的。“世界”不可能全部塞进你的脑子里,但指导我们工作和生活的是“世界”的“模型”,也就是我们经过处理看到的事物后逐渐在大脑中构建的对象出生。对世界的认识,道家称之为“内景”。世界模型的核心职责是通过“融合”了解当前环境要素的属性和关系,结合“先验规律”进行“预测”,为决策执行提供更加冷静的判断。这个时间跨度可以从几毫秒到几个小时不等。由于世界模型的加入,整个架构变得更加丰满,但是还有一个细节经常被忽略。这就是信息流。简单理解,人是从眼睛感知到大脑处理,最后交给手脚执行的单向过程,但实际情况往往更复杂。这里有两种典型的行为构成了完全相反的信息流,即“目标达成计划”和“注意力转移”。如何理解“目标达成计划”?其实,思维的开始不是感知,而是“目标”。只有有了目标,才能触发有意义的“感知-决策-执行”过程。比如你要开车去一个目的地,你可能知道有好几条路线,你权衡拥堵后最终会选择其中一条。拥堵情况属于世界模型,“到达那里”属于决策。这是将决策传达给世界模型的过程。如何理解“转移注意力”?即使是一张图片,人类和机器都无法访问隐藏在里面的所有信息。从一个需求和上下文出发,我们倾向于关注一个有限的范围和类别。这些信息无法从图片本身获取,而是从“世界模型”和“目标”中获取,这是一个从决策到世界模型再到感知的过程。我们加上一些必要的信息,重新整理一下整个结构,就变成了下面这样,是不是更复杂了?让我们继续看下去。与大脑一样,自动驾驶算法也有处理时间要求。一般周期在10ms-100ms之间,可以满足响应环境变化的要求。但是环境有时很简单,有时又很复杂。很多算法模块达不到这个时间要求。比如思考生命的意义,可能不是100ms可以完成的事情。如果每走一步都要思考人生,那一定是对大脑的一种摧残。计算机也是如此,在计算能力和计算速度上存在物理限制。解决方案是引入分层框架。分层机制越高,加工周期一般会缩短3-10倍。当然,在实际框架中不一定需要完整展示。工程上可以根据板卡资源和算法使用情况灵活调整。从根本上说,感知是一个向上的过程,根据注意力不断提炼特定元素,提供具有“深度和方向”的感知信息。决策是一个向下的过程,根据世界模型的不同层级,逐层分解从目标到各个执行单元的动作。世界模型一般没有特定的流向,用于构建不同粒度尺度的环境信息。根据处理任务的复杂程度,分工和通信环境也会进行适当的阉割和合并。例如低级的ADAS功能(ACC)计算能力较小,可以只设计一层。高级ADAS功能(AutoPilot)一般有两层配置。对于自动驾驶功能,有很多复杂的算法,有时需要三层设计。在软件架构设计中,也存在世界模型与同层感知或决策模块合并的情况。各种自动驾驶公司或行业标准都会发布自己的软件架构设计,但往往是基于现状阉割的结果,并不具有普适性。不过为了方便大家理解,我还是将目前主流的功能模块代入其中,再来看看对比关系,对理解原理更有帮助。这里需要提前注意。虽然这已经有了软件架构的感觉,但仍然是对原理的描述。实际的软件架构设计要比这复杂的多。这里不展开所有的细节,但是突出了容易混淆的部分。下面我们重点梳理一下。环境感知-ALLINDeepLearning为了保证无人驾驶车辆对环境的理解和把握,无人驾驶系统的环境感知部分通常需要获取周围环境的大量信息,包括障碍物的位置、速度、前方车道的精确形状、标志牌的位置类型等。这些信息通常是通过融合激光雷达、环视/环视摄像头、毫米波雷达等各种传感器的数据获得的。深度学习的发展,让通过神经网络算法完成自动驾驶的建设成为整个行业的共识。感知模块的算法是整个深度学习的“棋子”,是第一个完成改造的软件模块。定位地图与V2X——自车感知与外界感知的关系与区别传统意义上的外界感知是基于GPS定位信号,通过高精度地图、车联网报文(V2X)等绝对坐标系信息转换而来到自我坐标系,车辆使用的感知源。它类似于人们使用的高科技导航仪。配合本车坐标系中原有的“本车感知”信息,为自动驾驶综合提供环境信息。但实际设计往往更复杂。由于GPS的不可靠性,IMU需要不断修正。量产的自动驾驶定位往往通过感知图的匹配得到准确的绝对位置,利用感知结果修正IMU得到准确的相对位置。定位,与GPS-IMU组成的INS系统形成冗余。因此,“外界感知”所需要的定位信号往往依赖于“本车感知”的信息。另外,虽然地图严格来说是“世界模型”的一部分,但是由于GPS的敏感性,在国内的软件实现过程中,会把定位模块和地图模块整合在一起,所有的GPS数据都会有偏见。确保没有泄露敏感的位置信息。Fusionpredictionmodule-corefocusedbetweenthedifference融合的核心是解决两个问题,一个是时空同步问题,利用软硬件协同的坐标系转换算法和时间同步算法,首先融合激光雷达、摄像头、毫米波雷达等,感知测量结果对齐时空点,保证整个环境感知原始数据的统一性。另一个是解决关联(Association)和异常去除问题,处理不同传感器映射到同一个“世界模型”元素(一个人/一条车道等)的关联,去除可能导致的异常通过单个传感器误检测。但融合与预测的区别在于它只处理过去和现在的信息,不处理外部时间。预测会根据融合结果对未来时刻做出判断,这个未来时刻可以在10ms到5分钟之间。这些包括预测信号灯、预测周围障碍物的行驶路径或预测远处拐角的位置。不同时期的预测会给出相应时期的规划,进行不同粒度的预测,从而为规划调整提供更大的空间。Planningcontrol-hierarchicalstrategydecomposition规划是无人驾驶车辆为了某个目标做出一些有目的的决策的过程。对于无人车来说,这个目标通常是指从起点到达目的地,同时避开障碍物,不断优化行驶轨迹和行为,以保证乘客的安全和舒适。规划的结构总结是基于环境的不同粒度整合信息,从外部目标出发,逐层评估分解,最终传递给执行者,形成完整的决策。在细分方面,规划模块一般分为三层:任务规划(MissionPlanning)、行为规划(BehavioralPlanning)和运动规划(MotionPlanning)。任务规划的核心是基于路网和离散路径搜索算法获取全局。该路径被赋予大规模任务类型,通常具有较长的周期。行为规划是基于有限状态机来判断车辆在一个中期周期内应该采取的具体行为(左变道、绕行避让、E-STOP),并设置一些边界参数和近似路径范围。运动规划层往往基于采样或优化的方法,最终得到满足舒适性和安全性要求的唯一路径。最后,控制模块通过前馈预测和反馈控制算法完成对唯一路径的跟随,并操纵刹车、转向、油门、车身等执行机构最终执行指令。不知道大家了解了多少层,以上只是自动驾驶原理的介绍内容。目前自动驾驶的理论、算法和架构发展非常迅速。以上内容虽然是比较原始的知识点,但是很长。时间不会过时。但是,新的要求给自动驾驶的架构和原理带来了很多新的认知。
