ROS-2Dslam算法比较

2D激光slam四种算法建图效果对比 2d激光slam四种算法建图比较 阅读详情

ros系统上常用的2d建图算法有四种,它们分别是gmapping、谷歌cartographer、hector、Karto。

Gmapping算法

目前激光2Dslam用得最广的方法,gmapping是基于RBPF粒子滤波的算法,优点是定位准确,但需要完整的硬件平台,需要激光数据和里程计数据。主要框架如下:

优点:是在构建小场景地图所需的计算量较小且精度较高,相比Cartographer在构建小场景地图时,Gmapping不需要太多的粒子并且没有回环检测因此计算量小于Cartographer而精度并没有差太多。并且CPU资源消耗比Cartographer小。在长廊及低特征场景中建图效果好。

缺点:随着场景增大所需的粒子增加,因为每个粒子都携带一幅地图,因此在构建大地图时所需内存和计算量都会增加。因此不适合构建大场景地图。并且没有回环检测,因此在回环闭合时可能会造成地图错位,虽然增加粒子数目可以使地图闭合但是以增加计算量和内存为代价。依赖里程计(odometry),无法适用无人机及地面小车不平坦区域;无回环。

问题的关键在计算量,gmapping为单线程程序,多核cpu不起作用。计算量与地图分辨率、粒子数成正比,分辨率越大、粒子数越多,cpu占用率越高。cpu的高负荷导致一次数据处理的时间变长,从而导致部分数据得不到处理。cpu负荷越高,遗漏的数据越多,造成状态估计的不连续。这就是为什么随着粒子数的增加或地图分辨率的提高,会出现地图扭曲、未知区域变大、直接拼图失败等现象。
 

cartographer算法

cartographer是google推出的一套基于图优化的SLAM算法,cartographer采取的是google的ceres构建problem优化,采取的是4线程后端优化。

Cartographer主要理论是通过闭环检测来消除构图过程中产生的累积误差。用于闭环检测的基本单元是submap。一个submap是由一定数量的laser scan构成。将一个laser scan插入其对应的submap时,会基于submap已有的laser scan及其它传感器数据估计其在该submap中的最佳位置。submap的创建在短时间内的误差累积被认为是足够小的。然而随着时间推移,越来越多的submap被创建后,submap间的误差累积则会越来越大。

因此需要通过闭环检测适当的优化这些submap的位姿进而消除这些累积误差,这就将问题转化成一个位姿优化问题。当一个submap的构建完成时,也就是不会再有新的laser scan插入到该submap时,该submap就会加入到闭环检测中。闭环检测会考虑所有的已完成创建的submap。当一个新的laser scan加入到地图中时,如果该laser scan的估计位姿与地图中某个submap的某个laser scan的位姿比较接近的话,那么通过某种 scan match策略就会找到该闭环。

Cartographer中的scan match策略通过在新加入地图的laser scan的估计位姿附近取一个窗口,进而在该窗口内寻找该laser scan的一个可能的匹配,如果找到了一个足够好的匹配,则会将该匹配的闭环约束加入到位姿优化问题中。Cartographer的重点内容就是融合多传感器数据的局部submap创建以及用于闭环检测的scan match策略的实现。

优点:有回环检测,不会出现地图错位。累计误差低,能天然的输出协方差矩阵,后端优化的输入项。成本较低的雷达也能跑出不错的效果。没有imu和odom,只有雷达也可以建图,还可以手持建图。可以建图上万平米。

缺点:只有5cm的地图分辨率。内存占用较大,算法体量较大,需要花上很久的时间才能稍微看得懂。

hector算法

HectorSLAM是一种结合了鲁棒性较好的扫描匹方法2D SLAM方法和使用惯性传感系统的导航技术。传感器的要求:高更新频率小测量噪声的激光扫描仪。不需要里程计,使空中无人机与地面小车在不平坦区域运行存在运用的可能性。作者利用现代激光雷达的高更新率和低距离测量噪声,通过扫描匹配实时地对机器人运动进行估计。所以当只有低更新率的激光传感器时,即便测距估计很精确,对该系统都会出现一定的问题。

