关于视觉SLAM的一些常识(纯小白学习笔记)

2023-05-16

本文只是小白对于视觉slam的一个非常泛的介绍,对于视觉slam中的数学运算均没有提及,适合于对没有接触过视觉slam的新人进行一个简单的科普。作者即小白,文章如有错误,非常非常非常欢迎指正!(重要的事说三遍)
注:文中相机模型图片借用了高翔博士的ppt内容

视觉slam从根本上其实就是为了回答两个问题,机器人在哪,机器人所处的环境是什么样的。这其实和人进入一个陌生的环境时所思考的问题非常相似。比如我们被拉进了一个陌生的屋子,我们会首先观察这个屋子,观察我们处在一个什么样的环境之中,接下来我们就会思考我们这是在哪。机器人同样如此,我们是通过眼睛、大脑来完成,而机器人就是利用摄像头和处理器来实现。
视觉SLAM分为三大主要模块:前端的视觉里程计,后端优化,回环检测。做完这些,就可以进行建图的工作了,也就是我们常说的三维点云图。前端视觉里程计的作用,简而言之,第一是要根据摄像头回传的图像计算相机的帧间运动,第二就是估计路标点大致的空间位置坐标。后端优化的作用就是根据前端在不同时刻计算的相机位姿计算最大后验概率估计,可以起到状态预测的作用。回环检测的作用显而易见,当摄像头在环境中到达了自己曾经先前到达过的位置后,因为传感器和计算过程存在误差,所以通常建立出的点云图都不能做到曲线闭合。回环检测的功能便是判断相机是否回到过先前位置,从而修正误差,保证点云图与实际空间的理想。
从前端视觉里程计讲起。
图像用什么摄像头获取? 
1.单目相机      优点:便宜啊      缺点:初始化非常不精确,容易Tracking Lost;  存在尺度不确定的问题,比如丢失深度信息的相片中,我们能见到“手捏太阳”“借位拍照”这样的现象。
2.双目相机       优点:被动测量深度,即可以通过计算获得物体的深度(距离相机的前后距离)     缺点:计算量大,在特征少的白墙、沙漠等环境很容易Tracking Lost。
3.RGB-D相机    优点:利用传感器主动测量深度,TOF相机更是被称为相机的未来。建图准确,不易Tracking Lost           缺点:受阳光,墙面反光等影响

相机的帧间运动用什么描述?
1.旋转矩阵、平移矢量   2.四元数    3.欧拉角   
这些都是描述刚体在三维空间中运动的方式,具体有什么运算规则或者几何意义,这篇就不详细讲了,我这个小白也讲不清楚,毕竟自己都不太明白2333

怎么通过图像计算帧间运动?       
1.相机模型:针孔相机模型



2.视觉里程计中最基本的问题就是给定两个已经成功匹配的空间点在相机平面内投影的坐标,如何计算相机在这两个观察点之间的运动状态。
怎么进行点的匹配?
每帧图像包含的信息:关键点、描述子。关键点是图像信息最集中的部分。描述子是用于区别每个特征点的信息,用于不同帧图像间同一对特征点的匹配。

特征点匹配算法:ORB、SIFT、SURF 等。
怎么计算两点间的运动状态?
1)计算方法:对极几何方法、PnP方法、ICP方法。
对极几何方法:知道两组像素的位置,估计相机运动状态。  每两个成功匹配的点可以 提供一对对极约束,提供八个点就可以计算出本质矩阵(八点法),对本质矩阵进行SVD分解就可以解出相机运动的旋转矩阵R和平移矢量t。
PnP方法:知道一组匹配点的空间位置和在相机平面的投影位置,估计相机运动状态。
ICP方法:知道两组点的空间位置,估计相机运动状态。
2)优化方法:BA优化。BA优化是利用迭代法(牛顿迭代、列文伯格-马克尔特迭代法等)对R,t的值进行多次迭代使得误差值最小化。

后端优化部分(多为一些比较成熟的算法)
主要方法:
1、基于滤波器  :KF、EKF
2、基于非线性优化:图优化、因子图

EKF:将系统线性化,用高斯分布近似观测噪声,并利用卡尔曼滤波进行状态更新。

