前言
Apollo星火计划课程链接如下
星火计划2.0基础课:https://apollo.baidu.com/community/online-course/2
星火计划2.0专项课:https://apollo.baidu.com/community/online-course/12
1. 感知的作用
感知
:是对感官信息的组织、识别和解释,以表示和理解所呈现的信息或环境。
自动驾驶感知涉及从车辆传感器收集数据,并将这些数据处理成对车辆周围世界的理解,为后续PnC(规划控制)模块提供必要信息。
”必要信息“
静态环境结果
- 路面信息(车道线、转弯标识、停车位、斑马线……)
- 路标(限速牌、禁停标志……)
- 红绿灯
- ……
动态障碍物结果
- 机动车
- 自行车
- 行人
- ……
状态
- 障碍物的位置、速度、种类、预测轨迹
- 红绿灯状态、读秒器显示
- ……
场景
- 高速、十字路口、无保护左转、停车场
- 天气(雨雪雾……)
- ……
2. 常见传感器
环境传感器 | 自车传感器 |
---|---|
相机 | GNSS |
激光雷达 | IMU |
毫米波雷达 | 轮速计 |
超声波雷达 |
单一的传感器难以做到完美,通常需要结合不同传感器的优点进行多传感器融合以达到更好的效果。
2.1 相机
2.1.1 相机的种类
相机(Camera):
-
前视摄像头
-
环视摄像头
-
鱼眼摄像头
-
双目摄像头
-
事件相机
2.1.2 相机的特点
优点 | 缺点 | 常用感知算法 |
---|---|---|
成本低 | 缺乏深度信息 | 深度学习 |
物体纹理信息 | 光干扰 | 传统算法 |
SLAM |
2.2 激光雷达
2.2.1 激光雷达系统构成与方案
TOF受到精度的限制,会有最短距离约束。
2.2.2 激光雷达光源
https://www.lasersafetyfacts.com/laserclasses.html
https://en.wikipedia.org/wiki/Laser_safety
波长越短,频率越高,能量越强
降噪
1.选择低太阳光通量区域的工作波长, 905nm, 1550nm激光器
1.905nm 边发射激光器供应链成熟,常用是InGaAs/GaAs应变量子阱脉冲激光二极管
2.1550nm 以光纤激光器作为光源,成本、体积、供应链不成熟光电探测器
1.硅在 905nm 波长处吸收光子,硅基光电探测器技术比探测1550 nm光所需的铟镓砷(InGaAs)近红外探测器更加成熟人眼安全
1.400-1400nm波段内激光穿过玻璃体,聚焦在视网膜上, 视网膜温度上升10℃就会造成感光细胞损伤
2.低于400nm或高于1400nm的激光会被晶状体和角膜吸收,高功率的会造成白内障或晶体状烧伤
3.保证 Class 1 人眼安全的条件下,相比于905nm激光,1550nm波长的光比905nm的光可发射更大功率
光源的选择会影响测距的性能。
2.2.3 激光雷达扫描方式
堆叠的发射器决定了激光雷达的线束。
2.2.4 激光雷达总结
激光雷达(LiDAR)
通过不断向外发射激光束,并接收物体反射回的光脉冲,根据光速计算出信号之间的时间差或相位差来确定车与物体之间的相对距离。激光雷达是主动式的感知。激光雷达的数据结构
(
X
,
Y
,
Z
,
I
)
(X,Y,Z,I)
(X,Y,Z,I)
- 按扫描方式
1.旋转式激光雷达
2.固态激光雷达
Flsah
OPA
3.混合式激光雷达
转镜
振镜
MEMES - 按工作原理
三角测量法
飞行时间(ToF)
调频连续波(FMCW) - 光源
905nm
1550nm
优点 | 缺点 | 常用感知算法 |
---|---|---|
3D感知,原生深度信息 | 缺乏纹理信息 | 深度学习 |
抗强光 | 传统算法 | |
SLAM |
2.2.5 Camera VS. LiDAR
2.3 毫米波雷达
毫米波雷达(Radar)
- 远距离雷达
- 角雷达
- 3D X, Y, V
- 4D X, Y, Z, V
按工作频率
- 77GHz
- 24GHz
优点 | 缺点 |
---|---|
抗干扰 | 角分辨率低 |
有径向速度 | 无物体纹理信息 |
小目标检测效果差 |
通常情况下,毫米波雷达厂商会给出目标级别的识别物体,与其他传感器结果直接进行后融合。
2.4 部署方案
传感器方案选择要综合考虑下列因素:
功能级别L2vs.L4、场景、成本、技术成熟度、供应链能力、改装难易度、功能安全
……
3. 传感器标定
3.1 安装位置
决定传感器的安装位置要考虑:
感知范围(HFOV、VFOV、Distance)、最佳视角、遮挡、不同传感器间的冗余、安全性、稳定性、量产项目,还要考虑和车身的整合,兼顾安全和美观
安装位置不同,每个传感器都有自己独立的坐标系,需要通过标定将个传感器统一到车身坐标系下。
3.2 坐标系
数据坐标系:根据传感器原理不同,每种传感器都会有自己的数据坐标系,如相机将三维世界中的坐标点映射到二维图像平面的像素坐标系。
传感器坐标系:以传感器为中心的三维笛卡尔坐标系。
车身坐标系:Apollo中采用右-前-天定义
- X – 面向车辆前方,右手方向为正
- Y – 车辆前进方向为正
- Z – 垂直地面,车顶方向为正
- 后轴中心为坐标系中点
传感器标定的目的
即是把感知到的周围环境统一到车身坐标系下。
3.3 内参和自标定
传感器内参(Intrinsics):传感器坐标系和数据坐标系之间的映射以及去除畸变。
传感器外参(Extrinsics):传感器相对于车身或其他传感器坐标系的位姿
R
,
t
R, t
R,t。
相机自标定:
- 去畸变:校正光线在经过透镜边缘后发生弯折,造成的图像边缘弯曲。
- 内参标定:图像坐标系到相机坐标系的映射。
- 相机模型选择:小孔模型(Pinhole),全向相机(Omnidirectional) 供应商可提供,或者通过棋盘标定板测定。
激光雷达自标定(极坐标to笛卡尔坐标系):
- 扫描方式不同,标定方式不同,如旋转式需要发射器角度和位置。
- 反射强度,反射率标定板。
- 厂家标定。
自动驾驶中外参标定:
- 离线(Offline)标定
- 在线(Online)标定
- Target-based VS. Targetless-based
相同传感器标定(Camera2Camera,LIDAR2LiDAR)常采用特征点配对的方式求解位姿,如LiDAR使用ICP进行点云匹配。




