视觉SLAM第二讲

SLAM分为定位和建图两个问题。

定位问题

定位问题是通过传感器观测数据直接或间接求解位置和姿态。

通常可以分为两类:基于已知地图的定位和基于未知地图的定位。

基于已知地图的定位

利用预先构建的地图,结合传感器数据进行全局定位。SLAM中的全局定位是指在地图参考系下的定位,而全局地图只是在较大范围内完整的环境地图,所以本质上还是局部相对定位。

基于未知地图的定位

传感器分为两类:一种是安装在机器人本体上的,如轮式编码器、IMU、相机、激光传感器等;另一种是安装在环境中的,如导轨、二维码路标、UWB、GPS等。环境中的传感器通常能够直接测量机器人的位置信息,提供简单有效的定位解决方案。然而,由于需要在环境中进行设置,限制了机器人的使用范围。相反,安装在机器人本体上的传感器测量的通常是间接的物理量而不是直接的位置数据,需要通过间接方法推算位置,但其优点是不对环境提出特定要求。

引入SLAM的主要目的如下:

1)建图。在传感器性能良好的环境下,使用SLAM技术可以构建高精度的全局地图。这些构建的地图将为后续的定位、导航等功能提供支持。

2)定位。在视觉SLAM中,通过帧间特征点匹配可以计算出相机的相对变换,对应地推算出机器人的位姿信息。然而,这种计算方法会引入累积误差。利用SLAM构建的全局地图,通过相机采集的环境信息与地图进行匹配,可以实现重定位,从而消除累积误差的影响,获得更加精确的机器人位姿。

3)导航。如果我们建立的地图中包含了可通行区域和不可通行区域的信息,那么可以利用这些信息实现机器人的路径规划和路径跟踪,从而使机器人能够在地图中从起点到达终点,并能够对地图中的静态障碍物进行避障。导航所用地图要求是稠密地图

建图问题

建图问题是利用传感器位姿和观测数据求解被观测物体的位置。

通常可以分为两类:全局建图和局部建图。全局建图涉及在较大范围内生成完整的环境地图,而局部建图则关注于在特定区域内生成详细的地图信息。建图过程中可能需要对环境进行多次扫描和数据融合,以提高地图的精度和一致性。

经典视觉SLAM框架

在这里插入图片描述

整个视觉 SLAM 流程包括以下步骤。

  1. 传感器标定、数据采集。在视觉 SLAM 中主要为相机图像信息的读取和预处理。如果是在机器人中,还可能有码盘、惯性传感器等信息的读取和同步。
  2. 视觉里程计(Visual Odometry,VO)。视觉里程计的任务是估算相邻图像间相机的运动,以及局部地图的样子。VO 又称为前端(Front End)。
  3. 后端优化(Optimization)。后端接收不同时刻视觉里程计测量的相机位姿,对它们进行批量式优化,减轻累积误差,此外接收回环检测的信息,消除累积误差,得到全局一致的轨迹和地图。由于接在 VO 之后,又称为后端(Back End)。
  4. 回环检测(Loop Closing)。回环检测判断机器人是否到达过先前的位置。如果检测到回环,它会把信息提供给后端进行处理。
  5. 建图(Mapping)。它根据估计的轨迹,建立与任务要求对应的地图。

需要注意的是,前端包括后端优化得到的运动信息始终包含累积误差,该累积误差在SLAM中只能通过回环检测或者与预先建立好的具有较高精度的全局地图匹配来消除。

视觉SLAM方案可按照传感器的不同(单目、双目、RGBD、与IMU的组合等)、前端方法的不同(主要分为直接法和特征点法)、后端优化方案的不同(滤波或者非线性优化)、生成地图形式的不同(稀疏地图、稠密地图等)具有不同的划分。

SLAM 问题的本质:对运动主体自身和周围环境空间不确定性的估计。为了解决SLAM问题,我们需要状态估计理论,把定位和建图的不确定性表达出来,然后采用滤波器或非线性优化,估计状态的均值和不确定性(方差)。

SLAM 问题的数学表述

  1. 什么是运动?我们要考察从 k − 1 k-1 k1时刻到 k k k时刻,机器人的位置 x x x是如何变化的。
  2. 什么是观测?假设机器人在 k k k时刻于 x k x_{k} xk 处探测到了某一个路标 y j y_{j} yj
    在这里插入图片描述

