在自动驾驶领域,激光里程计和建图(LOAM)已经起到重要的作用,归因于它可以在定位机器人的位姿的同时建立周围环境的高精度、高分辨率的地图。
算法简介
算法名称:Loam_livox 针对 FoV 较小的 激光雷达的 一种快速、鲁棒性强、高精度雷达里程计和建图 算法 传统的LOAM算法对应的是传统的机械雷达,对于小FoV和非重复式雷达,直接应用的话效果会不理想。 Loam_livox 在LOAM算法的基础上,在前端和后端均做了工作,解决了在使用LOAM算法思想时对于固态雷达的几个核心问题。 算法在精度和效率方面表现还不错。 本质上讲,这个算法是针对固态雷达的LOAM算法。那么为什么要这么做就要涉及固态雷达和传统机械雷达的区别。
固态雷达和传统机械雷达的区别
固态雷达的FoV要小很多 固态激光雷达通常是非常小的视野(FoV)。例如Livox MID40,向前的锥形FoV为38.4度。其它固态LiDAR,例如MEMS LiDAR也类似的小FoV问题。 相较于传统的线式的雷达,在一帧雷达数据帧里面减小的FoV会导致更少的特征,使得后面特征匹配会不好,并且易受移动物体干扰。 虽然可以通过多个雷达组合实现一个更大的FoV,但是它会造成更大的传感器成本和重量。 两者的视野的对比图如上面所示, 传统的机械式雷达内部是整体旋转的,所以能测量到360°的水平视野,垂直方向的视野大小就和线数有关系了, 16线的大概30度左右。 没有规则的扫描模式 传统的线式雷达有很多雷达接收装置在垂直方向,旋转所有接收装置作为一个整体,形成一组平行线的集合。这种规则的扫描方式极大简化了特征提取。例如角可以通过线上的点的不同深度信息很容易计算得到。 固态激光雷达的扫描模式是非常没有规律的。例如Livox MID40 是想玫瑰花节的这种扫描模式,相邻的两帧扫描的距离非常远。像下面那图 非重复式扫描模式 为了提高固态激光雷达的覆盖率,非重复式扫描的方式被用在这种激光,就是扫描的轨迹从不会重复,像上面那个图。 机械式雷达可以看上面的示意图,假如雷达不动,那么第二圈和第一圈的点则有很多是重复的。 运动模糊 由于固态激光雷达是由一个朝前的雷达连续的扫描,当雷达持续的移动时,在一个坐标系下测量的三维点云是在不同时刻取样的,就会出现那一帧的运动模糊,造成那一帧的运动畸变。 运动畸变 对于两种雷达都会有,但是由于固态雷达的扫描没有规律,那么它的运动畸变会更强些。
算法特点
为了解决上面提到的固态雷达几种特点,Loam_Livox在这方面做了很多针对性的工作。
- 非常小的Fov情况下的特征点的提取和选择
- 鲁棒的异常值剔除,移动目标过滤:每次去除误差最大的20%的点。
- 运动畸变校正:使用分段并行化处理的方式,相比插值效果和效率上效果更好。
- 消除一部分点,例如边缘,强度过大或过小的点,在物体后面的点,提高精度
- 使用点到线和点到面的icp方式。
- 加入反射强度作为第四维标准,用来识别不用材料形成的边缘
算法效果
没有其它的传感器情况下,包括IMU、GPS和相机,通过匹配点云到指定范围的本地地图的方式,Loam_Livox算法可以实时计算雷达的位姿。算法的结果如下图展示的。可以从第一个图的楼梯和栏杆看出算法的细节水平,第二张图可以看到算法可以适用于大场景下。
算法整体概览
算法的整体逻辑如上图表现的。 之后再对算法里面各环节做公式及代码的研究。