2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 自动驾驶(八十一)---------Apollo之感知模块

自动驾驶(八十一)---------Apollo之感知模块

时间:2020-01-03 07:17:39

相关推荐

自动驾驶(八十一)---------Apollo之感知模块

预则立不预则废,本命年要注意,真男人不回头。

apollo的感知分为以下几个方面:lidar、ladar、camera、fusion。

1. Camera感知

Apollo视觉检测,地址在:Apollo/modules/perception/camera/lib/obstacle; 主要是用了YOLOv3的检测方法,一方面我们需要对多个类别进行识别:车辆、卡车、骑车人和行人等;另一方面一个网络识别一个类别精度更高,但是也需要考虑性能问题。所以在Apollo中采用折中方案:训练了两个不同的网络:一个是针对目标进行识别的网络:车辆、卡车、骑车人和行人等;一个是针对车道线、道路边沿、栏杆等。

在Apollo中物体分为静态物体和动态物体,所以针对不同的对象会有不同的属性,例如对于运动物体,需要2D-to-3D的模块,这里就不展开了;另外物体追踪也是提高精度的方法,追踪采用Kalman滤波。跟踪必须是轻量化,必须速度要快,计算两帧之间检测到的目标的相似性的方法定义在 Apollo/modules/perception/camera/lib/obstacle/tracker/common/similar.h 文件中,主要是根据bbox的IOU(交并比)计算。

apollo摄像头的感知部分主要资料都在apollo自己的文档中,我也没有详细的梳理代码,大家可以多参考apollo自的文档:/ApolloAuto/apollo/blob/r5.0.0/docs/specs/perception_apollo_3.0_cn.md

2. Lidar感知

Lidar的感知步骤很清晰:分割、分类、跟踪

1. ROI分割,结合HDmap和自身定位,选取ROI 区域,一般的就是选道路里面的区域,如图:,处理在ROI之外的激光雷达点,去除背景对象,如路边建筑物和树木等,剩余的点云留待后续处理。

2. 目标分类,继续细分如下步骤:

(1). 在2d俯视图上划分网格,边长一般取0.25米。

(2). 在划分好的每个网格中,统计以下变量作为网格的属性:单元格中点的最大高度、单元格中最高点的强度、单元格中点的平均高度、单元格中点的平均强度、单元格中的点数、单元格中心相对于原点的角度、单元格中心与原点之间的距离、二进制值标示单元格是空还是被占用(单元格内是否有点)。

(3). 把上一步得到的多维矩阵作为输入,通过卷积神经网络预测可以得到关于单元格的12个特征:1. 是否是物体的预测值;2. 向中心偏移预测;3. 为前景物体概率;4.多个类别的预测:行人,汽车,自行车等;5. 物体高度预测;

(4). 上一步得到每个网格的多维属性,但是需要聚类为几个独立的障碍物,这里主要是用到向中心偏移,通过方向聚合障碍物,如图a最终得到b:俯视图:

(5). 后期处理,Apollo首先对所涉及的单元格的积极性和物体高度值,平均计算每个候选群体的检测置信度分数和物体高度。 然后,Apollo去除相对于预测物体高度太高的点,并收集每个候选集中的有效单元格的点。 最后,Apollo删除具有非常低的可信度分数或小点数的候选聚类,以输出最终的障碍物集。

3. 目标跟踪,分为两部分:目标匹配和运动跟踪;

(1). 目标匹配又很多方法,例如匈牙利匹配和交并比(IOU),apollo特别的在外形的匹配基础上加入多个维度计算相似性:

,在以上维度的基础上采用匈牙利匹配进行匹配。

(2).运动跟踪主要是使用卡尔曼滤波来track ,再剔除异常数据,特别的对物体的速度描述如下:锚点移位速度、边界框中心偏移速度 和 边界框角点位移速度,选出与之前观测速度偏差最小的速度为最终的观测值。根据最近3次的速度观测值,计算出加速度,之后利用卡尔曼滤波来不断收敛物体的位置。

3. Ladar

在Apollo中Radar感知的流程与Lidar感知相比简化了一些,主要分为:预处理工作、高精地图ROI过滤器、物体检测、物体跟踪

1.第一步预处理工作主要是矫正雷达数据的时间戳、获取雷达到世界坐标系的变换矩阵。

2.这部分其实与激光雷达Lidar感知的高精地图ROI过滤器比较类似,在激光雷达中查询的范围是60m,而在雷达感知中查询的范围为120m,计算当前时刻车辆的速度,之所以要计算,是因为要差值出雷达感知的时刻对应的车辆速度,这也要求在记录不同传感器的数据时,必须同步记录好对应的时间。

3. 雷达Radar感知相对于激光雷达Lidar感知更加简单,是因为Apollo使用Radar就可以分辨出自行车、行人等类别。而激光雷达Lidar需要手动去CNN分割识别障碍物,MiniBox构建标定框等;同时Radar也可以自行完成跟踪,不需要使用匈牙利算法对Object进行匹配等。

4.最后Radar的检测结果将会以自定义的共享数据类型发布,发布的结果其实与Lidar感知相似。障碍物的尺寸、方向、速度等信息。

4.Fusion

传感器的数据融合有两部分内容比较重要,即数据关联和动态预估。

1. 数据关联用的是基于几何距离的HM匈牙利算法。

2. 动态预估用的是:使用了非简化的估计误差协方差矩阵更新公式: 1. 标准卡尔曼滤波:2. 修改后的Apollo公式为:

5. 总结

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。