自动驾驶系统设计
无人驾驶系统分为车辆端和云端。
车辆端无人驾驶系统 实现无人驾驶所需要的各种算法,包括定位、环境感知、路径规划和控制等,无人驾驶系统是无人驾驶软件的核心部分。
而云端云 平台提供了无人驾驶所需要的各种基础服务,共同构成了整个无人驾驶软件。
无人驾驶软件框架图

3****大模块
无人驾驶系统一般有三大模块
1.环境感知模块
无人驾驶汽车是通过传感器来感知环境信息。比如摄像头、激光雷达、毫米波雷达以及工业相机是用于获取环境信息;而GPS等用于获取车身状态的信息。当然还需要通过算法提取出有用的信息。
2.行为决策模块
行为决策是指无人驾驶汽车根据路网信息、获取的交通环境信息和自身行驶状态,产生遵守交通规则的驾驶决策的过程。
用人话说就是规划出一条精密的行驶轨迹,然后无人驾驶车就可以跟着这条轨迹走。
3.运动控制模块
运动控制模块是根据规划的行驶轨迹和速度以及当前的位置、姿态和速度,产生对油门、刹车、方向盘和变速杆的控制命令。
这3个模块可以概述为感知(Perception),规划(Planning)和控制(Control)功能,3个模块的交互,以及与车辆硬件、其他车辆的交互如图表示:

由上图可知,无人驾驶软件系统实际上是一个分层的结构,感知规划和控制工作在不同的层当时相互作用。
感知模块
**1.**环境感知
无人驾驶系统的环境感知部分需要获取周围环境的大量信息。
具体来说包括:障碍物的位置,速度以及可能的行为,可行驶的区域,交通规则等等。
无人车通常是通过融合激光雷达(Lidar),相机(Camera),毫米波雷达(Millimeter Wave Radar)等多种传感器的数据来获取这些信息。
传感器对周围环境进行扫描,构成点云图(Point Cloud Graph)

为了理解点云信息,会对点云数据进行两步操作:
分割(Segmentation)
分类(Classification)
分割是为了将点云图中离散的点聚类成若干个整体,而分类则是区分出这些整体属于哪一个类别(比如说行人,车辆以及障碍物)。
完成了点云的目标分割后,分割出来的目标需要被正确的分类,在这个环节,一般使用机器学习中的分类算法,对三维的点云聚类进行分类。
在无人驾驶系统中,通常使用图像视觉来完成道路的检测和道路上目标的检测。
道路的检测:包含对道路线的检测(Lane Detection),可行驶区域的检测(Drivable Area Detection)
车道线的检测 涉及两个方面:
第一是识别出车道线,对于弯曲的车道线,能够计算出其曲率
第二是确定车辆自身相对于车道线的偏移(即无人车自身在车道线的哪个位置)
可行驶区域的检测:目前的一种做法是采用深度神经网络直接对场景进行分割,通过训练完成对图像中可行驶区域的切割。
道路上路标的检测: 包含对其他车辆的检测(Vehicle Detection),行人检测(Pedestrian Detection),交通标志和信号的检测(Traffic Sign Detection)等所有交通参与者的检测和分类。
交通参与者的检测和分类目前主要依赖于深度学习模型
**2.**定位
在无人车感知层面,定位的重要性不言而喻,无人车需要知道自己相对于环境的一个高精度定位,这里的定位不能存在超过10cm的误差。
如果我们的无人车定位误差在30厘米,无人驾驶的规划和执行层并不知道它存在30厘米的误差,它们仍然按照定位精准的前提来做出决策和控制,那么对某些情况作出的决策就是错的,从而造成事故。
目前使用最广泛的无人车定位方法是融合全球定位系统(Global Positioning System,GPS)和惯性导航系统(Inertial Navigation System)定位方法
GPS的定位精度在数十米到厘米级别之间,高精度的GPS传感器价格比较贵。
融合GPS/IMU的定位方法在GPS信号缺失,微弱的情况下无法做到高精度定位,如:地下停车场,周围均为高楼的市区等,因此只能适用于部分场景的无人驾驶任务。
另一类广泛使用的无人车定位算法是地图辅助类定位。
同步定位与地图构建(Simultaneous Localization And Mapping,SLAM)是这类算法的代表,SLAM的目标是构建地图的同时使用该地图进行定位,SLAM通过利用已经观测到的环境特征确定当前车辆的位置已经当前观测特征的位置。
这是一个利用以往的经验和当前的观测来估计当前位置的过程。但在长距离的运动中,随着距离的增大,SLAM定位的偏差也会逐渐增大,容易造成定位失败。
规划****模块
**1.**任务规划
任务规划通常也被称为路径规划或者路由规划(Route Planning),负责相对顶层的路径规划,如起点到终点的路径选择。
通常我们把当前的道路系统处理成有向网络图(Directed Graph Network),这个有向网络图能够表示道路和道路之间的连接情况,通行规则,道路的路宽等各种信息。

规划无人车就是在路网图中,设计车辆达到某个目标(通常来说是从A地到B地),基于某种方法选取最优(即损失最小)的路径的过程。
**2.**行为规划
行为规划有时也被称为决策制定(Decision Maker),主要的任务是按照任务规划的目标和当前的局部情况(其他的车辆和行人的位置和行为,当前的交通规则等),作出下一步无人车应该执行的决策,可以理解为车辆的副驾驶,他依据目标和当前的交通情况指挥驾驶员是跟车还是超车,是停车等行人通过还是绕过行人。
行为规划通常使用包含大量动作短语的复杂有限状态机(Finite State Machine,FSM)来实现,每个状态都是对车辆动作的决策,状态和状态之间存在一定的跳转条件,某些状态可以自循环(比如上图中的循迹状态和等待状态)。
**3.**动作规划
通过规划一系列的动作以达到某种目的(比如说规避障碍物)的处理过程被称为动作规划。考量动作规划算法的性能通常用两个指标:
计算效率(Computational Efficiency):即完成一次动作规划的处理效率
完整性(Completeness)
控制模块
控制层是无人车系统的最底层,任务是将规划好的动作实现。控制模块的评价指标即为控制的精准度。
控制系统内部存在反馈控制 (Feedback Control)过程。
控制器比较车辆的测量和我们预期的状态,从而输出控制动作,这一过程叫反馈控制
反馈控制广泛的应用于自动化控制领域,最典型的反馈控制器是PID控制器(Proportional-Integral-Derivative Controller)。
但PID控制器在无人车控制中确存在一定的问题:PID控制器是单纯基于当前误差反馈的,由于制动机构的延迟性,会给控制本身带来延迟。
为了解决这一问题,又引入了基于模型预测的控制方法 。
预测模型:基于当前的状态和控制输入预测未来一段时间的状态的模型,在无人车系统中,通常是指车辆的运动学/动力学模型;
反馈校正:对模型施加了反馈校正的过程,使预测控制具有很强的抗扰动和克服系统不确定性的能力。
滚动优化:滚动地优化控制序列,以得到和参考轨迹最接近的预测序列。
参考轨迹:即设定的轨迹。