(G. Yan, F. He, C. Shi, X. Cai, and Y. Li, ‘Joint Camera Intrinsic and LiDAR-Camera Extrinsic Calibration’. arXiv, Jul. 13, 2022. Accessed: Aug. 17, 2022. [Online]. Available:http://arxiv.org/abs/2202.13708)


更多标定的内容见多传感器融合感知—传感器外参标定及在线标定学习
4. 感知流程及算法
4.1 感知算法流程
算法:
监督学习:人工标注数据。
半监督学习:可通过无监督学习自学习特征,再通过较少标注数据完成具体任务训练。
无监督学习:无需人工预标注,e.g. 强化学习。
无论是传统算法还是深度学习基础的算法,都遵循数据-前处理-表征学习-特征提取-算法任务-后处理到需要结果的pipeline,根据实际场景和业务需求的不同,前、后处理和表征学习过程可省略或者由End2End模型整体处理。
4.2 感知算法概述 — 计算机视觉(CV)任务
4.3 感知算法概述 — 全景分割
全景分割
- 像素级别
- 语义标签+实例ID
- 不可数目标+可数目标
- 研究方向
4.4 激光雷达点云
对点云进行运动补偿(激光束发射的时间有间隔,垂直方向、水平方向上都有间隔,由于车是运动的,会产生误差),再进行特征提取,神经网络的模型(CNN、Transformer等),再完成两个大类的任务——检测、分割。
激光雷达在运动中和物体运动对每帧点云产生的畸变通过运动补偿矫正。
4.4.1 激光雷达点云检测常见算法
Point-based 检测算法
- 由采样、表征学习和检测头检测三部分组成
- 主要采样算法:PointNet系列提出的FPS
- 主要算法:PointRCNN,3DSSD,Pointformer
- 推理时间难以满足实时性,在自动驾驶中较少采用。
Grid-based 检测算法
- 网格表示:Voxel,Pillar,BEV Map
- 网格化表征+基于网格的DNN+检测头
- 主干网络:3D sparse CNN,2D CNN
- 代表网络:VoxelNet,Pointpillars,CenterPoint
Point-voxel based 检测算法
- PVCNN,Fast Point R-CNN系列
Range-based 检测算法
- 前视角特征提取+BEV检测
3D目标检测综述:J. Mao, S. Shi, X. Wang, and H. Li, “3D Object Detection for Autonomous Driving: A Review and New Outlooks.” arXiv, Jun. 19, 2022. doi:10.48550/arXiv.2206.09474.
4.4.2 激光雷达点云分割常见算法
4.5 融合
4.5.1 融合介绍
融合:将多传感器检测到的目标在时间和空间两个尺度上达成同一。
- 时间:每个传感器的频率不一致,如LiDAR 10Hz,Camera 30Hz,Radar 10Hz
- 空间:各传感器的感知结果投影到车身坐标系。
前融合:原始信号融合,一般用于同类传感器融合,原始信息不损失,计算量大,融合难度大。
特征融合:传感器信号进行独立特征提取后进行融合,最近比较流行BEV。
后融合:每种传感器独立进行感知检测,在结果层进行融合,原始信息损失较大,计算量小,难度低。
4.5.2 时间同步
4.5.3 BEV
BEV优势
- 前融合、特征融合
- 多模态融合(多传感器融合、时空融合)
- 感知结果与下游任务预测、PnC衔接
- 提供了新的End2End范式基础
- V2X融合
4.6 数据
国内数据库下载 https://opendatalab.com/
4.7 评价和测试
实际工作中,指标只是一个参考,很多场景是要根据任务制定测试标准的
数据闭环的目的是为了提高自动驾驶中数据相关工作的工作效率,特别是应对大数据驱动的算法训练和场景检验
4.8 训练、优化到部署
算法优化和部署:
实际工作中,算法要根据不同的硬件方案进行调整,从初期的选型到后期的部署,不仅要有整体层面的考量,还要硬件、软件、算法、供应商团队的通力合作才能打造一款优质的产品。
“算法是软件、硬件、场景、商务的……妥协。” —— Pacal Meng
4.9 未来:端到端?

5. 实践
5.1 雷达数据的查看
运行以下指令(云实验里面的数据包改了-2022.12.11)
cyber_recorder play -f sensor_rgb.record -l
输入cyber_monitor查看,按左右键即可查看,N\M键切换数据
cyber_monitor
cyber_recorder play -f databag/demo_3.5.record -l
cyber_channel 类似于ROS的topic
cyber_channel -h
cyber_channel list 看那些通道被激活了
cyber_channel list
5.2 激光雷达实验
本实验基于云平台进行。实验地址——Apollo感知之数据结构解析
本次实验所用的数据包是sensor_rgb.record
1.首先播放该数据包
cyber_recorder play -f databag/sensor_rgb.record
2.再用cyber_monitor 查看通道。找到图中所指示的这个通道,该通道是激光雷达点云数据的通道
这是激光雷达点云的数据。频率为10Hz(FrameRatio)。
再查看每个点云的数据结构,包含
x
x
x,
y
y
y,
z
z
z以及intensity强度信息。
按N/M键可以切换数据
3.往/apollo/modules/common/data/global_flagfile.txt
文件中添加数据包中pointcloud_topic点云数据。
vim /apollo/modules/common/data/global_flagfile.txt
--pointcloud_topic=/apollo/sensor/velodyne64/compensator/PointCloud2
4. 修改channel。将图中的红色方框里的通道改为之前用cyber_monitor查看的通道(图中已改过)。
vim /apollo/modules/perception/production/dag/dag_streaming_perception_lidar.dag
5.再重新启动DreamView。
bash scripts/bootstrap_neo.sh restart
6.点开Point Cloud,查看结果。
Apollo beta 版本软件包的激光雷达实验
视频地址:
CSDN:https://live.csdn.net/v/263483
bilibili:https://www.bilibili.com/video/BV13e4y1K7fM/?spm_id_from=333.999.0.0&vd_source=67597beb15c6804a2da3e2d025e6963e
Apollo_beta_软件包_激光雷达测试