开源自动驾驶技术
文接上回,本文将会从基础框架继续深入分析开源自动驾驶技术以及对其中核心技术做分析和对比
开源自动驾驶框架模块详解
Perception (感知)
Localization(定位)
HDmap(高精度地图)
Routing(路由or全局规划)
Planning(规划)
Control(控制)
By Wire(总线控制器)
- 感知模块一般基于激光雷达,相机,深度相机,毫米波雷达,面阵激光雷达,超声波雷达构成,提供完整的感知,在目前最新的迭代过程中,自动驾驶行业领域尤其是中国正在提出V2X车路协同方案,路段摄像头,激光雷达,等传感器与车端传感器进行数据融合,再通过人工智能模型进行语义分割后输入到下一层模块,规划控制或者预测模块进行进一步处理。
- 定位模块,该部分一般使用IMU数据与GPS(包括GNSS,RTK,双信道GPS等)进行卡尔曼滤波融合得到较为可卡的定位信息。
- 总线控制器及线控底盘,一般该部分以前文提到的三种串行协议进行控制,底盘厂商封装提供can协议代码和模型。
以上这几块硬件层支持需求较大的模块都通过域控制器或者直接连接到工控机实现数据传输。下图是百度apollo自动驾驶道路数据采集车和自动驾驶车辆,目前在路上路测的萝卜快跑等车辆上部署的实际传感器拓扑连接图,可以看到数量众多,并且数据量超大的传感器都搭载在车辆上作为感知基础。

在华为提出的MDC框架中连接到的传感器系统更加复杂,有超过两百个传感器,如下图所示


目前自动驾驶领域面临的问题也是传感器的大量堆料导致传感器和算法复杂度以及人工智能模型复杂度指数级上升,带来的也是肉眼可见的成本上升,虽然特斯拉有些方面做的不尽人意,但是在马斯克第一性原理的思维带领下朝着减少堆料,虽然纯视觉方案确实太激进,但是减少堆料真的是下一步自动驾驶的关键一步。
话回正题,那么软件系统对于自动驾驶系统又是如何构架的呢
- 感知算法,定位算法,路由以及高精度地图,规划控制算法通常以如下方式进行拓扑连接,在不同的自动驾驶框架下会有一定差异,但是大体数据流转方式相似,下图展示的是Autoware所构建的数据流转思路。

传感器收集到的数据无论来源都会传入计算单元当中,计算单元计算的结果将会输入到规划控制模块中,由此模块化构建,可以更好的解耦模块,随时增删改查模块都更加简便。
- 感知算法一般会进行人工智能模型,网络的输入参数一般是传感器数据,输出结果是语义分割后的模型,如行人,红绿灯,卡车,小车,自行车等等。
- 高精度地图是自动驾驶领域最为核心的技术之一,一方面是需要大成本的投入来构建高精度地图,另一方面是精度必须能够得到量化和保证,以及需要实时更新数据,这又是不小的投入,目前主流方案由百度提供自动驾驶HDmapAPI接口,不过此项服务需要付费。
- 路由routing 也就是全局规划一般会基于A*算法改进的公式来进行计算,并没有过多的点,有时候需要根据用户需求来改进兴趣点的权值和加入一些优化学习逻辑。
- planning是基于routing的输出以及当前感知到的周围的环境信息作出规划决策的过程,这部分可以加入遗传算法,TEB ,DWA,退火算法等,快速生成密集栅格下的有效路径,值得探讨的点事生成的路径如何可以确保其趋势并且保证车辆不发生画龙行为,这部分对于主流车厂来说都是不小的麻烦。
- 控制部分一般划分为基础控制,横向和纵向控制,基础控制采用PID,横向是LQR,纵向是MPC控制,最终输出量能够得到保证响应及时精准。
以下是Apollo自动驾驶框架的数据流转思路,可以对比观看。

人才需求与挑战
自动驾驶是一个相当庞大的系统,作为机器人系统的进一步实战,工业皇冠上的明珠中的发光点,每一个细节都值得深入探索和研究,对于硬件研究,软件研究,系统研究需要的技能以及未来可以从事的行业都在下图中做了展示。


