Apollo激光雷达感知介绍
本文介绍 Apollo 激光雷达感知流程及算法,通过本文您可以学习到:
- 激光雷达感知的基本介绍、流程以及输入输出。
- 激光雷达感知障碍物检测算法原理。
Apollo 激光雷达感知
在自动驾驶技术中,感知模块负责获取自动驾驶车辆周围环境信息,是自动驾驶车辆的“眼睛”,下游模块通过感知得到的环境信息来进行下一步决策。

常用的感知传感器包括激光雷达、摄像头、毫米波雷达等,因为激光雷达传感器具备准确的障碍物定位能力等优点,Apollo 目前采取以其为主的自动驾驶感知方案。
激光雷达感知模块接受来自激光雷达驱动的点云信息,利用这些点云信息进行障碍物的检测以及跟踪,得到的结果会被输出到感知融合模块进行下一步处理。


Apollo 激光雷达感知算法原理
激光雷达感知模块接收到点云数据之后,通过高精度地图 ROI(The Region of Interest)过滤器过滤 ROI 之外的点云,去除背景对象,例如:路边建筑物、树木等,过滤后的点云数据通过障碍物检测深度学习模型进行 3D 障碍物的检测和分类,然后对得到的障碍物进行跟踪,最终得到障碍物的形状、位置、类别、速度等信息。

Apollo 使用深度卷积神经网络对障碍物进行精确检测和分割。Apollo CNN 分割检测算法包括以下四个部分:
- 通道特征提取
- 基于 CNN 的障碍物预测
- 障碍物聚类
- 后处理
通道特征提取
给定点云数据帧,Apollo 构建其鸟瞰视图(即,投影到 XY 平面),它是局部坐标系中的 2D 网格。根据 x 和 y 坐标,可以将相对于原点(即,LiDAR 传感器)的预先定义范围内的每个点都量化到 2D 网格中的一个 cell。在量化之后,Apollo 为网格中每个 cell 中的点计算其 8 个统计值,这些需要计算的统计值如下所示:
- cell 中点的最大高度。
- cell 中最高点的亮度。
- cell 中点的平均高度。
- cell 中点的平均亮度。
- cell 中点的数量。
- 相对于原点,cell 中点的角度。
- cell 中点到原点的距离。
- 表示单元是空还是以被占据的二进制数值。
基于 CNN 的障碍物预测
基于上述通道特征,Apollo 使用一个全卷积神经网络(Convolutional Neural Network)来预测 cell 中障碍物的属性,包括相对于物体中心的偏移量-称为中心偏移,objectness(是否是目标的概率), positiveness(有效目标概率)以及物体高度。
如图所示,网络的输入是一个 W×H×C 通道的图形,这里:
- W 表示网格的列数。
- H 表示网格的行数。
- C 表示特征通道的数量。
Apollo 使用的全卷积神经网络包括三个部分,分别为:
- 特征编码器
- 特征解码器
- 障碍物属性预测器
特征编码器将通道特征图像作为输入,并连续地对其空间分辨率进行下采样以提高特征抽象程度。之后,特征解码器对编码的特征图像逐渐上采样,使其大小与到输入的 2D 网格的空间分辨率一致,这可以恢复特征图像的空间细节,以便于 cell 障碍物属性预测。下采样和上采样是以带非线性激活层(例如,ReLu)的卷积/反卷积层堆栈实现的。

障碍物聚类
在基于 CNN 的预测之后,Apollo 可获得每个 cell 的预测信息。Apollo 使用包含以下 5 个属性的 cell 目标属性图:
- 中心偏移量
- objectness(是否包含目标)
- positiveness(有效目标概率)
- 目标高度
- 类别概率
为了生成障碍物,Apollo 基于 cell 的中心偏移预测结果构建有向图,并搜索连接的组件。如图 3 所示,每个 cell 由图中的一个节点表示,图的有向边则基于 cell 的预测中心偏移量构建,指向单元格对应的父节点。
根据此有向图,Apollo 使用压缩 Union Find(并查集)算法来高效地查找连接的组件,每个组件都是候选障碍物目标簇。
Objectness 是描述一个 cell 是一个有效目标的概率。因此,Apollo 将 objectness 值小于 0.5 的 cell 定义为非目标 cell。因此,Apollo 为每个候选目标簇过滤掉空 cell 和非目标 cell。

- 红色箭头表示针对每个 cell 预测的目标中心偏移方向。
- 使用蓝色覆盖的区域表示 objectness 概率不小于 0.5 的目标 cell。
- 红色实线多边形内的 cell 组成一个候选目标簇。
- 红色五角星表示连接组件对应子图的根结点(cell)。
一个候选目标簇可以由多个相邻的组件组成,这些组件的根节点彼此相邻。
Apollo 对候选目标簇内各个 cell 的类别概率求和来计算各类候选障碍物的概率,包括车辆、行人、自行车和未知的障碍物。
具有最大平均概率的障碍物类型即为该目标簇的 最终分类结果。
后处理
聚类之后,Apollo 获得一组候选目标簇,每个候选目标簇包括几个 cell。在后处理中,通过对计算该簇所包含的 cell 的 positiveness 和目标高度的均值,Apollo 首先计算出每个候选簇的检测置信度。然后,Apollo 移除比预测目标高度高很多的点,并收集每个候选簇有效 cell 内的点。最后,Apollo 移除置信度非常低或者包含点数比较少的候选簇,输出最终障碍簇/分割。
激光雷达感知模块的输入输出
| channel 名称 | 输入输出 | channel 说明 |
|---|---|---|
| /apollo/sensor/lidar128/compensator/PointCloud2 | 输入 | 128 线激光雷达运动补偿之后的点云输入 |
| /apollo/sensor/lidar16/fusion/compensator/PointCloud2 | 输入 | 16 线激光雷达融合运动补偿之后的点云输入 |
| /perception/inner/PrefusedObjects | 输出 | 激光雷达输出给融合感知模块的障碍物信息 |
文档意见反馈
如果您在使用文档的过程中,遇到任何问题,请到我们在【开发者社区】建立的 反馈意见收集问答页面,反馈相关的问题。我们会根据反馈意见对文档进行迭代优化。