slam入门学习笔记

       SLAM是Simultaneous localization and mapping缩写,意为“同步定位与建图”,主要用于解决机器人在未知环境运动时的定位与地图构建问题,目前广泛用于机器人定位导航领域,VR/AR方面,无人机领域,无人驾驶领域等。

(1)slam框架流程

SLAM系统框架如图所示,一般分为五个模块,包括传感器数据、视觉里程计、后端、建图及回环检测。

  • 传感器数据:主要用于采集实际环境中的各类型原始数据。包括激光扫描数据、视频图像数据、点云数据等。
  • 视觉里程计:主要用于不同时刻间移动目标相对位置的估算。包括特征匹配、直接配准等算法的应用。Vo(又称为前端)能够通过相邻帧间的图像估计相机运动,并恢复场景的空间结构,称它为里程计。被称为里程计是因为它只计算相邻时刻的运动,而和再往前的过去信息没有关联。相邻时刻运动串联起来,就构成了机器人的运动轨迹,从而解决了定位问题。另一方面,根据每一时刻的相机位置,计算出各像素对应的空间点的位置,就得到了地图。
  • 后端:主要用于优化视觉里程计带来的累计误差。包括滤波器、图优化等算法应用。后端优化主要是处理slam过程中噪声的问题。任何传感器都有噪声,所以除了要处理“如何从图像中估计出相机运动”,还要关心这个估计带有多大的噪声。前端给后端提供待优化的数据,以及这些数据的初始值,而后端负责整体的优化过程,它往往面对的只有数据,不必关系这些数据来自哪里。在视觉slam中,前端和计算接视觉研究领域更为相关,比如图像的特征提取与匹配等,后端则主要是滤波和非线性优化算法。
  • 建图:主要是根据估计的轨迹建立与任务要求对应的地图,在机器人学中,地图的表示主要有栅格地图、直接表征法、拓扑地图以及特征点地图这4种。而特征点地图是用有关的几何特征(如点、直线、面)表示环境,常见于视觉SLAM技术中。这种地图一般通过如GPS、UWB以及摄像头配合稀疏方式的vSLAM算法产生,优点是相对数据存储量和运算量比较小,多见于最早的SLAM算法中。
  • 回环检测:主要用于空间累积误差消除,是指机器人识别曾到达场景的能力。如果检测成功,可以显著地减小累积误差。回环检测实质上是一种检测观测数据相似性的算法。对于视觉SLAM,多数系统采用目前较为成熟的词袋模型(Bag-of-Words, BoW)。词袋模型把图像中的视觉特征(SIFT, SURF等)聚类,然后建立词典,进而寻找每个图中含有哪些“单词”(word)。也有研究者使用传统模式识别的方法,把回环检测建构成一个分类问题,训练分类器进行分类。

其工作流程大致为:

传感器读取数据后,视觉里程计估计两个时刻的相对运动(Ego-motion),后端处理视觉里程计估计结果的累积误差,建图则根据前端与后端得到的运动轨迹来建立地图,回环检测考虑了同一场景不同时刻的图像,提供了空间上约束来消除累积误差。

(2)slam类型特性

下面根据常见的激光slam和视觉slam特性进行如下总结:

  • 激光slam:

激光SLAM采用2D或3D激光雷达(也叫单线或多线激光雷达),2D激光雷达一般用于室内机器人上(如扫地机器人),而3D激光雷达一般使用于无人驾驶领域。激光雷达的出现和普及使得测量更快更准,信息更丰富。激光雷达采集到的物体信息呈现出一系列分散的、具有准确角度和距离信息的点,被称为点云。通常,激光SLAM系统通过对不同时刻两片点云的匹配与比对,计算激光雷达相对运动的距离和姿态的改变,也就完成了对机器人自身的定位。激光雷达测距比较准确,误差模型简单,在强光直射以外的环境中运行稳定,点云的处理也比较容易。同时,点云信息本身包含直接的几何关系,使得机器人的路径规划和导航变得直观。激光SLAM理论研究也相对成熟,落地产品更丰富。

  • 视觉slam

早期的视觉SLAM基于滤波理论,其非线性的误差模型和巨大的计算量成为了它实用落地的障碍。近年来,随着具有稀疏性的非线性优化理论(Bundle Adjustment)以及相机技术、计算性能的进步,实时运行的视觉SLAM已经不再是梦想。视觉SLAM的优点是它所利用的丰富纹理信息。例如两块尺寸相同内容却不同的广告牌,基于点云的激光SLAM算法无法区别他们,而视觉则可以轻易分辨。这带来了重定位、场景分类上无可比拟的巨大优势。同时,视觉信息可以较为容易的被用来跟踪和预测场景中的动态目标,如行人、车辆等,对于在复杂动态场景中的应用这是至关重要的。