其中 O \mathcal{O} O是一个集合,记录着在哪个时刻观察到了哪个路标(通常不是每个路标在每个时刻都能看到的——我们在单个时刻很可能只看到一小部分)。这两个方程描述了最基本的 SLAM 问题:当知道运动测量的读数 u u u,以及传感器的读数 z z z时,如何求解定位问题(估计 x x x)和建图问题(估计 y y y)?这时,我们就把SLAM问题建模成了一个状态估计问题:如何通过带有噪声的测量数据,估计内部的、隐藏着的状态变量?

状态估计问题的求解,与两个方程的具体形式,以及噪声服从哪种分布有关。按照运动和观测方程是否为线性,噪声是否服从高斯分布进行分类,分为线性/非线性和高斯/非高斯系统。

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

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

相关文章

HDU1056——HangOver,HDU1057——A New Growth Industry,HDU1058——Humble Numbers

目录 HDU1056——HangOver 题目描述 运行代码 代码思路 HDU1057——A New Growth Industry 题目描述 运行代码 代码思路 HDU1058——Humble Numbers 题目描述 运行代码 代码思路 HDU1056——HangOver 题目描述 Problem - 1056 运行代码 #include <iostream&…

html+css+js 实现马赛克背景按钮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽效果&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 文…

报错Found dtype Long but expected Float解决办法

Found dtype Long but expected Float错误通常发生在尝试将一个数据类型为Long的张量传递给一个期望数据类型为Float的函数或操作时。 在PyTorch中&#xff0c;Long和Float是两种常见的数据类型&#xff0c;分别对应于64位整数和32位浮点数。某些函数或操作可能只接受特定数据…

详细分析 Bladex中的swagger-resources资源未授权访问的解决方法

目录 1. 问题所示2. 原理分析2.1 RouterFunctionConfiguration 类2.2 SwaggerResourceHandler 类3. 解决方法3.1 网关过滤3.2 去除配置3.3 代码修改4. 彩蛋1. 问题所示 从而也导致资源接口文件泄露 https://xxx/swagger-resources 或者 ip:端口号/swagger-resources 2. 原理分…

数据仓库设计与数据建模初探

一、为什么需要引入数据仓库 数据仓库本质上是一种数据库&#xff0c;但它有一些特定的特性和用途&#xff0c;使其与传统的关系数据库有所不同。 需要分析的数据量较大&#xff08;单批 GiB&#xff09;&#xff0c;此时事务性数据库分析性能堪忧&#xff0c;需要通过建立索…

空调压力传感器

空调压力传感器是自动空调控制系统的一个传感器元件&#xff0c;其作用是防止制冷系统在极限制冷剂管路的压力下工作&#xff0c;并帮助控制发动机冷却风扇的转速。压力传感器安装在发动机舱内空调高压管路上。 该传感器向发动机ECM或空调控制单元输出压力信号&#xff0c;当检…

自学网络安全,从小白到大神的破茧之路!

在当今数字化高速发展的时代&#xff0c;网络安全已经成为了至关重要的领域。无论是个人的隐私保护&#xff0c;还是企业、国家的关键信息资产维护&#xff0c;都离不开网络安全的有力保障。出于对这一领域的浓厚兴趣以及对未来职业发展的清晰规划&#xff0c;我毅然决然地踏上…

【计算机网络】TCP负载均衡实验

一&#xff1a;实验目的 1&#xff1a;了解TCP负载均衡的配置。 2&#xff1a;学会使用NAT技术处理和外部网络的连接。 二&#xff1a;实验仪器设备及软件 硬件&#xff1a;RCMS交换机、网线、内网网卡接口、Windows 2019操作系统的计算机等。具体为&#xff1a;二层交换机1…

Python数据分析案例55——基于LSTM结构自编码器的多变量时间序列异常值监测

案例背景 时间序列的异常值检测是方兴未艾的话题。比如很多单变量的&#xff0c;一条风速&#xff0c;一条用电量这种做时间序列异常值检测&#xff0c;想查看一下哪个时间点的用电量异常。 多变量时间序列由不同变量随时间变化的序列组成&#xff0c;这些时间序列在实际应用…

LivePortrait优化版,表情迁移,数字人,视频驱动视频v2v(WIN,MAC)

