ADAS传感器融合
0.传感器标定
首先标定传感器。一般可以精度高的传感标定用精度低一个数量级的传感器,如用激光雷达标定毫米波雷达。
-
毫米波雷达标定:可以采用激光雷达对毫米波雷达进行标定。选取一个纹理丰富的自然场景的,如有树木,电线杆和清晰车道线传感器标定。将毫米波雷达数据投影到激光雷达坐标系中,并画出相应的鸟瞰图进行辅助验证。毫米波雷达会检测到道路边沿的目标,通过判断毫米波雷达与激光雷达目标是否重合判断标定是否成功。
-
摄像头标定。包括摄像头的内参和外参。内参包含相机的焦距、主点和畸变系数等信息,可以用棋盘格通过OpenCV和Matlab的工具进行标定。外参为相机坐标到世界坐标,与摄像头的安装位置和角度有关,在平直道路上,利用卷尺和人的身高进行标定。
-
激光雷达标定。采用相机和激光雷达联合标定。
1.传感器融合
因为传感器有各自的优缺点,所以需要融合来扬长避短。摄像头与毫米波雷达是ADAS中最常用的传感器是。
摄像头 - 优势:目标识别能力强,可以对车辆,自行车,行人等目标进行分类。劣势:距离信息不是直接测量得到的。特别是在恶劣天气和光照环境环境下距离信息不准确。
毫米波雷达 - 优势:直接测量目标的位置和速度。受到天气及环境的影响小。劣势: 于雷达的信号较为稀疏,不便通过雷达进行目标识别。这些性质正好与摄像头形成互补。
信息融合又可分为目标级融合和信号级融合。
目标级融合: 每个传感器先各自处理原始信号生成目标。在目标的基础上进行融合。- 优势: 对控制器的算力和通信传输要求低。劣势: 是传感器在独立处理信号时会有信息丢失。
数据级融合: 在原始数据级就进行融合。- 优势:信息丢失少,精度高,劣势:对控制器的算力和通信传输要求高。
在架构设计时需要找到精度和算力分布的平衡点。
L2级别ADAS采用前视摄像头和雷达目标级融合的方案。雷达输出target信号,摄像头为类似mobileye的智能摄像头,输出track信号。
模块分为数据有效性验证,时间补偿,雷达聚类,目标匹配,新目标生成,航迹追踪,目标管理等子模块:
2.雷达聚类
毫米波雷达通过分析雷达反射的回波进行目标的定位测速。雷达底层信号处理回波通过快速傅里叶变换fft,反射点,恒虚警处理cfar,关键点。这些步骤一般在内雷达部件内部完成。
雷达输出的信号分为:target,object,track。target信号为未经过聚类的反射点。由于回波反射,特别是在旁边车辆,隧道,或者有路边栅栏的情况,回波多次反射噪音较大。一个目标也会出现多个target信号。
object为聚类之后的目标点。置信度高于object。track是object进行追踪后,带有ID,置信度最高, 但因为目标稳定追踪后才会输出,所以新目标出现会有延时。
-目标聚类
雷达target聚类得到object。雷达target先需要进行目标进行滤除。
因为不知道雷达簇的个数,并且对算法实时性要求高,一般采用基于距离或密度的聚类。如eclidean clustering和dbscan。
在簇核心的选择上可以选择反射能量大的点,或者以上次聚类的结果做为核心。在距离参数上,除了空间距欧式离外,或者采用马氏距离。雷达只能提供径向距离和速度,不能提供切向值。径向值较准而角度不准。在计算距离时可以根据变量的精度加权。
3.数据关联
数据关联是匹配不同传感器的目标或者匹配当前目标与前帧的航迹。
在匹配之前通过设置门限值(gate),对匹配目标进行初删选。
通过在每个track周围根据距离和速度设置门限值,只有在阈值内的目标才进行匹配。
对匹配的假设会出现多的情况一配一,一配多,多配一的情况。根据数据的情况选择匹配的假设。
以一配一的为例步骤如下:
- 计算距离矩阵。距离参数可选择,欧式距离,或者根据卡方分布计算马氏距离。计算两组需要匹配的列表中列表1中每个点到列表2中每个点的距离。如果目标门限值之外可以给距离赋一个极大值。
- 目标匹配的算法有GNN(global nearest neighbor), JPDA(joint probablity data assication),MHT(multi-hypothesis tracking)等
如果假设问题是一对一匹配可以用到线性分配(linear assignment)。匈牙利算法可以找到最优解,但算法复杂度较高的O(n4),
实际应用中如果不需要最优解并且对算法实时性要求高可以采用贪心算法。计算全局的最小值匹配,把匹配后那行和列都删掉。再在剩下的值中找最小值重复上述步骤。直到列表为空或者最小值都大于某阈值。
4. 航迹追踪
航迹与雷达和相机的匹配结构后,通过卡尔曼滤波对航迹进行追踪。
注意的是雷达只能观测到径向的距离和速度。观测矩阵是非线性的所以要用到EKF。
如果假设目标是质点运动模型,如横坐标方向匀速运动,纵坐标方向匀加速采用EKF。如果运动模型选用更复杂的非线性模型如速度航向角模型。
则需用到UKF。
卡尔曼调参
参数虽然有物理含义但是很难从理论推到得到,需要根据数据进行调试。
P(初始前验协方差):初始增益的大小可以决定初始收敛速度。
Q(过程噪音协方差):Q小时系统更依赖模型。
R(观测噪声协方差):R小时系统更依赖观测, 初始增益大,但是稳态时容易引入噪声。
特殊情况:
1.当前帧没有观测值。卡尔曼只做预测不做更新。
2.设置几套不同的参数。例如相机发现目标后2秒内目标位置速度不准确,这时可以采用较大的R
5. 难点
- 区分实际目标与路旁的障碍物。可将速度设为门限值以滤除路边静止目标。
- 并行目标区分。如果辆车并行速度相似,雷达较难区分,因为雷达角分辨率较低。可以通过相机目标识别加以区分。
- 遮挡障碍物识别。相机会被前方车辆遮挡,当前车cutout后容易发生危险。雷达有一定的穿透能力,可对遮挡的前车提前做出预警。
- 雷达误报警。雷达会识别路面上的金属目标(如井盖),产生误报警。通过相机确认目标存在。
- 漏报警。在雨天或者光照条件不好的情况下相机识别不稳定,易出现漏报的情况。而雷达性能受环境影响较小,在track丢失相机目标时可通过雷达信息进行追踪。误报漏报间存在权衡,根据功能定义在特定区域对误报漏报进行标定。如L2级ADAS系统应该首先降低误报警,因为系统安全最终由人负责,频繁的误报警会影响驾驶体验。