几种SLAM算法跑出的效果比较

在这里插入图片描述
以下所有的SLAM算法均使用此辆ROS小车跑。

文章目录

  • 1.Gmapping SLAM算法构建地图
  • 2.Hector SLAM算法构建地图
  • 3.Karto SLAM算法构建地图
  • 4.Cartographer SLAM算法构建地图
  • 5.深度摄像头的建图
  • 6.rtab-map(深度双目与激光雷达构建三维建图)
  • 7.ORB-SLAM
  • 8.无奖竞猜


1.Gmapping SLAM算法构建地图

算法简介:

Gmapping是一种基于激光的SLAM算法,它已经集成在ROS中,是移动机器人中使用最多的SLAM算法。这个算法已经由Grisetti等人提出是一种基于Rao-Blackwellized的粒子滤波的SLAM方法。基于粒子滤波的算法用许多加权粒子表示路径的后验概率,每个粒子都给出一个重要性因子。但是,它们通常需要大量的粒子才能获得比较好的的结果,从而增加该算法的的计算复杂性。此外,与PF重采样过程相关的粒子退化耗尽问题也降低了算法的准确性。粒子退化问题包括在重采样阶段从样本集粒子中消除大量的粒子。发生这种情况是因为它们的重要性权重可能变得微不足道。因此,这意味着有一定的小概率时间会消除正确的假设的粒子。为了避免粒子的退化问题,已经开发了自适应重采样技术。作者还提出了一种计算精确分布的方法,不仅考虑机器人平台的运动,还考虑最近的观察。提出了在使用测距运动模型时结合观测值提出建议分布。然而,当一个移动机器人装备一个非常精确的传感器LRF时,可以使用该传感器的模型,因为它可以实现了极高的似然函数。基于此,作者整合了最近的传感器观测zt,并且他们计算高斯分布近似有效地获得下一代粒子分布。

算法效果:
在这里插入图片描述

2.Hector SLAM算法构建地图

算法简介:

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

算法效果:
在这里插入图片描述

3.Karto SLAM算法构建地图

算法简介:

KartoSLAM是基于图优化的方法,用高度优化和非迭代 cholesky矩阵进行稀疏系统解耦作为解.图优化方法利用图的均值表示地图,每个节点表示机器人轨迹的一个位置点和传感器测量数据集,箭头的指向的连接表示连续机器人位置点的运动,每个新节点加入,地图就会依据空间中的节点箭头的约束进 行计算更新.
KartoSLAM的ROS版本,其中采用的稀疏点调整(the Spare Pose Adjustment(SPA))与扫描匹配和闭环检测相关.landmark越多,内存需求越大,然而图优化方式相比其他方法在大环境下制图优势更大.在某些情况下KartoSLAM更有效,因为他仅包含点的图(robot pose),求得位置后再求map.

算法效果:
在这里插入图片描述

4.Cartographer SLAM算法构建地图

算法简介:

cartographer是Google的实时室内建图项目,传感器安装在背包上面,可以生成分辨率为5cm的2D格网地图。获得的每一帧laser scan数据,利用scan match在最佳估计位置处插入子图(submap)中,且 scanmatching只跟当前submap有关。在生成一个submap后,会进行一次局部的回环(loop close),利用分支定位和预先计算的网格,所有submap完成后,会进行全局的回环。

算法效果:
在这里插入图片描述

5.深度摄像头的建图

算法简介:

提取深度图像获得障碍物地图,需要进行三维图像-伪激光图的转换。

在这里插入图片描述

算法效果:
在这里插入图片描述

6.rtab-map(深度双目与激光雷达构建三维建图)

算法简介:

RTAB-Map是具有实时约束的RGB-DSLAM方法,它是一种基于增量基于外观的闭环检测器的RGB-D,基于立体声和激光雷达图的SLAM方法。闭环检测器使用词袋方法来确定新图像来自先前位置或新位置的可能性。当接受循环闭合假设时,新约束将添加到地图的图形中,然后图形优化器将地图中的错误最小化。使用内存管理方法来限制用于闭环检测和图形优化的位置数量,以便始终遵守对大型环境的实时约束。
rtab-map的思想是:假设更频繁的被访问的定位点比其他的定位点更易于形成闭环。这样一个定位点被连续访问的次数就可以用来衡量其易于形成闭环的权重。当需要从WM转移定位点到LTM中时,优先选择具有最低权重的定位点。如果具有最低权重的定位点又有多个时,优先选择被存储时间最长的那一个。

算法效果:
在这里插入图片描述

7.ORB-SLAM

算法简介:

