学习目标:

  • 2Dslam介绍
  • 3Dslam介绍

学习内容:

1.2Dslam介绍

1.slam_gmapping

Gmapping是应用最为广泛的2D slam方法,主要是利用RBPF(Rao-Blackwellized                 ParticleFilters)方法,所以需要了解粒子滤波的方法(利用统计特性描述物理表                              达式下的结果)。Gmapping在RBPF算法上做了两个主要的改进:改进提议分布和选                      择性重采样。

Gmapping可以实时构建室内地图,在构建小场景地图所需的计算量较小且精度                       较高。相比Hector SLAM对激光雷达频率要求低、鲁棒性高(Hector 在机器人快速                         转向时很容易发生错误匹配,建出的地图发生错位,原因主要是优化算法容易陷入                         局部最小值);而相比Cartographer在构建小场景地图时,Gmapping不需要太多的                       粒子并且没有回环检测因此计算量小于Cartographer而精度并没有差太多。

随着场景增大所需的粒子增加,因为每个粒子都携带一幅地图,因此在构建大地图                   时所需内存和计算量都会增加。因此不适合构建大场景地图。并且没有回环检测,因此                   在回环闭合时可能会造成地图错位,虽然增加粒子数目可以使地图闭合但是以增加计算                   量和内存为代价。

所以Gmapping不能像cartographer那样构建大的地图,虽然论文生成几万平米的                     地图,但实际我们使用中建的地图没有上万平米时就会发生错误。

优点:在长廊及低特征场景中建图效果好;

缺点:依赖里程计(odometry),无法适用无人机及地面小车不平坦区域;无回                        环;

下载链接:slam_gmapping - ROS Wiki

2.Hector slam

Hector slam对传感器的要求比较高,它主要是利用高斯牛顿方法来解决scan-                          matching的问题。

Hector slam无需使用里程计,所以在不平坦区域实现建图的空中无人机及地面小                    车具有运用的可行性,利用已经获得的地图对激光束点阵进行优化,估计激光点在地图                  的表示,和占据网络的概率。获得激光点集映射到已有地图的刚体变换,为避免局部最                  小而非全局最优出现,地图使用多分辨率。

需具备高更新频率且测量噪音小的激光扫描仪,所以,在制图过程中,robot的速                    度要控制在较低的情况下才会有比较理想的建图效果,这也是它没有回环的一个后遗                      症。另外在里程计数据比较精确的情况下无法有效利用里程计信息。

优点:不需要使用里程计,所以使得空中无人机及地面小车在不平坦区域建图存在                  运用的可行性;利用已经获得的地图对激光束点阵进行优化, 估计激光点在地图的表示,                    和占据网格的概率;利用高斯牛顿方法解决scan-matching 问题,获得激光点集映射到                    已有地图的刚体变换;为避免局部最小而非全局最优,使用多分辨率地图;导航中的状                  态估计加入惯性测量系统(IMU),利用EKF滤波;

缺点:需要雷达(LRS)的更新频率较高,测量噪声小。所以在制图过程中,需要                 robot速度控制在比较低的情况下,建图效果才会比较理想,这也是它没有回环(loop                     close)的一个后遗症;且在里程计数据比较精确的时候,无法有效利用里程计信息。

实验表明:在大地图,低特征(distinctive landmarks)场景中,hector的建图误差                 高于gmapping。这是由于hector过分依赖scan-match。特别是在长廊问题中,误差更加                 明显。

补充:hector_slam通过最小二乘法匹配扫描点,且依赖高精度的激光雷达数据,                   因此扫描角很小且噪声较大的Kinect是不行的,匹配时会陷入局部点,地图比较混乱。

下载链接:https://github.com/tu-darmstadt-ros-pkg/hector_slam

3.karto slam

KartoSLAM是基于图优化的方法,用高度优化和非迭代 cholesky矩阵进行稀疏系                    统解耦作为解,图优化方法利用图的均值表示地图,每个节点表示机器人轨迹的一个位                  置点和传感器测量数据集,箭头的指向的连接表示连续机器人位置点的运动,每个新节                  点加入,地图就会依据空间中的节点箭头的约束进行计算更新.

KartoSLAM的ROS版本,其中采用的稀疏点调整(the Spare Pose                                          Adjustment(SPA))与扫描匹配和闭环检测相关。landmark越多,内存需求越大,然而图                 优化方式相比其他方法在大环境下制图优势更大,在某些情况下KartoSLAM更有效,因为                 他仅包含点的图(robot pose),求得位置后再求map。