优点:不需要里程计数据,可以行驶不平坦路面。

缺点:对激光硬件要求比较高,没有回环检测,机器人行驶速度过快会导致建图失败。

karto算法

这里写图片描述

 

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

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

优点:在大环境下,优势大。

缺点:需要内存空间更大。

参考资料:

http://keaa.net/ros-gmapping-map.html#:~:text=%E5%9C%B0%E5%9B%BE%E6%98%AF%E5%AF%BC%E8%88%AA%E5%BF%85%E8%A6%81%E7%9A%84%E8%8A%82%E7%82%B9%EF%BC%8C%E5%9C%A8ROS%E4%B8%8A%E9%9D%A2%E5%B8%B8%E8%A7%81%E6%9C%89%E5%9B%9B%E7%A7%8D%E4%BA%8C%E7%BB%B4SLAM%E5%BB%BA%E5%9B%BE%E6%96%B9%E5%BC%8F%EF%BC%8C%E5%AE%83%E4%BB%AC%E5%88%86%E5%88%AB%E6%98%AFgmapping%E3%80%81%E8%B0%B7%E6%AD%8Ccartographer%E3%80%81hector%E3%80%81Karto%EF%BC%8C%E6%AF%8F%E7%A7%8D%E7%AE%97%E6%B3%95%E9%83%BD%E6%9C%89%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BC%98%E7%BC%BA%E7%82%B9%EF%BC%8C,%E6%84%9F%E5%85%B4%E8%B6%A3%E5%8F%AF%E4%BB%A5%E7%9C%8B%E7%9C%8B%E8%BF%99%E9%87%8C%E7%9A%84SLAM%E7%AE%97%E6%B3%95%E5%AF%B9%E6%AF%94%20%E3%80%82

https://blog.youkuaiyun.com/wangguchao/article/details/85328459

https://www.cnblogs.com/kuangxionghui/p/8494566.html

https://blog.youkuaiyun.com/h1475457833/article/details/118439886

https://www.cnblogs.com/li-yao7758258/p/8213578.html

https://www.slamtec.com/cn/News/Detail/72#:~:text=%E7%9B%B8%E6%AF%94Hector,SLAM%E5%AF%B9%E6%BF%80%E5%85%89%E9%9B%B7%E8%BE%BE%E9%A2%91%E7%8E%87%E8%A6%81%E6%B1%82%E4%BD%8E%E3%80%81%E9%B2%81%E6%A3%92%E6%80%A7%E9%AB%98%EF%BC%88Hector%20%E5%9C%A8%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%BF%AB%E9%80%9F%E8%BD%AC%E5%90%91%E6%97%B6%E5%BE%88%E5%AE%B9%E6%98%93%E5%8F%91%E7%94%9F%E9%94%99%E8%AF%AF%E5%8C%B9%E9%85%8D%EF%BC%8C%E5%BB%BA%E5%87%BA%E7%9A%84%E5%9C%B0%E5%9B%BE%E5%8F%91%E7%94%9F%E9%94%99%E4%BD%8D%EF%BC%8C%E5%8E%9F%E5%9B%A0%E4%B8%BB%E8%A6%81%E6%98%AF%E4%BC%98%E5%8C%96%E7%AE%97%E6%B3%95%E5%AE%B9%E6%98%93%E9%99%B7%E5%85%A5%E5%B1%80%E9%83%A8%E6%9C%80%E5%B0%8F%E5%80%BC%EF%BC%89%EF%BC%9B%E8%80%8C%E7%9B%B8%E6%AF%94Cartographer%E5%9C%A8%E6%9E%84%E5%BB%BA%E5%B0%8F%E5%9C%BA%E6%99%AF%E5%9C%B0%E5%9B%BE%E6%97%B6%EF%BC%8CGmapping%E4%B8%8D%E9%9C%80%E8%A6%81%E5%A4%AA%E5%A4%9A%E7%9A%84%E7%B2%92%E5%AD%90%E5%B9%B6%E4%B8%94%E6%B2%A1%E6%9C%89%E5%9B%9E%E7%8E%AF%E6%A3%80%E6%B5%8B%E5%9B%A0%E6%AD%A4%E8%AE%A1%E7%AE%97%E9%87%8F%E5%B0%8F%E4%BA%8ECartographer%E8%80%8C%E7%B2%BE%E5%BA%A6%E5%B9%B6%E6%B2%A1%E6%9C%89%E5%B7%AE%E5%A4%AA%E5%A4%9A%E3%80%82https://blog.youkuaiyun.com/qq_24893115/article/details/52965410

