有哪些激光雷达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)
上一篇 2022年6月20日 下午9:46
下一篇 2022年6月20日 下午9:46


相关推荐

  • c++ 常量表达式_c语言所有函数

    c++ 常量表达式_c语言所有函数constexpr修饰函数。普通函数/类成员函数。1.函数必须要有返回值,并且return返回的表达式必须是常量表达式。错误代码如下:#include<iostream>usingnamespacestd;//error不是常量表达式函数constexprvoidfunc1(){ inta=200; cout<<a<<endl;}//error不是常量表达式函数因为a是变量,不是常量constexprint

    2026年4月16日
    4
  • navicat premium15激活码【2021.10最新】

    (navicat premium15激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html08G05E7DZH-eyJsa…

    2022年3月28日
    57
  • 国产达梦数据库学习笔记(一):NeoKylin7.0安装及配置与常用基础命令

    国产达梦数据库学习笔记(一):NeoKylin7.0安装及配置与常用基础命令国产达梦数据库学习笔记(一):NeoKylin7.0安装及配置与常用基础命令以VMwareWorkstationPro15环境下的NeoKylin7.0与DM8为例中标麒麟系统NeoKylin7.0安装1.安装包下载NeoKynlin7.0官网下载(填写表格内容即可):中标麒麟系统官网注意:ISO存放路径中避免出现中文2.在VMware上创建虚拟机在VMware主页选择“创建新的虚拟机”,出现以下页面选择“自定义(高机)”选择“安装程序光盘映像文件(iso)”,选择在中

    2022年8月10日
    18
  • bat time命令_bat获取文件修改时间

    bat time命令_bat获取文件修改时间最近公司的项目,需要部署一个oracle定时备份脚本,删除掉特定时间前的备份文件。BAT批处理文件结合windows系统(任务计划程序)正常情况下我们的任务计划会有反馈数值,通过它可以判断这个任务计划上次是否运行正常。代码0或0x0:操作成功完成。代码1或0x1:调用的函数不正确或调用了未知函数。代码10或0xa:环境不正确。代码0x8009000f…

    2026年1月28日
    7
  • 提升苹果电脑速度的10个小技巧[通俗易懂]

    提升苹果电脑速度的10个小技巧[通俗易懂]众所周知,随着时间的流逝,包括Mac在内的所有计算机的速度都会降低。除了换电脑,还是有许多简单的调整可以提高计算机的性能并加快运行速度较慢的Mac,而且这些调整不会花费一分钱。1.升级macOS许多人仍然相信操作系统升级的神话总是会降低计算机的速度。尽管有时它们在旧Mac可能会出现性能问题,但这些更新通常弊大于利。它们包括错误修复,修补程序和改进,这些改进通常会提高Mac的速度。这些操作系统更新文件可能很大。因此,如果硬盘驱动器空间不足,则可能需要先释放硬盘空间。2.释放硬盘空间当您的存储驱动器达到其

    2022年5月26日
    56
  • Android ListView那些事

    Android ListView那些事ListView是我们在开发Android程序时用得比较多的一种widget,通常用来展示多条数据,这里,我对ListView的一些功能点作一个简单介绍。1. Cachecolorhint默认情况下,Android中的View的背景都是透明的,这是一个合理的设计,但是,当渲染到屏幕上时,这会引入许多的计算,因为所有的child的背景是透明的,这就意味着当ListView绘制它的chil

    2022年7月22日
    12

发表回复

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

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