有哪些激光雷达SLAM算法?

有哪些激光雷达SLAM算法?点击上方“计算机视觉工坊”,选择“星标”干货第一时间送达来源丨https://www.zhihu.com/question/433556301编辑丨计算机视觉工坊方法一作者|牛先卓http…

大家好,又见面了,我是你们的朋友全栈君。

点击上方“计算机视觉工坊”,选择“星标”

干货第一时间送达

有哪些激光雷达SLAM算法?

来源丨https://www.zhihu.com/question/433556301

编辑丨计算机视觉工坊

方法一

作者|牛先卓

https://www.zhihu.com/question/433556301/answer/1618614187

激光雷达分单线和多线这两大类,针对这两类Lidar所使用的算法也不尽相同。

首先单线雷达一般应用在平面运动场景,多线雷达则可以应用于三维运动场景。

2D Lidar SLAM

一般将使用单线雷达建构二维地图的SLAM算法,称为2D Lidar SLAM。大家熟知的2D Lidar SLAM算法有:gmapping, hector, karto, cartographer。通常数据和运动都限制在2D平面内且运动平面与激光扫描平面平行。

gmapping[1]

基于粒子滤波的2D激光雷达SLAM,构建二维栅格地图。融合里程计信息,没有回环检测。

优点是在小场景中,计算量小,速度较快。

缺点是每个粒子都携带一幅地图,无法应对大场景(内存和计算量巨大);如果里程不准或标定参数不准,在长回廊等环境中容易把图建歪。

有哪些激光雷达SLAM算法?

有哪些激光雷达SLAM算法?

hector[2]

hector SLAM是完全基于scan-matching的,使用迭代优化的方法来求匹配的最佳位置,为避免陷入局部极值,也采用多分辨率的地图匹配。

由于完全依赖于scan matching,要求雷达的测量精度较高、角度范围大,扫描速度较高(或移动速度慢)。噪声多、边角特征点少的场景就很容易失败。

原文所提出方法的特点还在于,加入IMU,使用EKF估计整体的6DoF位姿,并根据roll, pitch角将激光扫描数据投影到XY平面,因而支持激光雷达有一定程度的倾斜,比如手持或机器人运动在不是很平整的地面上。

karto[3][4]

karto是基于scan-matching,回环检测和图优化SLAM算法,采用SPA(Sparse Pose Adjustment)进行优化。

关于karto 和 cartographer 的比较,可以看看这里:https://blog.csdn.net/hzy925/article/details/78857241

cartographer[5][6]

cartographer是谷歌开源的激光SLAM框架,主要特点在于:

1.引入submap,scan to submap matching,新到的一帧数据与最近的submap匹配,放到最优位置上。如果不再有新的scan更新到最近的submap,再封存该submap,再去创建新的submap。

2.回环检测和优化。利用submap和当前scan作回环检测,如果当前scan与已经创建的submap在距离上足够近,则进行回环检测。检测到回环之后用ceres进行优化,调整submap之间的相对位姿。为了加快回环检测,采用分枝定界法。

cartographer也可以应用于3D Lidar SLAM(我还没试过),不过最出名的还是她在2D Lidar SLAM方面的出色表现,毕竟论文标题就是“Real-time loop closure in 2D LIDAR SLAM”。

3D Lidar SLAM

3D Lidar SLAM主要是针对多线雷达的SLAM算法。比较出名的有LOAM, LeGO-LOAM, LOAM-livox等。

LOAM[7]

LOAM是针对多线激光雷达的SLAM算法,主要特点在于:1) 前端抽取平面点和边缘点,然后利用scan-to-scan的匹配来计算帧间位姿,也就形成了里程计;2) 由估计的帧间运动,对scan中的每一个点进行运动补偿;3) 生成map时,利用里程计的信息作为submap-to-map的初始估计,再在利用submap和map之间的匹配做一次优化。

LOAM提出的年代较早(2014),还没有加入回环优化。

关于LOAM的详细解析,可以参考这篇专栏文章:

https://zhuanlan.zhihu.com/p/111388877

ALOAM[8]是Advanced implementation of LOAM,使用Eigen和ceres-solver简化代码实现。

LeGO-LOAM[9]

LeGO-LOAM在LOAM的基础上主要改进:1) 地面点分割,点云聚类去噪;2)添加了ICP回环检测和gtsam优化。

关于LeGO-LOAM的详细解析,可以查看这个专栏文章:

https://zhuanlan.zhihu.com/p/115986186

LOAM_livox[10]

大疆2019年公布的面向小FOV Lidar的LOAM算法。相比LOAM,做了一些改动。算法的特点:

1.添加策略提取更鲁棒的特征点:a) 忽略视角边缘有畸变的区域; b) 剔除反射强度过大或过小的点 ; c) 剔除射线方向与所在平台夹角过小的点; d) 部分被遮挡的点

2.与LOAM一样,有运动补偿

3.里程计中剔除相对位姿解算后匹配度不高的点(比如运动物体)之后,再优化一次求解相对位姿。

视觉和Lidar 融合的SLAM算法

VLOAM[11]

VLOAM 是视觉和激光雷达紧耦合的方案。

有哪些激光雷达SLAM算法?

视觉里程计部分,图像帧之间的相对位姿估计以60Hz运行。先抽取和匹配图像特征,雷达点云融合成深度地图,再将深度地图与视觉特征点关联起来,以帮助计算两帧之间的相对位姿。

雷达里程计部分,将1s内的数据作为一个完整扫描 sweep。Sweep-to-Sweep refinement模块优化求解两个sweep之间的相对运动并去除运动畸变,Sweep-to-Map Registration模块将局部点云注册到已经构建的地图上面。

Transform Integration模块则结合两个里程计,以视觉里程计的高帧率输出位姿估计。

待补充 。。。

参考

1.Grisetti, G., et al. (2007). “Improved techniques for grid mapping with rao-blackwellized particle filters.”  23(1): 34-46.

2.Kohlbrecher, S., et al. (2011). A flexible and scalable slam system with full 3d motion estimation. 2011 IEEE international symposium on safety, security, and rescue robotics, IEEE.

3.https://github.com/ros-perception/slam_karto

4.https://github.com/skasperski/OpenKarto

5.https://github.com/cartographer-project/cartographer

6.Hess, W., et al. (2016). Real-time loop closure in 2D LIDAR SLAM. Robotics and Automation (ICRA), 2016 IEEE International Conference on, IEEE.

7.Zhang, J. and S. Singh (2014). LOAM: Lidar Odometry and Mapping in Real-time. Robotics: Science and Systems.

8.https://github.com/HKUST-Aerial-Robotics/A-LOAM

9.Shan, T. and B. Englot (2018). Lego-loam: Lightweight and ground-optimized lidar odometry and mapping on variable terrain. 2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), IEEE.

10.Lin, J. and F. Zhang (2020). Loam livox: A fast, robust, high-precision LiDAR odometry and mapping package for LiDARs of small FoV. 2020 IEEE International Conference on Robotics and Automation (ICRA), IEEE.

11.Zhang, J. and S. Singh (2015). Visual-lidar odometry and mapping: Low-drift, robust, and fast. 2015 IEEE International Conference on Robotics and Automation (ICRA), IEEE.

方法二

作者|MangoFan

https://www.zhihu.com/question/433556301/answer/1618562152

2D:效果最好的应当是Google的Cartographer,此外还有基于粒子滤波的gmapping,基于优化的hector slam等等。

3D领域:

经典的LOAM(A-LOAM),用特征点:planar points & edge points 来进行帧间匹配,无回环

LeGO-LOAM  ICP 的方法加入了回环,用于减小漂移,一致性更强

G-LOAM 引入 GPS 作为新增的位姿约束,用 Levenberg-Marquardt 方法优化位姿图

LOAM-Livox (HKU Mars Lab)一套可用于固态激光雷达的SLAM算法