【ROS2】机器人导航仿真 主要介绍导航的完整性实现,旨在掌握机器人导航的基本流程,该章涉及的主要内容如下:SLAM建图(选用较为常见的gmapping)、地图服务(可以保存和重现地图)、机器人定位、路径规划。上述流程介绍完毕,还会对功能进一步集成实现探索式的SLAM建图。 阅读详情

相关推荐

ROS-3DSLAM(1):综述

2021@SDUSC ROS-3DSLAM(1):综述 2021年9月27日星期一——2021年9月29日星期三 一、项目简介: Robot operating System (ROS),通常被称为机器人操作系统,是一种弱耦合的分布式进程框架,通过进程间的消息传递和管理来实现硬件抽象和设备控制。 我们的任务是对于这一系统的源代码进行分析。 二、基本知识储备: 一、概念初识(基于乌龟例子的学习) ROS文件系统 创建软件包:catkin和rosmake两种方式 软件包的

m0_49088083的博客 763

SLAM学习--2D激光SLAM--入门学习

一、学习心得记录(不一定对): 1. 激光slam 和视觉slam 实际在实现的时候完全是两码事,可能根本思想差不多,特别是非线性优化方面,但是实现方案差距较大,需要转变思维。 2. 2D激光slam和3D激光slam 的实现方案还是有些区别,3D目前主要用在室外无人车或者送快递机器人等; 2D主要用在室内环境,家用扫地机器人 、工厂货仓环境、室内(建筑物内)移动机器人(送餐,护士送药)等。 3. ROS wiki 和 中文版社区创客智造里面有很多现成的基于ros的软件包,按照教程 自己安装好之后,可

GGY1102的博客 4819

ROS-3DSLAM(17):小结

2021@SDUSC 2021年12月28日 经过这半个学期的学习,我对于SLAM经历了一个从一无所知到逐渐了解的充实的学习过程。 在学习的过程中,在收获关于SLAM、cpp的知识的同时,也得到了自主学习研究相关的经验和技巧。对于问题的解决能力得到了进一步的提升,对于陌生的代码阅读技能也有了一定的长进。 回顾这三个月的学习:我的学习内容可以大致概括如下: 开课到十月一日:对于ros系统的熟悉认识了解 十月份:开始对于LVI-SLAM的分析,主要是对于雷达部分的分析和总结 十一月份:对于视觉部分的分析,分析

m0_49088083的博客 1431

第6章 2D SLAM

为了允许这种部分匹配的情况,我们在多分辨率配准中,只要匹配点数超过所有扫描数据的一定比例(实现当中取了40%),就可以认为地图被匹配上。于是我们自然地想到,只要把当前的扫描数据或者子地图与历史地图配准,再调整各子地图之间的相对位置关系,就可以轻松地消除累计误差。将各点带入上述方程,由于误差的存在,上式并不会严格等于零,那么直线拟合问题可以构造为一个最小二乘问题,目的是求出最优的直线参数,由粗至精,先在小分辨率的似然场中进行一次配准,再把粗配准的结果投影到高分辨率的似然场中,形成由粗至精的匹配过程。

qq_44175983的博客 1587

ROS-3DSLAM(8):视觉部分visual_estimator第二节:initial 2

2021@SDUSC 2021年11月12日星期四——2021年11月13日星期六 一、背景简介: 结束了对于initial_alignment的初步阅读,下一步还要继续对于initial文件夹下的其他文件的分析,毕竟我们的最终目的还是对于函数esitimator中的的processImage()做分析。 这次的计划是针对Initial_ex_rotation和solve_5ph给出分析。 二、Initial_ex_rotation分析: A、功能分析 函数的功能是求解从相机(Camera)坐标系到IM

