ROS学习(17):定位和地图绘制(1)

news2024/10/7 8:24:25

目录

0.前言

1.定位和建图

1.里程计(Odometry)

2.扫描匹配(Scan Matching)

3.结尾


0.前言

好久不见各位,前段时间忙着考试(6级和一些专业课)和摆烂断更了近30天,现在哥们回来更新了。前面讲了一大堆ROS和一些机器人理论知识,而这次我们将进入到SLAM(前面在小大小闹,现在正题开始)。

1.定位和建图

·确认机器人相对环境的状态(位姿——位置和姿态)。

·定位可以以全局框架来进行,也可以以相对一个任意起点来进行。

·定位是Slam的关键组成。

简单介绍一下经典Slam架构的主要5个部分:

1)传感器数据:指机器人中里程计、激光雷达、双目相机等传感器信息的读取。(下文的里程计里也有提及)

2)前端匹配:主要任务为对特征进行处理,估计相邻地图间的相对位姿,得到局部地图。

3)后端优化(Optimization):后端接收不同时刻前端测量的相对位姿,和回环检测的信息,对其进行优化,得到全局一致的轨迹和地图。

4)回环检测(Loop Closing):回环检测判断机器人是否曾经到达过该位姿,检测到回环则将信息传递给后端进行处理。

5)建图(Mapping):根据估计的轨迹来建立对应的地图。

同样也可以参看谷歌的SLAM算法Cartographer的结构:

1.里程计(Odometry)

里程计:从一个姿态开始,结合运动控制和测量来估计当前姿态。(传感器数据中的一种)

通常我们会使用一个速度控制器、轮式编码器、IMU等设备来动态集成可用的信息。

速度控制器理解成为加速度配比器被我认为是更优的理解方式,因为现实中速度并不可能瞬间获取到,而是经由加速度和时间的累积等来,同理的位移也是是由速度和时间的累积得来:

我们都希望一切的数据精准无误,但受限于上图的开环结构和现实中器件始终无法100%精准运行的限制导致上面的每一个环节都有可能被加入噪声(noise)干扰:

实际表现便是我们希望机器人位移3m但实际上却位移了3.1m。受限于开环控制没有反馈机制来对误差进行矫正,所以一旦噪声出现将会随着时间不断累积——表现为第二次位移位移了3.2m误差就来到了0.3m。

依旧是这张图,当噪声在加速度环节就产生了,那随着加速度和时间的不断积分变换下去,在子环节都将产生噪声累积,且噪声累积是几何关系的:

一旦噪声产生且不断累积,机器人的位置的不确定性就会不断增加,当时间无穷时,机器人就完全无法确认位置了。回归到本章的重点定位和建图,当机器人本体无法精准定位时,机器人的建图也就失去了精确性,设想实际地图的长度为6m但因为定位的噪声就导致了计算得到了5.7m或者6.3m。为了解决这种情况就出现了以后我们会讲到的回环检测。

2.扫描匹配(Scan Matching)

OK,获取到了传感器的可用数据后需要需要进行前端匹配,而扫描匹配自然就是其中一种方式。(其实扫描匹配和视觉上经常拼接是一样的,只是使用了专业名词。)

这里推荐查看:An ICP variant using a point-to-line metric这篇论文,是有关迭代最近点算法的。在ROS里面就是点云了。

·扫描匹配:跨时间收集的范围测量定位方式,扫描匹配。

在定位当中,我们需要参考世界框架来确定自己的位置,而扫描匹配大多就是使用激光雷达SLAM算法的关键模块。而在使用rgb和depth camera(rgb相机和深度相机)时又将会深度探讨最近点算法迭代的概念和一些实现机理。

扩展:刚巧的是,最近我在游玩鸣潮是经常受困于其索敌系统,于是打算在B站上看一下大佬们对这方面的解释,当我渐渐观看后巧妙的发现原来游戏的索敌系统竟和扫描匹配的思想极为类似。附上视频链接:我决定自己做一套索敌系统_单机游戏热门视频 (bilibili.com)

谷歌的slam算法Cartographer当中扫描匹配是一个相当重要的模块,扫描匹配在本地进行运作使地图本地的一致性。

3.结尾

OK,因为知识量确实很大就先到这里了,下一篇文章我们来重点扩展讲解扫描匹配,现在已经正式步入到了SLAM的领域,对于是自学的我来说也需要一点时间来思考如何才能将这些内容整理好、讲述出来。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【移动应用开发期末复习】第五/六章

系列文章 第一章——Android平台概述 第一章例题 第二章——Android开发环境 第二章例题 第三章 第三章例题 第四章 系列文章界面布局设计线性布局表格布局帧布局相对布局约束布局控制视图界面的其他方法代码控制视图界面数据存储与共享首选项信息数据文件SQLite数据库Content…

【Linux】锁|死锁|生产者消费者模型

🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ ​ 访问互斥 …

VOC格式转YOLO格式,xml文件转txt文件简单通用代码

目录 前言 思路介绍 代码 完整代码 拓展代码 前言 很多人在进行目标检测训练时习惯将得到的数据标注为XML文件的VOC格式,或者在网上获取的数据集被标注为XML文件,但是不同的标注工具进行的标注会产生不同的标注xml文件,这里我写了一种通用…

Ruby langchainrb gem and custom configuration for the model setup

题意:Ruby 的 langchainrb gem 以及针对模型设置的自定义配置 问题背景: I am working in a prototype using the gem langchainrb. I am using the module assistant module to implemente a basic RAG architecture. 我正在使用 langchainrb 这个 ge…

初识Java(二)

