SLAM相关知识

news2024/11/15 17:37:18
  1. 目前在SLAM上的传感器主要分为两大类:激光雷达和摄像头

激光雷达:单线、多线

摄像头:单目相机(普通USB相机)、双目相机(2个普通的USB相机)、单目结构光(深度相机)、双目结构光(深度相机)、TOF(深度相机)

视觉slam-vslam综述总结(以下信息是2010-1016年):

  1. 基于特征的方法:对特征点的跟踪和映射
  2. 直接方法:为了应对无纹理或无特征的环境,提出了不检测特征点而直接使用整幅图像进行跟踪和映射的vslam方法
  3. 基于RGB-D相机的方法:随着低成本RGB-D传感器如微软Kinect的出现,单目RGB图像和深度图像结合的vSLAM算法已经被提出(输入为两张图像,RGB的二维彩色图像和具有深度信息的depth图像)

vslam算法的基本框架:

为了启动vSLAM,需要定义一定的坐标系,用于未知环境下的摄像机姿态估计和三维重建。

  1. 初始化:在初始化时,首先要定义全局坐标系,将环境的一部分重构为全局坐标系中的初始地图。
  2.  跟踪和映射:初始化后,进行跟踪和映射,连续估计相机姿态。在跟踪中,在图像中跟踪重建的地图,以估计图像相对于该地图的相机姿态。(目的是通过图像中的特征匹配或特征跟踪获得图像和地图之间的2D-3D对应关系)
  3. 重新定位:当由于相机快速运动或某些干扰导致跟踪失败时,需要重新定位。在这种情况下,有必要再次计算相机相对于地图的姿态。如果不将重新定位纳入到vSLAM系统中,系统在跟踪丢失后就不再工作,。这样的系统就没有实际用途。
  4. 全局地图优化:考虑整个地图信息的一致性,计算从开始到当前的累计误差(可参考闭环技术:在闭环闭合中,首先通过将当前图像与先前获取的图像进行匹配来搜索闭环。如果检测到循环,则意味着相机捕获了先前观察到的视图之一。在这种情况下,可以估计相机运动过程中发生的累积误差。)

vslam、视觉里程计和在线运动结构的关系:

  1. 视觉里程计VO:基于摄像机的里程计称为视觉里程计(visual odometry,VO). 里程计是指利用传感器来估计传感器位置随时间的顺序变化. Vslam = VO + 全局地图优化
  2. 关系:在VO中,仅在地图的一小部分中考虑地图的局部几何一致性,或者仅计算相对相机运动而不进行映射。另一方面,在vSLAM中,通常考虑地图的全局几何一致性。因此,为了构建几何上一致的映射,在最近的vSLAM算法中进行了全局优化。
  3. SFM:批量估计摄像机运动和环境三维结构的技术,在线运行的SFM方法和vSLAM没有区别。

