gmapping vs cartographer

gmapping vs cartographer

1. gmapping建图

在这里插入图片描述

2. cartographer建图

在这里插入图片描述

3. 两种算法建图结果分析

  • 首先从直观上对比两张地图可以看得出来cartographer构建的地图比较的规范和清晰,(gmapping是在xbot机器人上建的图,当时行走到电梯玻璃门附近时没有继续对方形的回环进行建图)gmapping构建的地图虽然也可以把周围的墙壁、柱子以及障碍物准确的在地图上显示出来,但是整体的效果不如cartographer建的图,地图的边界线明显不如cartographer构建的平直顺滑。

  • gmapping的建图思想是基于PBRF粒子滤波算法,每个粒子都携带一张地图。gmapping可以很好的利用里程计的信息来降低对使用的激光雷达频率的要求。机器人可以通过里程计把编码器的数据根据机器人当前的位姿计算求解出下一个时刻的位姿,然后再将每个粒子的激光传感器数据与建好的地图特征进行对比,选出与地图特征最好的的粒子的位姿作为当前的的位姿,如此反复构建地图。之前在利用xbot机器人对十二层的走廊进行建图时遇到过地图发生旋转错位的情况,即随着建图的进行,之前构建完成的地图会相对正在构建的地图发生旋转偏移。针对出现的这种情况,分析可能造成的原因:

    1、可能是由于里程计计算有误差或者更新频率太低造成的,毕竟gmapping算法对里程计的依赖会很大,构建地图时如果快速移动移动了很可能出现这种偏移错位的情况;

    2、还有就是gmapping本身不具有回环检测的功能,仅依靠粒子的多样性在回环发生后根据正确粒子与错误粒子的权重差距来修正里程计累积的误差,回环越大,粒子耗尽的可能性就越高,地图越难在回环时修正回来。所以规划建图路径时,应先走一个小回环,当回环成功后,可以再多走几圈,消除粒子在这个回环的多样性。自己当时用xbot进行gmapping建图时走的回环较少而且走的回环还大,这也是出现上述问题的一个原因。

  • cartographer是一种基于图优化的slam算法,建图思想是GraphSLAM。使用图优化计算在高建图精度的前提下效率还快,处理数据的方式和滤波的方法不同,它不是在线的纠正位姿,而是把所有数据记下来,最后一次性计算。自己在使用firefly机器人构建地图的时候就观察到这一个过程,构建后的地图会在一段时间后优化的更加清晰,道路边界很明显,这一个过程就相当于先堆积的传感器信息,然后再调整机器人位姿顶点去满足边的约束。cartographer带有闭环检测,可以看到地图右端大的回环可以很准确地检测到,构成的方形回环很规则。cartographer算法相比gmapping,随着地图构建的扩大,内存消耗和计算量都很大,但是建图的效果相当好。

### 回答1: gmappingcartographer都是SLAM算法的实现,用于构建地图和定位机器人。它们的主要区别在于: 1. 算法原理不同:gmapping基于概率滤波器,而cartographer基于优化算法。 2. 实现方式不同:gmapping是基于ROS的包,而cartographer是独立的C++库。 3. 功能不同:gmapping可以实现实时地图构建和机器人定位,而cartographer还支持多机器人协同构建地图和定位。 总的来说,gmapping更适合单机器人的实时地图构建和定位,而cartographer则更适合多机器人协同构建地图和定位。 ### 回答2: gmappingcartographer都是激光雷达SLAM算法,可以实现机器人在未知环境中实时地生成地图。但是gmappingcartographer在算法和应用方面还是有一些不同的。 首先,gmapping是基于粒子滤波器的概率SLAM算法,而cartographer则是使用了Google的Ceres Solver的优化SLAM算法。粒子滤波器可以解决非线性的概率分布情况,但是对稀疏的反应不够灵敏。相比之下,优化SLAM算法更适用于稀疏的情况,并且可以在更短的时间内处理大量的数据。 其次,gmappingcartographer在应用方面也有不同。gmapping适用于小型机器人,如移动机器人和嵌入式设备。而cartographer则专门为大规模机器人和自动驾驶汽车设计,在高速运动和大规模环境下有良好的稳定性和精度,用户可以使用相机和IMU等多传感器数据进行定位和建图。 此外,cartographer在后期优化方面也更加强大,支持局部地图和全局地图之间的一致性优化、多机协作等功能,能够适应更加复杂的环境条件。 最后,gmapping已经有10年的发展历史,算法已经比较稳定并且具有良好的兼容性。而cartographer是一个新的算法库,仍在不断更新和发展,所以还存在一定的不稳定性和兼容性问题。 总的来说,gmappingcartographer虽然在运行机制和应用方面存在一些差异,但是都可以有效的解决机器人SLAM问题,选择哪一个取决于用户的需求以及机器人平台的实际情况。 ### 回答3: gmappingcartographer 都是用于实现机器人自主导航的技术方案,主要是通过建立机器人在环境中的状态来实现位置估计、地图构建和路径规划等功能,但是它们在实现方面存在一些不同。 首先,gmapping 是一种基于激光雷达的 SLAM 技术,通过识别和匹配机器人传感器获取的激光扫描数据和里程计数据,建立机器人在环境中的状态以及地图信息。相较而言,gmapping 需要较为强大的计算和算法优化能力,同时也对机器人硬件的性能和精度要求较高。 而 cartographer 则是一种基于多种传感器的 SLAM 技术,除了激光雷达之外,还支持视觉、IMU、GPS、声纳等多种传感器数据的融合。相对于 gmappingcartographer 可以更加精确和快速地进行机器人位置和地图信息的建立和更新,并且对硬件要求相对宽松,可适应更广泛的机器人平台。 此外,cartographer在算法的设计和优化上也更加灵活和可扩展,可以根据实际应用场景的需求进行不同的设置和调整,提高SLAM算法的效率和精度。 综上所述,gmappingcartographer在实现机器人自主导航方面都有其独到的优点和不同之处。需要根据具体的应用场景和机器人平台的特点来进行选择和优化,以达到最佳的自主导航效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值