下载链接:GitHub - ros-perception/slam_karto: ROS Wrapper and Node for OpenKarto

4.lago slam

LagoSLAM是线性近似图优化,不需要初始假设,优化器的方法可以有三种选择                      Tree-based netORK Optimizer(TORO), g2o,LAGO。

基本的图优化slam的方法就是利用最小化非线性非凸代价函数,每次迭代,解决局                 部凸近似的初始问题来更新图配置,过程迭代一定次数直到局部最小代价函数达到, (假                 设起始点经过多次迭代使得局部代价函数最小)。

5.core slam

为了简单和容易理解最小化性能损失的一种slam算法,将算法简化为距离计算与地                  图更新的两个过程,第一步,每次扫描输入,基于简单的粒子滤波算法计算距离,粒子                  滤波的匹配器用于激光与地图的匹配,每个滤波器粒子代表机器人可能的位置和相应的                  概率权重,这些都依赖于之前的迭代计算. 选择好最好的假设分布,即低权重粒子消                        失,新粒子生成,在更新步骤,扫描得到的线加入地图中,当障碍出现时,围绕障碍                      点绘制调整点集,而非仅一个孤立点。

通过在大小仿真环境、实际环境以及CPU消耗的情况下进行算法比较,发现                            KartoSLAM 与gmapping优势更大。

下载链接:https://github.com/WestTeam/CoreSLAM

6.cartographer

cartographer是通过闭环检测来消除构图中产生的累计误差。用于闭环检测的基本                  单元是submap,一个submap由一定数量的laser scan组成,将一个laser scan插入到                      其对应的submap时,会基于submap已有的laser scan及其传感器数据估计其在                              该submap中的最佳位置。然而随着时间推移,越来越多的submap被创建后,submap                    的累计误差会越来越大,因此需要通过闭环检测适当的优化这些submap的位姿进而消                    除这些累计误差,这就将问题转化为一个位姿优化问题。

当一个submap的构建完成时,也就不会有新的laser scan插入到submap中,该                      submap就会加入到闭环检测中,闭环检测会考虑所有的已完成创建的submap,当一个                  新的submap加入到地图中时,如果该laser scan的估计位姿与地图中某个submap中的                    某个laser scan的位姿比较接近的话,那么通过某种scan match策略就可以找到该闭                        环。cartographer中的scan match策略通过在新加入地图中的laser scan的估计位姿附近                  取一个窗口,进而在该窗口内寻找该laser scan的一个可能匹配,如果找到哟个足够好                    的匹配,则将该匹配的闭环约束加入到位姿优化的问题中。

优点:累计误差较低,能天然的输出协方差矩阵,后端优化的输入项。成本较低的                  雷达也能跑出不错的效果。
                缺点:CPU性能要求教高。

下载链接:https://github.com/cartographer-project/cartographer

2.3D激光slam

1.loam

LOAM 实现 了 一种实时激光里程计并建图的算法,使用的硬件是一个三维空间中运                  动的两轴单线激光雷达.

两轴单线激光雷达,就是在水平方向和垂直方向的单线雷达在两个方向不断变换形                    成点云,其中每个点的时间戳则不同.
                现在主流用的velodyne 的16线\32线的则是 在一个垂直方向上有 16\32个点,它们有相同                  的时间戳,在水平方向时间戳则是递增的.这个算法同样可以用于16线的lidar

实现功能的难点:
                这个问题困难的原因是由于点云不是相同时间获得的,并且运动畸变会导致点云的位置出                  现错误.这种错误也会造成匹配时的问题,也就造成了里程计信息估计的错误
                目前一致性比较好的3d地图都是通过离线的方式获得的.通常还会通过回环检测来消除累                  计误差.回环检测目前是 VSLAM和LSLAM中,消除累计误差比较好的手段.因为里程计肯                    定会有累计误差的

LOAM的优点:
                LOAM方法实现了低的漂移,并且计算的复杂度低,实时性很好.并且不需要高精度的lidar                    和惯导.

2.A-LOAM