基于特征的方法展开描述:

  1. 基于过滤器的方法:MonoSLAM2003(使用扩展卡尔曼滤波(EKF)同时估计未知环境的摄像机运动和三维结构),在EKF中,自由度(DoF)相机运动和三维位置特征点被表示为状态向量。在预测模型中假定均匀运动,将特征点跟踪的结果作为观测值。根据相机的移动,新的特征点被添加到状态向量中。初始映射是通过观察定义了全局坐标系的已知对象而创建。总结:Map初始化是通过使用已知对象完成的,利用EKF估计相机运动和特征点的三维位置。遇到的问题:在大型环境中,由于特征点的数量很大,所以稳态向量的尺寸也会变大,很难实现实时计算。PTAM2007:为了解决MonoSLAM的计算成本问题,PTAM[15]在CPU上将跟踪和映射拆分为不同的线程。这两个线程并行执行,因此映射的计算成本不会影响跟踪。因此,在优化中需要计算成本的BA可以用于映射。这意味着跟踪实时估计相机运动,映射以计算成本估计特征点的精确3D位置。在PTAM中,使用五点算法重构初始映射[28]。在跟踪中,映射的点被投影到图像上,使用纹理匹配进行2D-3D对应。从这些通信中,可以计算出相机的姿势。在映射中,新特征点的三维位置在某些帧(称为关键帧)使用三角剖分计算。PTAM的一个重要贡献是在vSLAM中引入了这种基于关键帧的映射。当测量到输入帧与其中一个关键帧之间的较大差异时,选择一个输入帧作为关键帧。准确的三角测量基本上需要大的视差。与MonoSLAM相比,特征点的3D点使用局部关键帧的全局BA和所有关键帧的全局BA与地图进行优化。此外,在跟踪过程中,新版本的PTAM采用了一种重新定位算法[29]。它使用基于随机树的特征分类器来搜索输入帧的最近关键帧。总结:Map初始化由五点算法完成,从地图点与输入图像之间匹配的特征点估计相机姿态,利用三角剖分法估计特征点的三维位置,并利用BA对估计的三维位置进行优化,跟踪过程通过基于随机树的搜索恢复。由于PTAM只能重建环境的稀疏3D结构,因此第三个线程可以用来重建环境的密集3D结构。总结:MonoSLAM中基于ekf的映射与PTAM中基于ba的关键帧映射,其中基于ba的方法可以比基于ekf的方法处理更多的点。
  2. 基于BA的方法:在单目vSLAM情况下,如果不进行全局BA,则存在尺度模糊,并且在摄像机运动期间尺度可能发生变化。在这种情况下,会出现尺度漂移问题,每帧坐标系的尺度可能不一致。为了纠正尺度漂移,相机的姿势应该是优化到7DOF.Strasdat等人[37]提出了一种基于相似性变换的7自由度相机位姿优化方法。ORB-SLAM2015作为PTAM的扩展[38],包括BA、基于视觉的闭环检测和7自由度posegraph优化。据我们所知,ORB-SLAM是目前最完整的基于特征的单目slam系统。orb - slam扩展到立体vSLAM和RGB-D vSLAM[39]。
  3. 总结:MonoSLAM2003(跟踪和映射都是顺序的,同时使用EKF)、PTAM2007(跟踪和映射都是顺序的,同时使用EKF,在大环境下也就是特征点较多的时候,由于BA算法存在局部最小问题,难以得到地图和摄像机姿态的全局最优。为了避免这个问题,可以在BA之前使用闭环检测和姿态图优化)、ORB-SLAM2015(多线程跟踪、映射和闭环检测,地图优化采用位图优化和BA)。其中ORB-SLAM是一个开源系统,可以很容易地在本地环境中使用整个vSLAM系统。
  4. 基于特征点的vSLAM算法通常采用手工制作的特征检测器和描述符,可以在纹理丰富的环境中提供稳定的估计结果。然而,通过使用这种手工制作的特征,很难处理弯曲的边缘和其他复杂的线索。

基于直接方法的展开描述:

直接使用输入图像,无特征方法,光度一致性在直接方法中被用作误差测量,而几何一致性(如图像中特征点的位置)在基于特征的方法误差测量中被使用

  1. DTAM:通过将输入图像与重建地图生成的合成视图图像进行比较来完成跟踪,等同于图像和地图的3D模型之间的配准,在GPU上实现。步骤:首先采用多基线立体模型进行映射,然后考虑空间连续性对地图进行优化,计算出所有像素点的三维坐标。初始深度图是使用类似PTAM这样的立体测量来创建的。组成:地图初始化由立体测量完成、由重建的地图生成合成视图来估计相机运动、利用多基线立体图像估计每个像素的深度信息,然后考虑空间连续性对深度信息进行优化。
  2. LSD-SLAM:继承了半密集VO的思想[20]。在该方法中,重建目标被限制在具有强度梯度的区域,而dtam则重建整个区域。这意味着它忽略了无纹理区域,因为很难从图像中估计准确的深度信息。在映射中,首先设置随机值作为每个像素的初始深度值,然后根据光度一致性对这些值进行优化。由于这种方法不考虑整个地图的几何一致性,所以这种方法被称为视觉里程计。组成:随机值被设置为每个像素的初始深度值、由重建的地图生成合成视图来估计相机运动、重建区域仅限于高强度梯度区域、采用7自由度位图优化,获得几何一致性图。
  3. SVO:半直接VO,跟踪是通过特征点匹配完成的,但映射是通过直接方法完成的。在基于特征的方法中,使用特征描述符和Lucas-Kanade跟踪器[52]来寻找对应关系。与基于特征的方法相比,通过最小化特征点周围的光度误差来估计相机运动。这种方法可以看作是DTAM和LSD-SLAM的稀疏版本。
  4. DSO:直接稀疏里程法,为了抑制累积误差,DSO尽可能地从几何和光度角度去除误差因素。在DSO中,输入图像被分成若干块,然后进行高强度分割点作为重要候选点。DSO同时使用几何和光度相机校准结果。值得注意的是,DSO只考虑局部几何一致性。因此,DSO属于VO,而不是vSLAM。
  5. 总结:直接方法可以根据地图密度进行分类。密集的方法[43,47]生成密集的地图,计算出每个关键帧中每个像素的深度值。这些方法可用于GPU实时三维建模。与密集方法相比,半密集[21]和稀疏[51,53]方法侧重于基于传感器姿态跟踪的应用。这些方法可以在cpu上实时运行。