特性/技术

激光SLAM (Lidar SLAM)

视觉SLAM (Visual SLAM)

精确度与稳定性

高精度测距,误差模型简单,稳定运行于各种光照条件

精度依赖于图像处理算法,需良好光照和丰富纹理

信息丰富度

点云信息,直接几何关系,便于路径规划

丰富的纹理信息,强场景辨识能力

成本

通常较高(激光雷达设备成本)

较低(视觉传感器成本)

环境适应性

适应多种环境,包括强光

需充足光照和丰富纹理

理论研究与产品成熟度

较成熟,产品落地丰富

快速发展,实时技术成熟

动态目标跟踪与纹理识别

较弱,依赖点云

强,易于跟踪动态目标,区分相似物体

应用场景

室内机器人、无人驾驶

室内外导航,适合动态和纹理丰富的环境

融合使用优势

提供精确方向和距离信息,增强视觉SLAM点云匹配

纹理丰富的动态环境中稳定工作,辅助激光SLAM场景记录

(3)slam涉及的知识点

无论是视觉slam还是激光slam,其中都涉及到了相邻帧之间的匹配,然后根据匹配结果估算其相对位姿。

》相邻帧图像

拿到相邻帧的图像(保证存在一定的共视区域即可),通过特征提取算法(比如sift,suft,orb,甚至superpoint等)提取图像特征点,然后结合特征描述子和ransac完成图像特征匹配或者直接借助superglue等匹配网络完成特征匹配,通过匹配结果计算得到相机的位姿信息。具体计算位姿的过程如下:

通过相邻两张图像计算相机的位姿,指的就是求解旋转矩阵和平移向量,它们一起描述了从第一张图像到第二张图像的相机的相对运动关系(也就是位姿)。这可以通过计算图像对之间的几何关系实现,通常涉及以下矩阵:


如果是基于假设场景中的点都在同一个平面上或接近于一个平面,还可以计算单应矩阵,它描述了从一个平面在一个视角投影到另一个视角的映射关系。因此,如果我们假设场景满足这个条件,可以通过单应性矩阵提取相机的位姿(旋转和平移)。

这样拿到本质矩阵后就可以通过奇异值分解和几何约束计算得到位姿信息了。但需要注意这里的单应矩阵H和基础矩阵F不是一回事,两者通过下面方式计算


当获取到相机的位姿信息后,可以通过三角测量法(Triangulation)来恢复三维空间中的点,从而构建空间地图。下面是详细步骤,包括相机的位姿(旋转和平移)如何用于恢复空间中的三维点。

由于噪声等存在上述计算等式不一定成立,所以更常见的做法是求最小二乘解而不是零解。通过上述三角测量步骤,可以得到每个匹配点的三维坐标。随着多个图像帧的处理,逐渐重建出整个场景的三维点云。具体过程如下:

  1. 逐帧三角测量:每处理一对或多对图像帧,将其中匹配的特征点通过三角测量恢复三维位置。
  2. 点云累积:将每一帧计算出的三维点云累积到一个整体点云地图中,构建出场景的空间地图。
  3. 稀疏点云到稠密点云:通常初步得到的是稀疏的三维点云,可以通过进一步的密集匹配、视差估计或深度图技术将稀疏点云扩展为稠密点云,从而生成更完整的三维场景。

在完成初步三角测量并构建稀疏点云后,可以使用Bundle Adjustment(捆绑调整)来优化相机位姿和三维点的位置。它通过最小化所有视角下的重投影误差,进一步调整和优化三维点云的精度和相机的姿态。至此整个slam构建过程结束。

》相邻帧点云

针对相邻的两帧点云数据通过滤波去燥等预处理后,利用3D SIFT特征点提取与匹配或者NDT或基于随机采样一致性(RANSAC)的全局配准方法得到一个粗匹配结果计算得到初始的位姿,然后在此基础上利用ICP等局部优化方法得到一个较好的位姿变换,同时在多帧点云配准的场景下,通常会通过图优化方法(如g2o、Ceres等)来对多个帧的位姿进行全局优化,以减少累积误差。在较大的场景中,回环检测可以识别已经经过的场景,并进行全局优化,进一步减少漂移。

在相邻帧匹配的基础上,逐帧累积相对位姿变换,得到每一帧的全局位姿,即当前帧相对于初始帧(或世界坐标系)的位姿。将每一帧转换到全局坐标系下的点云逐帧融合,生成整体的点云地图。常见的地图构建方式有以下几种:

>直接累积点云

  • 点云拼接:将每一帧的点云直接累加到全局地图中。这种方式简单直接,每一帧点云转换到全局坐标系后,直接将所有点加入到地图中。
  • 问题:这种方式会逐渐增加地图的大小,且由于每帧点云可能包含一定的噪声或位姿误差,累积误差可能会导致地图的失真。

