Camera
视觉感知算法在 Apollo 平台上主要有 3 个应用场景,分别是红绿灯检测、车道线检测、基于摄像头的障碍物检测。
每个模块又可以分为 3 部分,分别是图像的预处理、神经网络模型以及后处理。
- 预处理:对上游信息做一些处理和整合,以方便把信息直接输入到模型中做预测。
- 神经网络模型:主要涉及一些深度学习算法,包括目标检测、语义分割、图像分类等。
- 后处理:为了优化模型效果,我们会利用一些传统的算法进一步优化网络模型的预测,让我们的算法可以在实车上跑得更加流畅。
Camera感知模块的输入输出
channel 名称 | 输入输出 | channel 说明 |
---|---|---|
/apollo/sensor/camera/front_6mm | 输入 | 前置 6mm 摄像头 |
/apollo/sensor/camera/front_12mm | 输入 | 前置 12mm 摄像头 |
/apollo/localization/pose | 输入 | 主车速度和角速度 |
/tf | 输入 | 定位信息 |
/perception/obstacles | 输出 | 具有航向、速度和分类信息的三维障碍物轨迹 |
/perception/inner/PrefusedObjects | 输出 | 输出给融合模块的障碍物信息 |
/apollo/perception/traffic_light | 输出 | 交通信号灯检测与识别的输出 |
LiDAR模块
激光雷达感知模块接受来自激光雷达驱动的点云信息,利用这些点云信息进行障碍物的检测以及跟踪,得到的结果会被输出到感知融合模块进行下一步处理。通过高精度地图 ROI(The Region of Interest)过滤器过滤 ROI 之外的点云,去除背景对象,例如:路边建筑物、树木等,过滤后的点云数据通过障碍物检测深度学习模型进行 3D 障碍物的检测和分类,然后对得到的障碍物进行跟踪,最终得到障碍物的形状、位置、类别、速度等信息。
LiDAR的输入输出
channel 名称 | 输入输出 | channel 说明 |
---|---|---|
/apollo/sensor/lidar128/compensator/PointCloud2 | 输入 | 128 线激光雷达运动补偿之后的点云输入 |
/apollo/sensor/lidar16/fusion/compensator/PointCloud2 | 输入 | 16 线激光雷达融合运动补偿之后的点云输入 |
/perception/inner/PrefusedObjects | 输出 | 激光雷达输出给融合感知模块的障碍物信息 |
Fusion模块
对摄像头、毫米波雷达和激光雷达传感器感知的结果进行目标级融合。
通过对各传感器检测算法输出的障碍物分析,结合每个障碍物的传感器来源、位置、形状、速度、类别等信息,以及历史目标跟踪的信息,过滤掉一些检测不准确的障碍物。并且感知融合模块根据各个传感器的优缺点,调整障碍物的类别、位置、形状、速度等属性,最终融合输出,得到当前帧的结果。
下图表示了摄像头(Camera)、毫米波雷达(Radar)和激光雷达(Lidar)传感器在不同任务和不同条件下的性能。其中,
- 摄像头:对于分类任务尤其准确,
- 毫米波雷达:在穿透性、距离估计和极端天气抗干扰性具有卓越的性能,
- 激光雷达:擅长目标检测任务。
如果能有效将三种传感器进行融合感知,就能在各种情况下都能达到优良的性能。
Fusion模块的输入输出
channel 名称 | 输入输出 | channel 说明 |
---|---|---|
/perception/inner/PrefusedObjects | 输入 | 统一输入 channel。各传感器感知的结果都会输出到该 channel 里作为感知融合模块的源数据。 |
/apollo | ||
/perception/obstacles | 输出 | 感知融合模块的主要输出 channel。该 channel 输出的是多传感器融合之后的障碍物信息。 |