基于结构光的RGB-D相机方法展开描述:

可以实时的提供3D信息

  1. 与单目SLAM的区别:可以知道坐标系的尺度
  2. 基于深度的VSLAM框架如下:迭代最近点(ICP)算法、结合多个深度图重构环境的三维结构

KinectFusion:用体素空间用于表示环境的3D结构,结合体素空间中获得的深度图重构环境的三维结构,利用估计的三维结构和输入的深度图(基于深度的vSLAM),通过ICP算法估计摄像机的运动。

SLAM++:对象级RGB-D vSLAM算法,预先将多个三维物体注册到数据库中,并在线识别这些物体。通过对三维物体的识别,对估计的地图进行细化,将三维点替换为三维物体,减少数据量。

RGB-D VO和全局地图优化技术:使用了RGB图像,通过跟踪连续帧之间的特征点来估计相对摄像机运动。然后使用跟踪的特征点估计翻译矩阵,并使用深度图通过ICP算法对该翻译矩阵进行细化。另一方面,基于光度一致性的摄像机运动跟踪方法也被提出[22,23,64]。这种基于光度一致性的摄像机运动跟踪也采用了基于单目摄像机的密集vslam方法。·为了获得几何上一致的地图,在RGB-D可视化算法中采用了位姿图优化和变形图优化。通过RGB-D图像和重建模型之间的匹配来估计摄像机的运动。他们展示了几何上一致的模型,可以尽可能多地使用变形图优化来获得。

视觉SLAM遇到的问题:

  1. 纯旋转运动:
  2. 地图初始化:
  3. 估计固有相机参数:
  4. 滚动快门失真:
  5. 比例模糊:

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

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

相关文章

编辑器 goland 和 visual studio code

goland 编辑器做的真是太好了,面向 go 代码的定制设计,但它是收费软件,价格还贵的超出了自己的经济能力范围。有时候想打几行代码,却没有趁手的兵器,真是难受。但求助免费破解版吧,又需要关注公众号&#x…

用流式数据库解决「自动化检测服务器性能异常」难题

对 DevOps 团队来说,检测大量服务器的性能异常并尽快响应一直是个挑战。他们设置了各种指标来监控服务器性能,但诊断性能问题复杂且耗时,因为诊断数据的量可能非常大。越来越多的人认为这个过程应该自动化。但怎么做呢? 流式系统…

@Slf4j idea标红Cannot resolve symbol ‘log‘

一、背景 时间久了没有应用idea,打开工程后项目 log 提示报红,未能解析,Cannot resolve symbol log ,Slf4j 注解正常,应用的lombok插件。 检查lombok插件安装情况,发现未安装,重新安装重启idea后正常。 二…

pdf容量大小怎么改,pdf容量太大怎么变小

在数字化时代,pdf文件因其稳定性和跨平台兼容性而成为工作、学习和生活中不可或缺的文件格式。然而,随着文件内容的丰富,pdf文件的体积也日益增大,给存储和传输带来了不少困扰。本文将为你详细介绍多种实用的pdf文件压缩方法&…

怎样在 PostgreSQL 中优化对 UUID 数据类型的索引和查询?

文章目录 一、UUID 数据类型概述二、UUID 索引和查询的性能问题三、优化方案(一)选择合适的索引类型(二)压缩 UUID(三)拆分 UUID(四)使用覆盖索引(五)优化查询…

AutoHotKey自动热键(五)添加WINDOWS秘笈指令-输入瞬间启动功能

在AUTOHOTKEY的使用中,不仅仅可以监听组合热键,还可以监听正常文本击键录入,这是另一种监听方式,比如依次击键jsq之后直接弹出<计算器>工具,或者依次击键sj之后直接输出135****5564的手机号码,等等,这就是autohotkey的录入击键监听,以双冒号为开头:: 因这种录入监听像极了…

Vue3使用ref绑定组件获取valueRef.value为null的解决

问题&#xff1a; onMounted(() > {nextTick(()>{console.log(treeselectRef, treeselectRef.value);console.log(treeselectRef.value, treeselectRef.value);}); });输出&#xff1a; 查看绑定和定义都没有问题&#xff0c;还是获取不到 解决&#xff1a;使用getCur…