图优化:给定初值后不断迭代更新图,主要利用的是g2o库
回环检测部分
作用:当相机在空间中运动的时候,很有可能出现相机所在的点在之前到达过的情况。此时三维重建的点云图上,相机的运动轨迹应该是闭合的曲线。但是由于传感器存在误差,计算过程也有很大的误差,所以点云图上,相机的轨迹通常不闭合。词袋检测可以判断相机是否在曾经到达过当前点,如果到达过,则让点云图轨迹闭合。
实现方法:创建词袋,可以理解为一个袋子,这个袋子里装着每一帧图像中的特征元素。利用词袋比较每两帧图像的相似度,当相似度大于某一个阈值的时候,就认为这两幅图像是在同一点观测到的,相机回到了曾经到达过的位置。

视觉slam大概简介就这些,最近刚看完了lsdslam和orbslam的源码,有很多不懂的地方,等搞懂了里面的数学运算再写一写。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于视觉SLAM的一些常识(纯小白学习笔记) 的相关文章

  • DRV8833直流电机驱动模块代替 TB6612FNG电机驱动

    江科大自化协TB6612使用DRV8833代替 xff0c 以及使用方法 文章目录 前言一 两种模块对比二 HAL库驱动的使用步骤1 配置CubeMX 前言 购买了国产DRV8833模块驱动直流电机 xff0c 单片机3 3V的GPIO口无
  • Spring boot Json字符串传输 " 转义问题解决

    在接收前端返回过来的json字符串时 xff0c 发现出现 34 被转义的情况 xff0c 这里记录下解决方式 xff0c 获取到json字符串的时候我们可以使用工具类去进行转就可以了 xff0c 使用 org apache commons
  • 计算机三级Linux应用与开发技术

    第1章 计算机体系结构与操作系统 一 选择题 1 操作系统负责管理计算机系统的 xff08 C xff09 xff0c 其中包括处理器 储存器 设备和文件 A 程序 B 文件 C 资源 D 进程 2 操作系统是一种 xff08 B xff0
  • Linux 命令 cp mv 花括号用法

    Linux 命令行使用 mv 重命名文件时 xff0c 巧妙的使用 可以很方便 xff0c 最常见的就是把一个文件加个后缀临时备份 例如 xff1a span class token function mv span files local
  • FreeRTOS的调度器源码分析及系统滴答SysTick

    1 PendSV系统调用 查遍了C站上所有关于FreeRTOS调度器的分析 xff0c 发现大家分析完vTaskStartScheduler 之后就戛然而止了 xff0c 我就会比较迷糊 xff0c 这个仅开启了调度器的调度 xff0c 而
  • 从零适配IMX6ULL开发板Linux系统——uboot移植

    串口驱动搜 CP210 下载 目的 xff1a 当拿到一块儿完全没有系统的开发板 xff0c 厂家并没有提供给我们对应的Linux系统 xff0c 从芯片厂家提供的原厂资料中 xff0c 修改并适配自己的开发板 我们需要做的步骤如下 xff
  • NXP IMX6ULL芯片时钟系统全概况

    本文主要针对IMX6ULL芯片的时钟系统进行分析 xff0c 并没有针对哪款开发板 xff0c 毕竟是芯片的问题 一 硬件原理图分析 对于IMX6ULL芯片有两个时钟源 xff0c 我使用的开发板是百问网IMX6ULL xff0c 其他IM
  • 【FreeRTOS】FreeRTOS内存管理的五种方式

    内存管理 1 FreeRTOS为什么要实现自己的内存管理 内存的动态管理是C语言程序的知识范围 xff0c 并不属于FreeRTOS的知识范畴 xff0c 但是它跟FreeRTOS关系是如此紧密 在C语言的库函数中 xff0c 有mallc
  • 【存储】存储特性

    存储特性 精简配置技术 xff08 SmartThin xff09 SmartThin主要功能容量虚拟化存储空间写时分配 xff1a Capacity on Write读写重定向 xff1a Direct on Time应用场景及配置流程
  • 【存储】RAID0、RAID1、RAID3、RAID5、RAID6、混合RAID10、混合RAID50

    存储 RAID基本概念RAID数据组织形式RAID数据保护方式常用RAID级别与分类标准创建RAID组成员盘要求 热备盘 xff08 Hot Spare xff09 RAID 0的工作原理RAID 0的数据写入RAID 0的数据读取 RAI
  • 【存储】RAID2.0+、多路径技术、磁盘可靠性技术

    RAID2 0 43 RAID 2 0 43 技术RAID技术发展RAID 2 0 43 软件逻辑对象RAID 2 0 43 基本原理硬盘域Storage Pool amp TierDisk Group xff08 DG xff09 LD
  • http请求digest auth认证

    1 post请求 public static String postMethod String url String query String host throws IOException String content 61 null 认
  • npm install 报错? fs 不能被resolve ?

    先看一下报错信息 然后我按照他的提示去 node modules 里面找到对应文件 xff0c 注释掉 fs 相关就ok了 可是这样毕竟不雅 经过苦苦寻找 xff0c 终于找到原因了 在 webpack config js 中添加如下 与
  • 树莓派3B+安装Ubuntu16.04系统(64位)

    目录 系统下载 Ubuntu16 04系统 补丁 刷系统 换源 改DNS网关 无线 U盘挂载 原文 系统下载 感谢公众号 xff1a 树莓派爱好者基地 更多系资源请关注公众号 Ubuntu16 04系统 链接 xff1a https pan
  • 将浏览器请求直接导入到 Postman Apifox 中

    方法就是如下图所示 xff0c 好像不需要过多文字来赘述了 应用场景就是浏览器 F12 debug 到的请求 xff0c 可以直接拷贝为 cURL 请求 xff0c 拷贝的内容 xff0c 包含了 请求头 参数 请求体所有内容 xff0c
  • SMPL-论文解读

    文章目录 创新点算法shape blend shape xff1a pose blend shapeJoint locationSMPL model 训练过程Pose Parameter Trainingjoint regressorSha
  • Jetson Xavier NX 刷机烧录及备份还原

    文章目录 前言一 准备二 详细流程1 准备OS升级包2 主机和Jetson产品连接3 系统安装4 载入镜像5 提取 Jeston Xavier NX 母板镜像5 1 在PC端搭建烧录环境5 2 提取镜像 6 镜像还原 xff08 批量复制烧
  • 第二章.1节 进程基本概念

    xff08 PS xff1a 个人课下整理的操作系统笔记 xff0c OneNote直接拷贝过来的 xff0c 图片看不了就将就一下 xff0c 配合张伟老师的PPT看效果更好 xff09 一 进程定义 1 进程是具有某一个功能的程序 在某
  • 使用bladeRF和树莓派+YateBTS做GSM基站

    个人出于对无线电的好奇加入了gnuradio的学习 本次测试是基于以下链接网址内容进行的相关测试 xff1a https www freebuf com geek 102729 html 我的安装步骤是一个大神给我找的 xff1a http
  • linux中使用crontab添加定任务执行失败,提示Permission denied

    问题 xff1a 在linux中 xff0c 使用普通账户创建定时任务执行shell脚本时 xff0c 任务会自动执行 xff0c 但总执行失败 xff08 shell脚本编写确认无误 xff09 如下 xff1a 使用sudo cront