Fast-LIO (HKU Mars Lab),一套可用于无人机的基于EKF的雷达惯导里程计

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「计算机视觉工坊」公众号后台回复:深度学习,即可下载深度学习算法、3D深度学习、深度学习框架、目标检测、GAN等相关内容近30本pdf书籍。

下载2

在「计算机视觉工坊」公众号后台回复:计算机视觉,即可下载计算机视觉相关17本pdf书籍,包含计算机视觉算法、Python视觉实战、Opencv3.0学习等。

下载3

在「计算机视觉工坊」公众号后台回复:SLAM,即可下载独家SLAM相关视频课程,包含视觉SLAM、激光SLAM精品课程。

重磅!计算机视觉工坊-学习交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有ORB-SLAM系列源码学习、3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、深度估计、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

有哪些激光雷达SLAM算法?

▲长按加微信群或投稿

有哪些激光雷达SLAM算法?

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

有哪些激光雷达SLAM算法?

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151226.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab怎么定义矩阵函数,MATLAB数组的常用函数

    3进行数组运算的常用函数在MATLAB中有一些常用函数,这些函数在日常的编程计算过程中会经常遇到,一般是基本的数学概念在MATLAB中的函数表达方式。这些函数在MATLAB中可以同时作用于整个矩阵或者数组,应用起来非常方便,不需要再另写循环程序来对各元素分别进行计算。掌握这些函数是进一步学习的基础。MATLAB人性化的地方在于其自带函数基本是按照相对应的英文名称缩写而来,所以便于记忆。3.1…

    2022年4月8日
    83
  • html refresh原理,HTML meta refresh 刷新与跳转(重定向)页面

    html refresh原理,HTML meta refresh 刷新与跳转(重定向)页面下面为各位整理了一些HTMLmetarefresh刷新与跳转(重定向)页面的例子吧,后面本站长自己也补充了一些js页面刷新与跳转例子吧。refresh属性值–刷新与跳转(重定向)页面refresh用于刷新与跳转(重定向)页面refresh出现在http-equiv属性中,使用content属性表示刷新或跳转的开始时间与跳转的网址refresh示例5秒之后刷新本页面:5秒之后转到梦之都首…

    2022年7月18日
    20
  • VBScript教程之一(Hello VBScriopt)「建议收藏」

    VBScript教程之一(Hello VBScriopt)「建议收藏」***********************************************************VBScript变量命名编码规范Subtype         Prefix     Example Boolean         bln         blnFound Byte         byt         bytRasterData Date (

    2022年6月16日
    25
  • CentOS6.5解决中文乱码与设置字符集

    CentOS6.5解决中文乱码与设置字符集【CleverCode发表在csdn博客中的原创作品,请勿转载,原创地址:http://blog.csdn.net/clevercode/article/details/46377577】1)说明:Windows的默认编码为GBK,Linux的默认编码为UTF-8。在Windows下编辑的中文,在Linux下显示为乱码。为了解决此问题,修改Linux的默认编码为GBK。2)…

    2022年5月25日
    65
  • 下载网络直播,多个ts文件下载与合并

    下载网络直播,多个ts文件下载与合并一、chrome与迅雷批量下载视频进入录播回放的页面,右键审查元素,选择network,可以知晓目前的文件活动情况。首先出来的是第一个ts文件,如图所示:472.ts,这个是第一个文件。把进度条拉动到最后面,会下载最后一个文件,如1850.ts。接下来可以使用迅雷的批量下载功能。如:http://www.baidu.com/abc001.ts文件,把格式改为http://www.b…

    2022年7月18日
    18
  • 基于51单片机的步进电机的控制

    基于51单片机的步进电机的控制前面笔者分享过基于51单片机的两种小车制作,我们利用的是L298N驱动控制电机转动,那么接下来,笔者给大家介绍两种利用51单片机控制步进电机的小程序。首先我们要如何使电机转动呢,源程序如下:#include<reg52.h>unsignedcharcodeF_Rotation[4]={0x02,0x04,0x08,0x10};//正转表格,换算成二进制00…

    2022年5月31日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号