>体素网格(Voxel Grid)

  • 滤波融合:在每帧点云加入到全局地图前,先对其进行体素滤波(Voxel Grid Filter),将点云稀疏化,减少点的密度,从而降低存储空间。
  • 优点:可以显著减少数据量,同时保持足够的地图精度。
  • 步骤:

>OctoMap

  • 八叉树地图:OctoMap 是一种基于八叉树的数据结构,它能够高效地构建和存储三维环境地图。通过对点云进行体素化处理,OctoMap 可以生成占据图,标记出环境中的占据空间和空闲空间。
  • 适用场景:OctoMap适合需要构建稀疏占据图的场景,尤其在无人机、机器人导航等应用中非常常用。

在SLAM中,由于位姿计算中不可避免的累积误差,长时间运行后可能会导致地图的漂移和不准确。通过回环检测可以识别出已经经过的场景,并通过全局优化减少累积误差。同时将每一帧的位姿作为图中的节点,相邻帧之间的相对位姿作为图的边,通过图优化算法(如g2o、Ceres等),对整个地图的位姿进行全局优化。通过检测已访问的相同位置,调整全局位姿,消除长时间运行产生的漂移误差。如果需要构建动态环境下的地图,可能需要定期更新点云地图。可以使用类似 OctoMap 的更新策略,定期清除过时的点云数据,并融合新的点云帧。

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

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

相关文章

【小白请绕道】Redis 的 I/O 多路复用技术,它是如何工作的?