随机推荐

  • Win10 USB转串口连接Linux主机调试

    先梳理一下Linux里的console和tty这两个概念 xff1a Console 控制台 xff0c 用于接收所有的内核消息 xff0c 告警 xff0c 允许用户log in 只有text模式 xff0c 也就是说 xff0c 用户通
  • FreeRTOS:卡在configASSERT( ( pxQueue ) )问题的解决

    使用二值信号量过程中 xff0c 刚开始程序还是正常运行 xff0c 一段时间后出现了死机 通过仿真发现程序卡在了 xQueueSemaphoreTake 函数的 configASSERT pxQueue 中 通过查看 xQueueSema
  • 记录复现“VIBE”遇见的BUG

    docker配置 xff1a ubuntu18 01 xff0c cuda10 1 输入视频测试demo时 xff0c 依次遇见下列问题 第一个问题 39 EGL span class token punctuation span cann
  • 软件专业大学生常用的刷题、找答案、找资源的网站

    接下来介绍的主要是结合个人和身边同学经常使用的几个网站 xff0c 肯定有很多不全 xff0c 欢迎大佬们查漏补缺 刷题 一 牛客网 xff08 https www nowcoder com xff09 牛客网 是一个专注于程序员的学习和成
  • Linux设备驱动

    Linux设备驱动 介绍 Linux系列文章记录自己学习Linux开发的历程 最近终于把迅为4412开发环境搞定了 xff0c 先吐槽一波迅为 xff0c 版本太 的多了 xff0c 安卓Linux搞在一起 xff0c 还有那个硬件原理图
  • Linux 磁盘坏块修复处理(错误:read error: Input/output error)

    当磁盘出现坏块时 xff0c 你对所关联的文件进行读取时 xff0c 一般会出现 read error Input output error 这样的错误 反过来讲 xff0c 当你看到 read error Input output err
  • docker给运行中的容器添加端口映射

    问题描述 docker上面运行容器 xff0c run p 的时候只映射了一个端口 xff0c 后面对该nginx做扩展 xff0c 需要开放其他端口 当然重新再启一个容器在docker启动参数里多配置几个 p端口映射是能解决的 xff0c
  • Git常用命令符

    1 强制推送 xff08 慎用 xff0c 除非你认为其他冲突等可以丢弃 或者不是很重要 xff09 git push force 2 创建文件等小命令 touch a 创建一个a文件 echo 1234 gt gt a 把1234这个内容
  • 全网最全的 LeetCode 国人大神刷题指南,全部 Go 语言实现

    大家好 xff0c 我是欧盆索思 xff08 opensource xff09 xff0c 每天为你带来优秀的开源项目 xff01 说到 LeetCode xff0c 作为一个程序员来说 xff0c 应该不陌生 xff0c 近几年参加面试都
  • ROS实现串口通信

    虚拟串口的搭建 参考Linux下添加虚拟串口 xff0c 接收和发送数据 com py文件代码如下 xff1a span class token comment usr bin env python span span class toke
  • 基于Linux的UART驱动框架源码分析笔记

    文章目录 前言一 I MX6ULL串口接收和发送方式1 非DMA方式1 1 接收方式1 2 发送方式 2 DMA方式2 1 接收方式2 2 发送方式 二 UART驱动注册1 uart register driver 函数解析2 serial
  • cmake install 命令

    install指令用于定义安装规则 xff0c 安装的内容可以包括目标二进制 动态库 静态库以及文件 目录 脚本等 需要引入一个新的cmake指令和一个非常有用的变量 cmake install prefix 法一 xff1a cmake
  • 基于全景相机的视觉里程计算法研究

    一 视觉里程计 视觉里程计技术首先建立相机的成像模型 xff0c 接着通过标定算法计算相机参数 xff0c 最后建立相邻图像的关联并估计相机运动轨迹 1 1相机在空间中运动的描述 描述相机在三维空间中的运动状态 xff0c 即求解相机在空间
  • 多旋翼无人机组成(小白上路)

    1 无人机组成 1 1 机架 四旋翼最常见的两种机身布局如下图 xff1a 机架指无人机的承载平台 xff0c 通常用轴距衡量机架的大小 xff0c 轴距是指对角线两个螺旋桨的距离 xff0c 一般以mm为单位 xff0c 如F330表示轴
  • freertos创建任务后进入prvStartFirstTask发生HardFault_Handler中断

    在stm32f103zet6环境中移植成功freertos之后 xff0c 创建第一个任务之后 xff0c 会进入硬件中断 xff0c 经过排查发现死在了prvStartFirstTask 排查原因 xff1a 发现是启动文件startup
  • 解决无法对docker容器进行端口映射的问题

    初学docker的时候 xff0c 不知道为啥 xff0c 按着教程里打的代码 xff0c 最后却出现了映射失败的情况 即 xff1a 在docker内部设置的映射端口 xff0c 外部却没有办法访问 想了想 xff0c 不外乎两个原因 x
  • K8s手工创建kubeconfig

    我们通过 kubectl 命令行连接 k8s apiserver 时需要依赖 kubeconfig 文件 kubeconfig 文件通常包含了 context xff08 上下文 xff09 列表 xff0c 每个 context 又会引用
  • grep命令总结

    grep命令总结 1 关于 nbsp ps ef grep php grep v grep wc l grep v grep 代表在查询的最终结果中去掉grep命令本身 wc l 标示统计查询到的结果数量 grep常用命令 1 grep n
  • Ubuntu 16.04安装realsense D435i SDK以及realsense-ros

    先直接上一个报错信息 xff0c 折腾了半天才解决 在使用catkin make编译realsense ros时 xff0c 报错 traversing 4 packages in topological order realsense c
  • 关于视觉SLAM的一些常识(纯小白学习笔记)

    本文只是小白对于视觉slam的一个非常泛的介绍 xff0c 对于视觉slam中的数学运算均没有提及 xff0c 适合于对没有接触过视觉slam的新人进行一个简单的科普 作者即小白 xff0c 文章如有错误 xff0c 非常非常非常欢迎指正