ORB-SLAM 是视觉 SLAM 系统。 它是一个完整的 SLAM 系统,包括视觉里程计、跟踪、回环检测,是一种完全基于稀疏特征点的单目SLAM 系统,同时还有单目、双目、RGBD 相机的接口。 其核心是使用 ORB (Orinted FAST and BRIEF)作为整个视觉 SLAM 中的核心特征。

算法效果:
链接: 自学SLAM(3)—保姆教程教你如何使用摄像头运行ORB-SLAM2

8.无奖竞猜

根据前面的建图,猜我家是几室几厅?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/475003.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SHERlocked93 的 2021 年终总结

我还是和往年一样,总结发的又晚了一点,为什么又发这么晚呢,因为懒 年终总结 疫情之后时间时间过的太快了,不知道是不是只有我这样感觉。 四五月份去兰州玩了下(其实是出差),终于看到了黄土高原&…

JDK8新特性:方法引用

进一步简化Lambda表达式 一、静态方法的引用 格式: 类名::静态方法 使用场景:如果某个Lambda表达式里只是调用一个静态方法,并且前后参数的形式一致,就可以使用静态方法引用。 之前使用Lambda简化: 现在我们创建一…

springboot单体项目快速生成代码

生成的是这些代码:controller,entity,mapper,service,service里面的impl,还有xml import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolk…

【C语言】长篇详解,字符系列篇1-----“混杂”的各种字符类型字符转换和strcpy的使用,模拟实现【图文详解】

欢迎来CILMY23的博客喔,本期系列为【C语言】长篇详解,字符系列篇1-----“混杂”的各种字符函数……,图文讲解各种字符函数,带大家更深刻理解C语言中各种字符函数的应用,感谢观看,支持的可以给个赞哇。 前言…

【Java前端技术栈】ES6-ECMAScript6.0

一、ES6基本介绍 1. ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准, 2015 年 6 月发布。 2. ES6 设计目标:达到 JavaScript 语言可以用来编写复杂的大型程序,成为企业级开发语 言 3. ECMAScript 和 JavaScript 的关系&…

外媒发稿及时查看反馈结果,灵活调整发布模式-大舍传媒

外媒发稿及时查看反馈结果,灵活调整发布模式-大舍传媒 水土不服是国际稿件发币当中经常发生的问题,为确保外媒发稿内容符合市场需求得及时观察反馈结果、调整灵活发布模式,这样即使进入国外市场商家同样能拥有自己的位置,甚至能成…

如何使用HTTP隧道在Linux环境下构建内网穿透解决方案

你是否曾经遇到过这样的尴尬场景:身处内网环境,却想要让外部世界的朋友访问你的某个服务,却发现那堵墙——防火墙,如同一座不可逾越的山峰,挡住了你的去路?别担心,今天我们就来聊聊如何在Linux环…

Swift 5.9 新 @Observable 对象在 SwiftUI 使用中的陷阱与解决

概览 在 Swift 5.9 中,苹果为我们带来了全新的可观察框架 Observation,它是观察者开发模式在 Swift 中的一个全新实现。 除了自身本领过硬以外,Observation 框架和 SwiftUI 搭配起来也能相得益彰,事倍功半。不过 Observable 对象…

JS画布内生成图标,并实现拖拽,连线,刷新

JS有现成的拖拽命令&#xff0c;但是只能实现简单的拖拽功能&#xff0c;下面演示的可以在画布的任意一个地方拖拽&#xff0c;并停留在画布的任意地方。 整个框架代码如下&#xff1a; <html> <head><meta charset"UTF-8"><title>拖拽放置…

uni-app引用子组件中后穿透三方组件css失效

子组件的 scss 代码&#xff0c;这里修改了uView的input相关css 如果单独将代码放到一个页面进行测试可以发现&#xff0c;这里修改 uView 组件样式是没有问题的&#xff0c;如果此时将整体代码封装成组件&#xff0c;进行父组件引用的时候&#xff0c;会发现穿透的样式是没有…

es安装中文分词器 IK

1.下载 https://github.com/medcl/elasticsearch-analysis-ik 这个是官方的下载地址&#xff0c;下载跟自己es版本对应的即可 那么需要下载 7.12.0版本的分词器 2.安装 1.在es的 plugins 的文件夹下先创建一个ik目录 bash cd /home/apps/elasticsearch/plugins/ mkdir ik …

java以及android类加载机制

类加载机制 一、Java类加载机制 java中&#xff0c;每一个类或者接口&#xff0c;在编译后&#xff0c;都会生成一个.class文件。 类加载机制指的是将这些.class文件中的二进制数据读入到内存中并对数据进行校验&#xff0c;解析和初始化。最终&#xff0c;每一个类都会在方…