有哪些激光雷达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算法?

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

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • docker映射端口命令_docker底层原理

    docker映射端口命令_docker底层原理一、容器为什么要做端口映射查看宿主机的IP信息docker容器的IP信息下面面这一段这就是docker的网络,我们可以看到它的网段是172.17.0.0段的。3:docker0:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdiscnoqueuestateUPgroupdefaultlink/ether02:42:b6:4b:f0:16brdff:ff:ff:ff:ff:ffinet172.17.0

    2022年10月11日
  • xpath定位随机元素之starts-with的用法

    xpath定位随机元素之starts-with的用法

  • ideavim怎么用_idea基本使用教程

    ideavim怎么用_idea基本使用教程ideavim使用分享ideavim使用ideavim介绍ideavim是JetBrains官方开发的模拟vim插件,熟练ideavim的人可以更快的进行操作,大部分操作都可以用键盘来代替。纯vim也能进行更高效的开发,但是一款适合自己深定义的配置,能够让人更加高效。配合ide的智能补全,就一个字爽ideavim的安装idea中自带的插件管理搜索ideavim然后选择安装macos打开idea配置cmd+,windows打开idea配置ctrl+shfit+s

  • pycharm企业版激活码(破解版激活)

    pycharm企业版激活码(破解版激活),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • Qt是什么?Qt简介(非常全面)

    Qt是什么?Qt简介(非常全面)Qt是什么?Qt简介(非常全面)Qt(官方发音[kju:t],音同cute)是一个跨平台的C++开发库,主要用来开发图形用户界面(GraphicalUserInterface,GUI)程序,当然也可以开发不带界面的命令行(CommandUserInterface,CUI)程序。Qt是纯C++开发的,所以学好C++非常有必要,对于不了解C++的读者,我建议先阅读《C语言教程》,再阅读《C++教程》。C++是在C语言的基础上发展起来的,学完C语言就学了C++的一半了。Q

  • littlevgl移植_嵌入式ubuntu系统

    littlevgl移植_嵌入式ubuntu系统总述Littlevgl相比较于安卓、QT,占用资源少、使用简单,所以在linux系统下使用Littlevgl优势也比较明显。移植准备工作源码:lvgl:https://github.com/littlevgl/lvgl驱动:lv_drivers:https://github.com/littlevgl/lv_drivers例子:lv_examples:https://github.com/littlevgl/lv_examples下载慢可以将上面链接先导入到码云上再下载。配置工作源码

发表回复

您的电子邮箱地址不会被公开。

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