A-LOAM是香港科技大学、华为天才少年秦通博士对张绩的LOAM框架进行强化的                    一个激光SLAM框架。作为学习激光SLAM的入门框架,A-LOAM的代码可读性和框架思                 路都值得激光SLAM初学者仔细研读。这个框架使⽤Eigen以及Ceres-Solver对原始                         LOAM进⾏重构,在保证算法原理不变的前提下,对代码框架进⾏优化,使得代码变得                  ⼗分简洁,更加容易被读懂。

                        下载链接:GitHub - HKUST-Aerial-Robotics/A-LOAM: Advanced implementation of LOAM

3.LeGO-LOAM

LeGO-LOAM全称为:Lightweight and Groud-Optimized Lidar Odometry and                           Mapping on Variable Terrain,从标题可以看出 LeGO-LOAM 为应对可变地面进行了地                   面优化,同时保证了轻量级。

LeGO-LOAM是专门为地面车辆设计的SLAM算法,要求在安装的时候Lidar能以                       水平方式安装在车辆上;如果是倾斜安装的话,也要进行位姿转换到车辆上。而LOAM                   对Lidar的安装方式没有要求,即使手持都没有关系。
                        下载链接:GitHub - RobustFieldAutonomyLab/LeGO-LOAM: LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain

        

        4.Lio-mapping

在利用3D LiDAR进行SLAM计算时,有时会遇到一些问题,例如两帧之间的运动较                   为剧烈(大转角)可能会导致点云配准算法失效,在某些场景如长廊场景下有效测量点云                   较少使运动估计精度下降等,这些现象影响了SLAM算法的鲁棒性。而IMU(Inertial                           Measurement Unit)作为一种惯性测量单元,可以精确地测量载体的三轴加速度以及三                     轴角速度,在上述的场景中(大转角,长廊环境)可以为LiDAR提供额外的先验信息,从                     而增强LiDAR算法的鲁棒性,因此LiDAR-IMU fusioin成为一种近年来备受关注的SLAM                   方法。

LIO-Mapping借鉴LOAM和VINS-Mono的思想进行的一个联合状态估计问题。工程                   层面和VINS-Mono一样,只不过前端视觉部分换成了lidar的前端进行特征关联和                            odometry的位姿估计。其主要分为两个部分:tightly coupled lidar-IMU odometry与the                    rotation constrained refinement

下载链接:GitHub - hyye/lio-mapping: Implementation of Tightly Coupled 3D Lidar Inertial Odometry and Mapping (LIO-mapping)

5.hdl_graph_slam

                        hdl_graph_slam是由日本风桥科技大学的Kenji Koide在github上开源的六自由度                  三维激光SLAM算法。主要由激光里程计、回环检测以及后端图优化构成,同时融合了                    IMU、GPS以及地面检测的信息作为图的额外约束。

下载链接:GitHub - koide3/hdl_graph_slam: 3D LIDAR-based Graph SLAM

6.BLAM

仅用激光的SLAM算法,前端使用GICP,后端使用GTSAM,效果还不错,回环速                   度快。

下载链接:GitHub - erik-nelson/blam

7.SegMap

利用3D CNN语意信息的3D激光SLAM框架,在某些场景比传统SLAM更具有优势。

下载链接:GitHub - ethz-asl/segmap: A map representation based on 3D segments

8.SuMa

使用Surfel地图去实现前端里程计和闭环检测,此前Surfel地图曾被用在RGBD-                          SLAM中,第一次见到被用在激光SLAM中,很值得大家去了解学习。

下载链接:https://github.com/jbehley/SuMa

9.Suma++

在SuMa基础上,利用RangeNet++过滤动态信息,提升定位建图精度。

下载链接:GitHub - PRBonn/semantic_suma: SuMa++: Efficient LiDAR-based Semantic SLAM (Chen et al IROS 2019)