大家好&#xff0c;今天给大家分享一个由快手、中国科学技术大学和复旦大学联合团队开发的表情迁移项目——LivePortrait。老规矩&#xff0c;整合包也已经准备OK了。&#xff08;MAC用户不要担心&#xff01;这次有有有有MAC的哦&#xff01;&#xff09; 只需要上传一段参考视…

Godot入门 04平台设计

新建创景&#xff0c;添加AnimatableBody2D节点。 添加Sprite2D节点 拖动图片 剪裁图片&#xff0c;吸附模式&#xff1a;像素吸附 添加CollisionShape2D&#xff0c;设置实际形状为矩形 重命名AnimatableBody2D节点为Platform&#xff0c;保存场景&#xff0c;拖动platform场景…

20 B端产品的数据分析

数据分析的价值 数据衡量业务&#xff1a;通过管理数据报表&#xff0c;可以快速衡量业务发展状态。 数据洞察业务&#xff1a;通过数据分析&#xff0c;可以找到业务发展的机遇。 数据驱动指导业务&#xff1a;基于数据&#xff0c;驱动业务决策&#xff0c;数据支撑决策。 …

Django5之视图装饰器

本节主要介绍Django框架视图层中装饰器的内容。视图装饰器用来对视图函数进行相关的控制操作&#xff0c;实现了对各种HTTP特性的支持功能。 4.5.1 允许HTTP方法 在Django框架中&#xff0c;位于django.views.decorators.http模块的装饰器被用来限制可以访问该视图的HTTP请求…

RICHTEK立锜科技静态耗电的nanoPower Buck转换器RT5713/RT5714

RT5713/14 是静态耗电只有 360nA 的高效同步 Buck 转换器&#xff0c;即使负载电流低达 10mA 时也能保持其很高的转换效率。其输入电压范围为 2.2V~5.5V&#xff0c;输出电压为两档可选&#xff0c;通过电压选择引脚 VSEL 即可进行设定&#xff0c;负载能力可达 0.5A/1A。 它采…

字符串格式化(不造轮子)

jdk提供的字符串格式化工具类String.format、MessageFormat使用的占位符不够直观&#xff0c;除了使用重量级的模板引擎外&#xff0c;寻求一种轻量级的方式 Apache StringSubstitutor commons-text包下的org.apache.commons.text.StringSubstitutor类 <dependency><…

如何知道一个字段在selenium中是否可编辑?

这篇文章将检查我们如何使用Java检查selenium webdriver中的字段是否可编辑。 我们如何知道我们是否可以编辑字段&#xff1f;“readonly”属性控制字段的可编辑性。如果元素上存在“readonly”属性&#xff0c;则无法编辑或操作该元素或字段。 因此&#xff0c;如果我们找到一…

MySQL练手 --- 1789. 员工的直属部门

题目链接&#xff1a;1789. 员工的直属部门 这道题虽然是个简单题&#xff0c;但是"坑"倒是不少&#xff0c;所以记录一下 思路&#xff1a; 题目要干&#xff1a; 一个员工可以属于多个部门。当一个员工加入超过一个部门的时候&#xff0c;他需要决定哪个部门是…

ComfyUI插件:ComfyUI Impact 节点(一)

前言&#xff1a; 学习ComfyUI是一场持久战&#xff0c;而 ComfyUI Impact 是一个庞大的模块节点库&#xff0c;内置许多非常实用且强大的功能节点 &#xff0c;例如检测器、细节强化器、预览桥、通配符、Hook、图片发送器、图片接收器等等。通过这些节点的组合运用&#xff0…

如何保证前后端交互信息不被篡改。

先说说前后端有哪些认证方式来保证&#xff1a; 基于 session 的认证方式&#xff1a;前端在用户登录成功后&#xff0c;后端会在服务器端生成一个唯一的 session ID&#xff0c;并将该 session ID 返回给前端&#xff0c;在后续的请求中&#xff0c;前端需要带上该 session ID…

SEO与数据中心代理IP的结合能带来哪些便利?

本文将探讨将SEO与数据中心代理IP结合所带来的好处&#xff0c;以及如何利用这种组合来提升网站在搜索引擎中的排名和可见性。 1. 数据中心代理IP的作用和优势 数据中心代理IP指的是由数据中心提供的IP地址&#xff0c;用于隐藏真实服务器的位置和身份。与其他类型的代理IP相…