transformer网络学习

Transformer encoder-decoder模型之间共享的是Encoder最后一层输出的hidden-state。 GitHub - huggingface/transformers: &#x1f917; Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX. Bert2Bert中&#xff0c;Encoder的hidden-state同…

变阻器的分类

变阻器作为用于调节电路中电阻值的电子元件&#xff0c;在电子电路中具有广泛的应用。根据不同的工作原理和结构形式&#xff0c;变阻器可以分为多种类型。以下是对变阻器分类的详细阐述&#xff1a; 一、按工作原理分类 电位器是一种通过滑动端位置调节电阻值的变阻器&#x…

移动公厕有无人显示屏为何多采用RS485、IO信号通讯方式

在户外活动、临时集会或是应急情况下&#xff0c;移动公厕作为解决人们生理需求的重要设施&#xff0c;发挥着不可替代的作用。然而&#xff0c;随着人口密度的增加和对公共卫生要求的提高&#xff0c;如何确保移动公厕的高效利用和良好维护&#xff0c;成为了组织者和管理者面…

大模型2024的问题在哪里?

自从大模型吹响新一轮技术革命的号角后&#xff0c;整个行业各个层次都面临大模型带来的范式转换。我今年在 4 月份上海举办的全球机器学习技术大会上演讲时曾提出&#xff0c;大模型为计算产业带来了计算范式、开发范式、交互范式的三大范式改变。今天是软件研发技术大会&…

使用jdk11运行javafx程序和jdk11打包jre包含javafx模块

我们都知道jdk11是移除了javafx的,如果需要使用javafx,需要单独下载。 这就导致我们使用javafx开发的桌面程序使用jdk11时提示缺少javafx依赖。但这是可以通过下面的方法解决。 一,使用jdk11运行javafx程序 我们可以通过设置vmOptions来使用jdk11运行javafx程序 1,添加j…

uniapp版即时通讯软件 IM社交交友聊天系统 语音视频通话双端APP 聊天交友APP源码 (含搭建教程)

修复音视频&#xff08;官方团队插件&#xff0c;无二次费用&#xff09;&#xff0c;文件发送&#xff0c;公告&#xff0c;签到&#xff0c;发现页&#xff0c;朋友圈删除&#xff0c;轮询客服&#xff0c;马甲等 可内嵌第三方网页连接&#xff0c;后台添加&#xff0c;带完…

Monaco 中添加 CodeLens

CodeLens 会在指定代码行上添加一行可点击的文字&#xff0c;点击时可以触发定义的命令&#xff0c;效果如下&#xff1a; 通过调用 API 注册 LensProvider&#xff0c;点击时触发 Command&#xff0c;首先要注册命令&#xff0c;通过 editor.addCommand () 方法进行注册。三个…

22.状态机设计--可乐机设计(投币三元出一瓶可乐)

理论知识&#xff1a; &#xff08;1&#xff09;状态机简写为FSM&#xff08;Finite State Machine&#xff09;&#xff0c;也称为同步有限状态机。同步是指状态的变化都是在时钟的边沿发送变化&#xff0c;有限值得是状态的个数是可数的。 &#xff08;2&#xff09;分类&…

springboot封装请求参数json的源码解析

源码位置&#xff1a; org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver#readWithMessageConverters(org.springframework.http.HttpInputMessage, org.springframework.core.MethodParameter, java.lang.reflect.Type…

计算机视觉研究方向初学习,计算机视觉都有什么方向??!到底是干什么的?!

计算机视觉研究方向初学习&#xff0c;计算机视觉都有什么方向&#xff1f;&#xff1f;&#xff01;到底是干什么的&#xff1f;&#xff01; 语义分割图像分类目标检测和定位实例分割、全景分割物体跟踪姿态估计人脸识别人体识别图像增强风格迁移图像生成视觉问答视频分析光学…

初探ethercat IGH协议栈(交叉编译)

说明&#xff0c; 1&#xff09;不要着急编译&#xff0c;建议读完全文&#xff0c;再参照编译&#xff1b; 2&#xff09;IGH编译是需要Linux内核源码的&#xff0c;还有打rt补丁&#xff1b; 3&#xff09;依赖的内核版本最好是目标设备的一样&#xff1b; 4&#xff09;…

“爆炸性更新!JDK 17携全新语法特性强势来袭,开发者必看的升级亮点“(1)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;Java进化论 目录 背景 yield关键字 var关键字 空指针异常 密封类 接口中的私有方法 instanceof关键字 背景 Java 8 虽然曾经是使用…