m0_49088083的博客 2123

ROS-3DSLAM(3):信息流

2021@SDUSC ROS-3DSLAM(3):信息流 2021年10月17日星期一——2021年10月20日星期三 一、背景简介: 对于信息流的分析理解能够有助于我们对于整个项目的下一步研究学习。虽然对于局部代码的阅读可能看不出来这样做的好处,但是毫无疑问这样的分析有助于我们下一步的对于整个系统的代码的解读工作。 考虑到雷达包的阅读工作量的问题,本周我负责的任务即为处理这个信息流的工作,这样也方便和组内的同学们统一阅读进度。 二、学习历程: 因为是对于全局代码的分析,考虑到我的时间和精力的问题,直接阅读

m0_49088083的博客 487

ROS-3DSLAM --开篇:综述

2021SC@SDUSC ROS-3DSLAM --开篇:综述 简略介绍我们项目ROS-3DSLAM的总述,内容和目标。以及展示我们的分析的核心代码,和小组分工。

loyer_kong的博客 2173

ROS-3DSLAM(9):视觉部分visual estimator第三节initial 3

2021@SDUSC 2021年11月14日星期日——2021年11月15日星期一 一、背景简介: 这一次继续分析initial文件夹下的内容,本次针对的是solve_5pts,包括了该文件的头文件和cpp文件。 这里的solve_5pts的意思是利用五点法求本质矩阵,代码则正是对于这一功能的实现。 在进行代码分析之前,有必要先学习了解一下五点法。 在slam 和sfm领域,恢复相机位姿和3D点的坐标是其重要的任务,描述一个场景的3D点在不同相机的图像坐标之间的关系被称为对极几何关系。对极几何关系描述的矩

m0_49088083的博客 2539

使用2DSLAM建图算法汇总

