学习记录-视觉SLAM十四讲第2版(二)
文章目录
- 前言
- 一、问题是什么?
- 二、工具是什么?
- 1.分类
- 2.三种相机
- (1)单目相机
- (2)双目相机
- (3)深度相机
- 三、流程是什么?
- 1.总的流程框架
- 2.每个步骤说明
- 3.补充
- 四、尺度不确定性
- 总结
前言
日常学习的记录,今天主要是对SLAM第二讲的一些概念和基础知识过了一遍,对SLAM的大致情况有了了解。这里主要总结2.1和2.2的内容,至于2.3,我看了一遍还是很晕,也看了一些相关的学习视频是建议先跳过2.3,因此下一次就把2.4和习题放一块写出来,希望有一起学习的人相互交流下。
一、问题是什么?
SLAM主要需要解决的问题就2个:定位和构图
二、工具是什么?
1.分类
根据是否在移动设备自身上,分为内部传感器和外部传感器这两大类。
内部传感器:轮式编码器、相机、激光雷达、IMU、GPS等;
外部传感器:导轨、二维码等
由于外部传感器对环境有要求,都是需要提前设置的,因此SLAM主要研究的还是适合未知环境的内部传感器,尤其是视觉SLAM,主要使用的就是各种相机。
2.三种相机
主要用到的相机分为单目相机、双目相机和深度相机。
(1)单目相机
只有一个摄像头的即为单目相机,由于单目相机通过单张图像无法确定深度,因此存在尺度不确定性,所以单目相机在SLAM中的应用较少。
(2)双目相机
双目相机由两个单目相机组成,利用两个相机之间的距离也即基线已知的条件,从而可以进行深度估计,但计算十分消耗计算资源,计算量是双目的主要问题之一。
(3)深度相机
也称为RGB-D相机,通过结构光或TOF的方法对深度进行物理测量,与双目相比可以节约大量计算资源,但存在测量范围窄、噪声大、视野小、易受日光干扰、无法测量透视材质等问题。目前主要运用于室内。
三、流程是什么?
1.总的流程框架
主要的视觉SLAM经典框架:
2.每个步骤说明
(1)传感器数据:也即传感器信息读取,主要是对各种传感器信息的读取和同步,不过在视觉SLAM中主要是读取相机的数据并进行预处理。
(2)前端视觉里程计:估算相邻图像间相机的运动,以及局部地图的样子。
(3)后端非线性优化:后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信心,并进行优化,得到全局一致的轨迹和地图。
(4)回环检测:判断机器人是否到达过先前的位置。如果检测到则将信息提供给后端进行处理。
(5)建图:根据估计的轨迹,建立与任务要求对应的地图。
3.补充
(1)后端优化和回环检测是为了解决前端视觉里程计每次估计所产生的误差问题,如果不解决则会出现累计漂移的问题。回环检测负责确定回到了原始位置,后端优化根据这个信息对整个轨迹进行调整,保持一致性。
(2)建图的种类可以分为度量地图和拓扑地图2种。度量地图强调精确表示地图中物体的位置关系,并就是否表达所有物体分为稀疏地图和稠密地图;拓扑地图强调地图元素之间的关系,由节点和边组成,只考虑节点间的连通性。
四、尺度不确定性
问题:重新看单目相机的内容,发现还是不大理解尺度不确定性,因为在我看来单目相机移动后不就是双目相机了么?为什么还会有尺度不确定性的存在。
回答:认真搜索和研读了一些资料,尤其是高翔博士的解释后我才明白,的确单目相机可以通过平移来计算深度,但由于平移的这段距离我们是不清楚的,具体操作过程中把平移的这段距离当作1个单位来计算,从而得到的深度也就是以这个1为尺度的相对距离。它与真实距离中存在一个比例关系,这个比例也就是尺度。因此平移的这段距离到底大还是小单纯从照片上是无法判断的,因此也就有尺度的不确定性。正如奥特曼的拍摄一样,通过同步缩放事物的尺度和相机平移的距离,可以拍出来同样的效果图。(这件事情的确让人好伤心)
参考:高翔博士的回答
总结
以上就是今天要讲的内容,本文对视觉SLAM十四讲的第二讲中的2.1和2.2的内容进行了总结和回顾。
学习记录-视觉SLAM十四讲第2版(二)相关推荐
- 高翔视觉SLAM十四讲(第二版)各种软件、库安装的以及报错解决方法
目录 前言 系统版本 下载高翔视觉SLAM十四讲第二版的源代码 一.安装 Vim 二.安装 g++ 三.安装 KDevelop 以及汉化 1.安装 2.汉化 四.安装 Eigen 库 五.安装 Pan ...
- 《视觉SLAM十四讲》第二版源码slambook2编译调试
slambook2-master/ch2 编译正常,log如下: slambook2-master/ch2# mkdir build && cd build && cm ...
- 视觉SLAM十四讲(第二版)环境安装心得体会
前言 将高博的视觉SLAM14讲(第二版)看完后,也将里面所有的代码都跑了一遍,在安装环境的时候遇到了无数的坑.为了后来的人能够更加快速上手SLAM,现将书中环境安装心得记录如下. 环境安装 1. 安 ...
- 视觉SLAM十四讲CH6代码解析及课后习题详解
gaussNewton.cpp #include <iostream> #include <chrono> #include <opencv2/opencv.hpp> ...
- 视觉SLAM十四讲(高翔第二版)
视觉SLAM十四讲高翔第二版调试记录 前言 一.3.7可视化演示程序运行全过程Pangolin plotTrajectory.cpp 1. **在3rdparty中下载Pangolin** 2. ** ...
- 《视觉SLAM十四讲 第二版》课后习题
本文为<视觉SLAM十四讲>(第二版)的课后习题解答,为本人学习时参考着网上的资源所写的答案,可能有所纰漏,希望大家指出. 文章目录 第1讲 预备知识 第2讲 初始SLAM 第3讲 三维空 ...
- 视觉SLAM十四讲CH10代码解析及课后习题详解
g2o_viewer问题解决 在进行位姿图优化时候,如果出现g2o_viewer: command not found,说明你的g2o_viewer并没有安装上,打开你之前安装的g2o文件夹,打开bi ...
- 视觉SLAM十四讲CH8代码解析及课后习题详解
第一版的代码: direct_semidense.cpp #include <iostream> #include <fstream> #include <list> ...
- 视觉SLAM十四讲学习记录 第五讲
之前第四讲的地址 以及第四讲习题的地址 第五讲 相机与图像 前面两讲中,我们介绍了"机器人如何表示自身位姿"的问题,部分地解释了SLAM经典模型中变量的含义和运动方程部分.本讲 ...
最新文章
- python二元函数求导_用Excel和python实现二元函数梯度下降的人工智能,之用,excel,一元...
- Mask-RCNN论文解读
- 优化C代码常用的几招
- linux 内核 初始化失败,300分求内核初始化及启动中出现的问题,
- rqnoj 496 [IOI1999]花店橱窗布置 (简单dp)
- Navicate Premium不能用localhost和127.0.0.1登陆sql-server,解决方法
- kindle 3快捷键
- Swift之源码编译的环境搭建和编译流程
- asp.net mvc web api 参数输入多个参数
- SUSE10下配置FTP服务
- templatefield 动态_GridView动态创建templateField | 学步园
- 比较各种SpA分类标准
- 一年级下册健康教育教案
- “数据折叠:那些AI背后“标数据的人”正在回家
- 今日头条推荐算法原理全文详解之二
- c++ ado连接mysql数据库_c++通过ADO连接数据库
- Partial Dependence Plots - 部分依赖图实践
- Maven-POM.xml
- 通俗易懂_汉诺塔(java递归实现)
- 任志强:房地产是夜壶 宏观经济不行就拿出来用