视觉slam框架从理论到实践-第一节绪论

news/2025/5/24 2:01:44

       从opencv的基础实现学习完毕后,接下来依照视觉slam框架从理论到实践(第二版)的路线进行学习,主要以学习笔记的形式进行要点记录。

     

目录

 1.数据里程计

2.后端优化

3.回环检测

4.建图


在视觉SLAM 中整体作业流程可分为:

   1.相机图像信息的读取和预处理。如果是在机器人中、还可能有码盘、惯性传感器等信息的读取和同步。
   2.前端视觉里程计( Visual Odometry, VO ) 。视觉里程计的任务是估算相邻图像间相机的运动,以及局部地图的样子VO 又称为前端( Front End )。
  3 . 后端(非线性)优化( Optimiza ti on )。后端接受不同时刻视觉里程计t则址的相机位姿,以及回环检测的信息,对它们进行优化, 得到全局一致的轨迹和地图。由于接在VO 之后,又称为后端( Back End )
  4.回环检测( Loop Closure Detection ) 同环检测判断机器人是否到达过先前的位置。如果检测到同环,它会把信息提供给后端进行处理。

   5.建图( Mapping ) 它根据估计的轨迹建立与任务要求对应的地图。

 1.数据里程计

      视觉里程计关心相邻图像之间的相机运动, 最简单的情况当然是两张图像之间的运动关系,基于上一期opencv学习的特征点匹配->极线估计->基于极线约束的特征点匹配->基于已知相机内参的本质矩阵求解,可以估计两张图像的位姿变化。

     仅通过视觉里程计来估计轨迹、将不可避免地出现累积漂移,因为我们求取的特征点往往有误差,误差通过不断积累就会产生很大的漂移。

       为了解决漂移问题我们还需要两种技术:后端优化 和回环检测,回环检测负责把“机器人回到原始位置”的事情检测出来,而后端优化则根据该信息,校正整个轨迹的形状。

2.后端优化

      后端优化主要指处理SLAM 过程中的噪声问题,在现实中、再精确的传感器也带有一定的噪声。后端优化要考虑的问题,就是如何从这些带有噪声的数据中估计整个系统的状态,以及这个状态估计的不确定性有多大,这称为最大后验概率估计(Maximum-a-Posteriori , MAP )。在视觉SLAM 中,前端和计算机视觉研究领域更为相关,比如图像的特征提取与匹配等,后端则主要是滤波与非线性优化算法

3.回环检测

       回环检测,又称闭环检测,主要解决位置估计随时间漂移的问题。假设实际情况下机器人经过一段时间的运动后回到了原点,但是由于漂移,它的位置估计值却没有回到原点。事实上,我们认为、地图存在的主要意义是让机器人知晓自已到过的地方。为了实现回环检测, 我们需要让机器人具有识别到过的场景的能力,可以在机器人下方设置一个标志物(如一张二维码图片)。它只要看到了这个标志,就知道自己回到了原点,该标志物实质上是一种环境中的传感器,对应用环境做了限制。

4.建图

       一组空间点的集合可以称为地图,地图的形式随SLAM 的应用场合而定。大体上讲,可以分为度量地图与拓扑地图两种。

度量地图强调精确地表示地图中物体的位置关系,通常用稀疏( Sparse ) 与稠密( Dense) 对其分类。稀疏地图进行了一定程度的抽象,并不需要表达所有的物体。稠密地图着重千建模所有看到的东西。定位时用稀疏路标地图就足够了。而用于导航时, 则往往需要稠密地图,稠密地图通常按照某种分辨率,由许多个小块组成, 在二维度量地图中体现为许多个小格子(Gri d ),而在三维度量地图中则体现为许多小方块( Voxel )。

拓扑地图(Topological Map),拓扑地图更强调地图元素之间的关系。拓扑地图是一个图( Graph ) ,由节点和边组成,只考虑节点间的连通性,例如只关注A 、B 点是连通的,而不考虑如何从A 点到达B 点。


https://dhexx.cn/news/show-5496885.html

相关文章

Leetcode——137 260找出只出现一次的数

文章目录 找出只出现一次的数引入Leetcode 260Leetcode 137 找出只出现一次的数 对于数组中有一类题,即某些数据在数组中只出现一遍,需要我们找出,今天我们来看看这个类型的题。 引入 想必大家应该见过这么一道题: 现给定一个数…

【MySQL数据库】InnoDB存储引擎:逻辑存储结构、内存架构、磁盘架构

逻辑存储结构 一个数据库是由一张张表组成的,而表中是由一个个段构成的,一个段是由区构成的,区空间是由页构成的,页是行构成的。 ①表空间:.ibd文件,一个mysql实例可以对应多个表空间,用于存储…

Windows 系统如何使用Redis 服务

前言 在学习过程中,我们长期接触到的是Mysql 关系型数据库,也是够我们平时练习项目用的,但是后面肯定会有大型数据的访问就要借助新的新的工具。 一、什么是Redis Redis(Remote Dictionary Server)是一个基于内存的 键…

MuJoCo 机械臂关节路径规划+轨迹优化+末端轨迹可视化(附代码)

视频讲解: MuJoCo 机械臂关节路径规划轨迹优化末端轨迹可视化(附代码) 今天的实验测试目标就是随机给定两个关节空间位置,使用pyroboplan进行路径规划和轨迹优化, 完整代码仓库:https://github.com/Litchi…

【7】深入学习Buffer缓冲区-Nodejs开发入门

深入学习Buffer缓冲区 前言ASCII码GBK/GB2312UnicodeJavascript转换 BufferBuffer的作用Buffer的创建Buffer.allocBuffer.allocUnsafe(size)Buffer.allocUnsafeSlow(size)Buffer.from(array)Buffer.from(arrayBuffer[, byteOffset[, length]])Buffer.from(buffer)Buffer.from(s…

onlyoffice 在线编辑集成

onlyoffice 在线编辑集成 项目中要使用word在线编辑功能,记录一下过程 安装使用docker版本 docker run -itd -p 8001:80 --name kodoffice --restart always registry.cn-hangzhou.aliyuncs.com/kodcloud/kodoffice:7.4.1.1 启动后http://192.168.x.x:8001/web/…

通过使用 include 语句加载并执行一个CMake脚本来引入第三方库

通过使用 include 语句加载并执行一个CMake脚本来引入第三方库 当项目中使用到第三方库时,可以通过使用 include 语句来加载并执行一个CMake脚本,在引入的CMake脚本中进行第三方库的下载、构建和库查找路径的设置等操作,以这种方式简化项目中…

罗庚机器人:机器人打磨领域的先行者

近日,记者在广东罗庚机器人有限公司(以下简称罗庚机器人)总经理蒲小平处了解到,该公司是一家研发与为客户提供高精度自适应机器人打磨抛光集成工艺的高科技企业,是机器人打磨领域的先行者。在国内外机器人打磨抛光应用…

LeetCode算法题(Go语言实现)_46

题目 给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。 另有一些以数组 queries 表示的问题,其中 querie…

如何安装git?

以下是 Windows、macOS 和 Linux 系统安装 Git 的详细步骤: 一、Windows 系统安装 Git 下载安装包 访问 Git 官网下载页,点击下载 Windows 版安装程序(如 Git-2.45.1-64-bit.exe)。 运行安装程序 安装选项: 选择安装路…