使用Turtlebot2与Rplidar进行2DSLAM建图算法汇总 一、硬件基础 1、Turtlebiit2带有kobuki移动基站; 2、上网本:放置在架子上,使用带有路由器的微机,安装ubuntu16.04系统。 3、停靠站:可选项,用于给turtlebot充电。 4、工作站:使用笔记本电脑,具有体面的图形卡和足够的内存的三维模拟,安装ubuntu16.04系统。 5、路由器:可选项,可用手机热点代替。 6、Rplidar A1/A2激光雷达。 二、软件环境 1、windows10下安装Ubuntu(

qq_42316845的博客 2001

ROS-3DSLAM(4):lidar_odometry包浅析

2021@SDUSC 2021年10月11日星期一——2021年10月14日星期四 一、学习背景: 结束了论文的学习之后,我们下一步的学习目标就是关键的代码了,但是在此之前,我们还仍然需要先把整个项目的信息流分析明白,这样才能有助于我们更好地进行后续的阅读学习代码工作。 结束了信息流的分析之后,我们的第二个工作目标就是对于lidar_odometry包的代码分析。相较于第一个视觉处理的系统而言,这个雷达处理的系统更为简单一些,分析起来也相对较为容易。我们首先分析的目标是较小的三个文件,剩下的那一个较

m0_49088083的博客 1666

ROS-3DSLAM(5):雷达部分交流分析A

2021@SDUSC 2021年10月26日星期二——2021年10月30日星期六 一、计划简介: ​ 通过前几次的学习,我掌握了lvi-sam包的信息流、结构、功能,还着重分析了特征提取featureExtracted的代码。 ​ 这一周,我决定在分析图因子优化包之前,先来学习一下组内其他同学的研究成果,以方便接下来的进一步学习研究,更有效地上手后续地代码。同时,也可以借鉴其他同学们阅读代码的思路和方法,提高自己的知识技能。 ​ 我这一次的学习方式和上一次的信息流分析类似,也是借助博客注解加源代码的

m0_49088083的博客 501

5 ROS2中的SLAM环境建图

全面介绍ROS(Robot Operating System)的使用,包括基础概念、安装配置、编程技巧以及在机器人开发中的实际应用。通过本课程的学习,学生将掌握基于ROS的机器人软件开发能力,并能够利用ROS进行机器人的感知、决策和控制。

weixin_58199582的博客 6749

ROS-3DSLAM(10):视觉部分学习 第四节 代码补习

2021@SDUSC 2021年11月17日星期三——2021年11月19日星期五 一、背景简介: 经过上一周对于代码的阅读,我发现自己在这几个开源库函数和cpp常用的代码技巧方面还存在着问题,对于前置的知识也不甚了解。因此我决定暂停一下阅读的进度,专门结合这些开源函数和代码技巧进行补习。也能趁机提升一下自己的cpp编程水平。 本着实用的原则,学习的范围先暂定在前面三次学习中的代码,库函数包括Eigen和open cv两块。学习的顺序由新到旧,逐步回顾。 二、代码分析及问题解答: 1、initial_ali

m0_49088083的博客 2321

ROS-3DSLAM(12):视觉部分visual estimator第六节:initial5

2021@SDUSC 2021年11月29日星期一——2021年12月2日星期四 附:12月1日typora更新了,新版本要收费,我回退到旧的0.9.8版本之后,发现旧的版本有个致命的bug,会丢失对代码的注释…本来已经读完了代码的,结果下午打开一看注释全没了。 幸好时间不算长,还能挽救。 一、背景简介: 这篇博客分为三部分,第一部分是对于上次的代码分析的补全,结束initial_sfm中最后一部分的问题。 第二部分是对于数学知识的补充,类似于上上一次对于代码的分析一样,这一次是对于数学部分的原理加深理解。

m0_49088083的博客 2607

Ros cartographer 搭载 landmark 保姆级操作上手教程(1)

之前跑的bag中偶然发现在msg的bag包中,有Landmark数据的发布和订阅。Landmark在cartographer中作为定位为避免定位丢失,从而使之增加定位精度,和重定位,看完所有网页上能找到的文章,看后就一个字懵。防止cartographer在长廊中因为激光雷达的射程范围不够导致后期回环中定位失效,以至自己设备的定位乱跳,如果不幸跳入墙体中,则会整个设备则会陷入假死整体上landmark的引用方式,分为两种一种是反光标识工地上的反光柱,另一种则是使用固定的二维码和。

weixin_44025389的博客 3350

slam_gmapping:针对ROS2的Slam Gmapping

SLAM_GMAPPING SLAM(同步本地化和映射)是在构建或更新未知环境的地图时同时跟踪代理在其中的位置的计算问题。 它包含软件包openslam_gmapping和slam_gmapping ,这是OpenSlam Gmapping的ROS2包装器。 该包装器已通过Crystal Clemmys和Dashing Diademata成功测试。 使用slam_gmapping,您可以根据激光和移动机器人收集的数据来创建二维占用栅格图(如建筑物平面图)。 发射: ros2 launch slam_gmapping slam_gmapping.launch.py 节点slam_gmap

「 ROS 」“Gazebo仿真环境中基于环境数据包和RGB-D相机运行ORB-SLAM2功能包”讲解

整个过程分为两个部分,首先安装仿真环境,然后下载并编译ORB-SLAM2算法。 1.安装仿真环境 此安装环境是从github下载的,由中科院软件所孵化的北京中科重德智能科技有限公司提供的机器人仿真环境,配置方法如下: (1)克隆包到工作空间 $ cd ~/catkin_ws/src $ git clone https://github.com/DroidAITech/ROS-Academ...

Robot_Starscream的博客 4944

三相逆变器LCL滤波设计实战:从αβ转换到dq解耦控制的完整建模流程

本文详细解析了三相逆变器LCL滤波设计中的关键步骤,从αβ转换到dq解耦控制的完整建模流程。重点介绍了dq坐标系下的解耦控制策略,通过Simulink仿真验证模型准确性,并提供谐振峰偏移、解耦不彻底等实际问题的解决方案,助力电力电子工程师提升系统稳定性。

weixin_28678151的博客 229
上一篇: linux命令行串口调试工具
下一篇: Linux-C/C++获取时间戳(秒与毫秒)
lysine_
博客等级 码龄5年 41粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值