初识Java的main方法 1.1 main方法示例 public class world {public static void main(String[] args) {System.out.println("hello,world!");}}通过上述代码,我们可以看到一个完整的Java程序的结构,Java程序的结构由如下三个部分组成&#x…

标签接口开发(富含完整CRUD开发流程)

文章目录 1.easyCode生成CRUD1.生成代码2.查看代码3.调整代码1.SubjectLabelDao.xml发现生成的select语句不带逗号!!!1.解决方法:2.entity.java.vm3.dao.java.vm4.Mapper.xml.vm 2.重新生成代码3.SubjectLabelDao.java 删除Pageab…

11-Django项目--Ajax请求二

目录 模版: demo_list.html perform_list.html 数据库操作: 路由: 视图函数: Ajax_data.py perform.py 模版: demo_list.html {% extends "index/index.html" %} {% load static %} # 未实现修改,删除操作{% block content %}<div class"container…

nacos在k8s上的集群安装实践

目录 概述实践nfs安装使用 k8s持久化nacos安装创建角色部署数据库执行数据库初始化语句部署nacos ingress效果展示 结束 概述 本文主要对 nacos 在k8s上的集群安装 进行说明与实践。主要版本信息&#xff0c;k8s: 1.27.x&#xff0c;nacos: 2.0.3。运行环境为 centos 7.x。 实…

江协科技51单片机学习- p19 串口通信

前言&#xff1a; 本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记&#xff0c;在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。 引用&#xff1a; 51单片机入门教程-2…

力扣:59. 螺旋矩阵 II(Java,模拟)

目录 题目描述示例 1&#xff1a;代码实现 题目描述 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5…

node mySql 实现数据的导入导出,以及导入批量插入的sql语句

node 实现导出, 在导出excel中包含图片&#xff08;附件&#xff09; node 实现导出, 在导出excel中包含图片&#xff08;附件&#xff09;-CSDN博客https://blog.csdn.net/snows_l/article/details/139999392?spm1001.2014.3001.5502 一、效果 如图&#xff1a; 二、导入 …

此消彼长之间,国货品牌如何“进化”?

2024年&#xff0c;国内运动鞋服行业各品牌的股价集体回暖。年初至今&#xff08;1月2日至6月26日&#xff09;&#xff0c;港股的四大运动品牌中&#xff0c;361度涨幅达30.55%&#xff0c;特步上涨19.1%&#xff0c;安踏上涨7.75%&#xff0c;而李宁与美股市场的耐克组成了“…

【ARM】内存属性Memory Attributes (MemAttr)

目录 1. EWA 2. Device 3. Cacheable 4. Allocate 5. 内存属性的传播 6. 事务属性组合 7. Memory Type 内存属性Memory Attributes (MemAttr) 包含Early Write Acknowledgment (EWA), Device, Cacheable, 以及Allocate。 1. EWA EWA&#xff0c;Early Write Acknowledg…

Java进阶-Lambda

Java进阶-Lambda 前言Lambda表达式什么是Lambda表达式初识Lambda表达式Lambda表达式的简单使用Lambda表达式格式分析与传统接口方法实现的比较 理解Lambda表达式函数式编程非纯函数实例纯函数示例函数式编程在Lambda表达式中的体现 闭包闭包与Lambda表达式的示例 类型推导-匿名…

裸机与操做系统区别(RTOS)

声明&#xff1a;该系列笔记是参考韦东山老师的视频&#xff0c;链接放在最后&#xff01;&#xff01;&#xff01; rtos&#xff1a;这种系统只实现了内核功能&#xff0c;比较简单&#xff0c;在嵌入式开发中&#xff0c;某些情况下我们只需要多任务&#xff0c;而不需要文件…

【插件】IDEA这款插件Key Promoter X,爱到无法自拔

文章目录 为什么选择Key Promoter X&#xff1f;1. 提升开发效率2. 友好的学习曲线3. 可定制性强 安装和配置Key Promoter X1. 安装插件2. 配置插件 使用Key Promoter X个人使用体验1. 快捷键记忆2. 定制化功能3. 整体体验提升 总结 &#x1f389;欢迎来到Java学习路线专栏~探索…

Excel中的“点选输入”——次级下拉列表创建

在Excel中&#xff0c;用“数据验证”功能可以设置下拉列表&#xff0c;二级下拉列表需要设置公式。 (笔记模板由python脚本于2024年06月16日 18:36:37创建&#xff0c;本篇笔记适合经常使用Excel处理数据的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;http…

iOS 实现类似抖音滚动效果

效果图 思路 整体上我们使用tableView实现&#xff0c;为了预留内容的缓冲&#xff0c;我们将tableView 的contentinset设置为上面一个屏幕的高度&#xff0c;下面一个屏幕的高度&#xff0c;左右为0&#xff0c;这样保证我们滚动过去的时候 都是准备好的内容 然后就是滑动效果…

创新与责任并重!中国星坤连接器的可持续发展战略!

在当今全球化的商业环境中&#xff0c;企业的社会责任、技术创新和产品质量是企业可持续发展的三大支柱。中国星坤正是这样一家企业&#xff0c;它在电子连接技术领域以其卓越的技术创新、坚定的环保责任和严格的生产品控而著称。本文将深入探讨星坤科技如何通过其FAE技术团队的…

2024年6月29日(星期六)骑行十里箐

2024年6月29日 (星期六&#xff09;骑行十里箐&#xff0c;早8:00到8:30&#xff0c;大观公园门口集合&#xff0c;9:00准时出发【因迟到者&#xff0c;骑行速度快者&#xff0c;可自行追赶偶遇。】 偶遇地点:大观公园门口集合 &#xff0c;家住东&#xff0c;南&#xff0c;北…