开源的2D/3Dslam介绍相关推荐

  1. OpenGL教程 用2D图形介绍OpenGL

    OpenGL教程 用2D图形介绍OpenGL 1.设置OpenGL 要设置OpenGL,取决于您的编程平台,请阅读: 如何在C / C ++中编写OpenGL程序. 如何在Java中编写OpenGL程 ...

  2. 开源中文切词工具介绍

    开源中文分词工具介绍 这里介绍常用的开源中文分词工具,大部分是java实现.如果是java生产环境,建议使用ansj.word或HanNlp. Bakeoff是一个国际中文处理比赛,有多个语料,所以每 ...

  3. node python做游戏服务哪个适合做服务端_当前的几种开源游戏服务端介绍

    当前的几种开源游戏服务端介绍 pomelo Pomelo 是基于 Node.js 的高性能.分布式游戏服务器框架.它包括基础的开发框架和相关的扩展组件(库和工具包),可以帮助你省去游戏开发枯燥中的重复 ...

  4. 简账(开源记账软件)-功能介绍

    文章目录 简账(开源记账软件)-功能介绍 前言 一.主要技术栈简介 二.主要功能 三.项目难点 四.总结 简账(开源记账软件)-功能介绍 前言 由于自己有记账的需求,在尝试使用过市面上的记账软件后,发 ...

  5. FPGA开源网站和论坛介绍

    学习FPGA,找不到资料?-FPGA开源网站和论坛介绍 碎碎思 目录 学习FPGA,找不到资料?-FPGA开源网站和论坛介绍 1.25个FPGA开源网站 1.1 http://OPENCORES.OR ...

  6. AI Studio 飞桨 零基础入门深度学习笔记4-飞桨开源深度学习平台介绍

    AI Studio 飞桨 零基础入门深度学习笔记4-飞桨开源深度学习平台介绍 深度学习框架 深度学习框架优势 深度学习框架设计思路 飞桨开源深度学习平台 飞桨开源深度学习平台全景 框架和全流程工具 模 ...

  7. COSCon21 开源文化 (GL) 论坛介绍

    " 点击蓝字 / 关注我们 " | 作者.编辑:袁睿斌 | 设计:朱亿钦.宋传琪 第六届中国开源年会 (COSCon'21) 将于 10月30-31日 由开源社举办. 本次年会重新 ...

  8. 600多个iOS开源项目分类及介绍

    600多个iOS开源项目分类及介绍 详情见:http://github.ibireme.com/github/list/ios/

  9. 条形码/二维码之开源利器ZXing图文介绍

    全文目录: 基本介绍 二维码(比如:QRCode)的编码和解码演示 条形码(比如:EAN-13)的编码和解码演示 [一]. 基本介绍 : 1-1. ZXing是一个开源Java类库用于解析多种格式的条 ...

最新文章

  1. SAP CRM and C4C PDF print
  2. switch芯片和phy芯片的区别_感应式芯片卡CPU卡的FM1208-9和FM1208-10有什么区别,你知道吗?...
  3. java共享内存_Java共享内存
  4. 学习笔记5-二层冗余链路
  5. 机器人仿真软件介绍(V-REP,ROS等等)
  6. CAD图纸一键共享,永久轻松办公!
  7. 分享一个十二色相环取色RGB颜色值与十六进制色码转换工具
  8. matlab数字转换罗马数字,罗马数字(1到1000) 1到1000的叠加是多少
  9. 解决以太网IPv4无网络访问权限
  10. 机器人视觉硬件方案设计对比
  11. 基于PHP+MYSQL的成绩查询系统(含源码)
  12. 【Leetcode_SQL】1179.重新格式化部门表
  13. 遗传算法(包含选择、交叉、变异) MATLAB完整代码 中文注释详解
  14. 自然语言处理--词向量
  15. parameterType的用法
  16. 长续航高性价比,轻松畅享好音质 ——索尼长续航颈挂式无线耳机WI-C100活力发布
  17. 人生启示录效应篇之破窗效应:及时矫正和补救正在发生的问题
  18. CVPR 2022 | 浙大提出Oriented RepPoints:旋转目标检测网络
  19. 红米9A android版本,红米9A配置参数-参数详情
  20. java注册码生成,制作绿色软件

热门文章

  1. 基于C#制作一个鼠标连点器
  2. 离散数学_数理逻辑篇(总结)
  3. vue 导航守卫(一) 之 全局前置守卫全局后置守卫
  4. 爱奇艺八年:“好人”龚宇和“宽容先生”李彦宏
  5. 律理(五)----关于“单句中平仄的宽严关系”
  6. linux var log目录作用,Linux系统/var/log/journal/垃圾日志清理 - 米扑博客
  7. Java调用发微博API_编写调用新版浪微博API的Java程序来发送微博
  8. 【自然语言处理】【chatGPT系列】大语言模型可以自我改进
  9. Google's BBR TCP拥塞控制算法的四个变速引擎
  10. 如何提升领导力,管理好一个团队