Redis 的 I/O 多路复用技术是其高性能的关键之一。在单个线程中,Redis 可以同时处理多个网络连接,这是通过使用 I/O 多路复用技术实现的。这种技术允许 Redis 在单个线程中监听多个套接字,并在套接字准备好执行操作时(如读取或写入…

STM32F1,F4,L1系列禁止JTAG和SW引脚方法

STM32F1系列 程序中在使用到JTAG、SWD的某个IO 时,需要禁用掉相关调试方法后,再配置相应的IO方式。在需要相应的接口配置前使用这些代码。 对于F1系列,调用函数进行专门的禁止。 标准库配置方式: RCC_APB2PeriphClockCmd(RCC_A…

2024源代码加密软件TOP10分享|企业源代码加密软件

在现代企业的数字化转型过程中,源代码作为企业核心知识产权之一,至关重要。为了防止数据泄漏、外部攻击以及内部违规操作,企业越来越关注源代码的加密和保护。本文将为大家介绍2024年最受欢迎的十大源代码加密软件,帮助企业更好地…

助力新能源汽车行业的发展,尽在AUTO TECH 2025华南展

随着全球对环境保护的重视和石油资源的逐渐减少,新能源汽车的发展已经成为必然趋势。预计未来几年,新能源汽车的市场规模和销量将继续保持快速增长。根据 IDC 预测,中国乘用车市场中新能源车市场规模将在 2028 年超过 2300 万辆,年…

面试经典 150 题:力扣88. 合并两个有序数组

每周一道算法题启动 题目 【题目链接】 【解法一】合并后排序 排序后的数组自动省略0的数字&#xff0c;又学到了 class Solution { public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {//合并两个数组后排序for(int i0; i<…

基于springboot渔具销售系统设计与开发

文未可获取一份本项目的java源码和数据库参考。 选题背景及意义 随着社会的发展,渔具销售企业之间的竞争与合作变得越来越频繁.而销售部门作为企业的窗口,其地位无与伦比。在激烈的市场竞争中,企业要能对市场变化作出反应,销售部门起了关键作用,销售部门作为企业的生命已经成了…

什么味道呀!热播剧《凡人歌》启示:这几年,请主动给生活降级——早读(逆天打工人爬取热门微信文章解读)

试试就试试 引言Python 代码第一篇 洞见 热播剧《凡人歌》启示:这几年&#xff0c;请主动给生活降级第二篇 在错误的地方重复&#xff0c;毫无价值结尾 &#xff08;哈哈哈 真的吗&#xff1f;&#xff09; 引言 回复平静 啥啥都回复平静 家里人不要钱了 股票也跌停了 哈哈 怎…

搭建EMQX MQTT服务器并接入Home Assistant和.NET程序

本文主要介绍如何使用Docker搭建EMQX MQTT服务器&#xff0c;并将其接入到Home Assistant中&#xff0c;最后演示如何使用.NET接入MQTT。 1. 背景 在智能家居系统中&#xff0c;MQTT&#xff08;消息队列遥测传输协议&#xff09;是一种轻量级的消息传输协议&#xff0c;特别适…

leetcode-10. 正则表达式匹配

题目描述 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整个 字符串 s 的&#xff0c;而不是部分字符串。 示例 1&#xff1a; 输入&a…

稀土阻燃剂应用在PE(聚乙烯)上的优势

稀土阻燃协效剂基于稀土4f电子层结构带来的特有属性,在聚合物材料燃烧时可催化酯化成炭,迅速在高分子表面形成致密连续的碳层,隔绝聚合物材料内部的可燃性气体与氧气的接触,从而达到阻燃抑烟的效果,且燃烧时不产生有毒有害气体。其主要特点如下&#xff1a; 有效性&#xff1a;…

巡检系统新选择:零代码设备巡检系统的优势与功能

在现代工业生产中&#xff0c;设备的稳定运行是企业正常生产的关键。为了确保设备的可靠性和安全性&#xff0c;设备巡检系统成为了企业不可或缺的工具。而零代码设备巡检系统以其独特的优势&#xff0c;为企业的设备管理带来了全新的体验。 目前&#xff0c;市场上的巡检系统种…

OpenAI o1模型怎么使用,这篇文章告诉你

九月最大的热点无疑就是OpenAI推出o1模型 此次发布的o1 系列模型就是之前内部代码为“草莓”模型。 下面就给大家介绍一下此次o1模型的强大之处以及使用方法。 如果大家想要了解OpenAI o1方法&#xff0c;可直接拉到文章末尾。 1.、博士级学科能力 o1模型在推理能力上展现出…

[笔记]一组电缆、定位相关产品的技术参数

csdn不允许做广告&#xff0c;这里的那家定位供应商的技术看起来是可以的。很有希望。它的原理并不复杂&#xff0c;这家企业在处理业务领域以外的新型产品时&#xff0c;是查过资料的&#xff0c;这就超过了60%的同行。 1.电缆 仅给出现在市面供应的铠装电缆结构&#xff0c…

只用几行代码,不依赖任何框架?SMTFlow 轻松实现前端流程图

只用几行代码&#xff0c;不依赖任何框架&#xff1f;SMTFlow 轻松实现前端流程图&#xff01; 在前端开发中&#xff0c;如果你需要一个简单好用的流程图设计工具&#xff0c;SMTFlow 绝对是你的不二之选&#xff01;本文将介绍 SMTFlow 的核心功能、特点以及如何快速上手。 工…

RAG高级优化:检索策略探讨Fusion, HyDE安排上(含代码)

传统的检索方法通常依赖于对query进行语义理解(基于向量)或关键字匹配(BM25)&#xff0c;这两种方法都有其优点和缺点。融合检索、HyDE和RAG-Fusion可以创建一个更健壮和准确的检索系统。本文将介绍三种优化方法&#xff1a; Fusion retrieval&#xff1a; 基于向量和基于bm25的…

内核驱动开发之系统移植

系统移植 系统移植&#xff1a;定制linux操作系统 系统移植是驱动开发的前导&#xff0c;驱动开发是系统运行起来之后&#xff0c;在内核中新增一些子功能而已 系统移植就四个部分&#xff1a; 交叉编译环境搭建好bootloader的选择和移植&#xff1a;BootLoader有一些很成熟…

有关shell练习

统计家目录下.c文件的个数 #!/bin/bash count0for file in ~/* doif [[ "$file" *.c ]]; then((count))fidone echo "家目录下.c文件个数为:$count"定义一个稀疏数组(下标不连续)&#xff0c;写一个函数&#xff0c;求该稀疏数组的和&#xff0c;要求稀…

苹果、OPPO、小米的选择:聚焦TI AMOLED显示屏电源管理双子星芯片

如果说眼睛是心灵的窗户,那么显示屏就是计算机的窗户,通过这一扇窗,我们可以更直观的进行人机对话,更默契的与计算机配合。如今在各种产品的屏幕应用中,更多使用的是OLED显示屏,今天,平台君就给大家说说TI的两枚三路输出AMOLED显示器电源芯片——TPS65632和TPS65631W。 …

中高级工程师都需知道的七种高级 JavaScript 技术用例

直接干货走起&#xff1a; 1. 掌握闭包&#xff0c;让代码更简洁 闭包是 JavaScript 中最强大且经常被误解的功能之一。它们允许你使用私有变量创建函数&#xff0c;从而使你的代码更加模块化和更安全。 什么是闭包&#xff1f;当函数记住其词法范围时&#xff0c;即使函数…

ESP32 本地大模型部署语音助手

ESP32S3 Box 提供了 chatgpt 的 demo。因为访问不了的原因&#xff0c;打算改来做一个本地化部署的专用语音助手。 文章目录 准备工作Windows 安装 ESP-IDFWSL 安装 ESP-IDF配置 IDF编译 chatgpt demo串口映射下载 语音助手调试步骤遇到的问题在WSL2中&#xff0c;server.py 脚…