【视觉SLAM十四讲】学习笔记-第二讲
其他章节:
第二讲:初识SLAM
初识SLAM
SLAM(Simultaneous Localization and Mapping),同时定位与地图构建。它是指搭载特定传感器主体,在没有环境先验信息的情况下,于运动过程中建立环境模型,同时估计自己的运动。
相机介绍
单目相机:即一个摄像头,这种传感器结构简单,成本低;缺点是但是它以二维的形式反映了三维的世界,丢掉了深度,因此平移之后才能计算深度,但仍然无法确定真实尺度。
双目相机:由两个单目相机组成,但两个相机之间的距离(基线)已知,因此我们通过基线来估计每个像素的空间位置。它的缺点是配置与标定均较为复杂,其深度量程和精度受基线和分辨率所限;并且视差的计算非常消耗计算资源。
深度相机:通过红外结构光原理,测出物体与相机之间的距离,因此可以节省大量的计算;但目前多数深度相机还存在测量范围窄、噪声大、视野小、易受日光干扰、无法测量透射材质等诸多问题。
经典视觉SLAM框架
1.传感器信息读取。在视觉SLAM中主要为相机图像信息的读取和预处理。如果是在机器人中,还可能有码盘、惯性传感器等信息的读取和同步。
2.视觉里程计(Visual Odometry, VO)。估算相邻图像间相机的运动,以及局部地图的样子。
VO能够通过相邻帧间的图像估计相机运动,并恢复场景的空间结构,它和实际的里程计一样,只计算相邻时刻的运动。但是由于里程计的工作方式,导师误差会传递,形成累计漂移。
3.后端优化(Optimization)。后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化,得到全局一致的轨迹和地图。
主要指SLAM过程中噪声的问题。后端优化要考虑的,就是如何从有噪声的数据中估计整体系统的状态,以及这个状态估计的不确定性有多大(最大后验概率估计MAP)。
4.回环检测(Loop Closing) 。回环检测判断机器人是否到达过先前的位置。如果检测到回环,它会把信息提供给后端进行处理。
主要解决位置估计随时间漂移的问题。通过识别到过的场景,并把“A与B是同一个点”的信息告诉后端优化算法;然后后端根据这些新的信息,把轨迹和地图调整到符合回环检测结果的样子。这样,如果我们有充分而且正确的回环检测,就可以消除累积误差,得到全局一致的轨迹和地图。
5.建图(Mapping)。它根据估计的轨迹,建立与任务要求对应的地图。.
大体分为度量地图和拓扑地图。度量地图强调精确地表示地图中物体的位置关系,通常用稀疏与稠密对其分类。稀疏地图并不需要表达所有的物体;稠密地图着重于建模所有看到的东西。拓扑地图更强调地图元素之间的关系。拓扑地图由节点和边组成,只考虑节点间的连通性。
SLAM问题的数学表述
若机器人在离散时刻t=1,...,kt=1,...,kt=1,...,k中的位置为x=x1,...,xkx=x_1,...,x_kx=x1,...,xk,那么从k−1k-1k−1时刻到kkk时刻,机器人的位置可以抽象成一个运动方程:xk=f(xk−1,uk,wk)x_k=f(x_{k-1},u_k,w_k)xk=f(xk−1,uk,wk)。其中,uku_kuk是运动传感器读数(输入),wkw_kwk为噪声
假设地图中有NNN个路标y1,...,yNy_1,...,y_Ny1,...,yN,当机器人在xkx_kxk位置上看到某个路标点yjy_jyj,产生了一个观测数据zk,jz_{k,j}zk,j,同样可以抽象成一个观测方程:zk,j=h(yj,xk,vk,j)z_{k,j}=h(y_j,x_k,v_{k,j})zk,j=h(yj,xk,vk,j)。其中,vk,jv_{k,j}vk,j是这次观测里的噪声。
实践部分
使用的vm虚拟机,ubuntu20.04版本。
首先是基础的创建文件(vim记得要sudo权限,第一次没加没法写入。)
书里示例程序:
使用g++编译,并运行out文件:
为了便捷管理未来的项目,书里介绍了cmake生成makefile
使用命令sudo cmake .
编译
生成的Makefile可以用make
命令进行
这一节都是基础,之前基本都用过学过,包括后面的库函数之类的,不多写了
【视觉SLAM十四讲】学习笔记-第二讲相关推荐
- 视觉SLAM十四讲学习笔记-第二讲-开发环境搭建
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 lin ...
- 视觉SLAM十四讲学习笔记-第二讲-初识SLAM
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 "定位"和"建图",可以看成感知的"内外之分". ...
- 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-三角测量和实践
专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第 ...
- 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-对极几何和对极约束、本质矩阵、基础矩阵
专栏系列文章如下: 专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLA ...
- 视觉SLAM十四讲学习笔记---前三讲学习笔记总结之SLAM的作用、变换和位姿表示
经过半年学习SLAM相关知识,对SLAM系统有了一些新的认识,故回看以前的学习记录,做总结和校正. 前三讲学习笔记如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉S ...
- 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-特征点法和特征提取和匹配实践
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM十四讲学习笔记-第六讲-非线性优化的实践-高斯牛顿法和曲线拟合
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM十四讲学习笔记-第六讲-非线性优化的非线性最小二乘问题
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM十四讲学习笔记-第六讲-非线性优化的状态估计问题
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM十四讲学习笔记-第四讲-Sophus实践、相似变换群与李代数
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
最新文章
- Swift 中使用 SQLite——批量更新(事务处理)
- 计算机视觉顶会上的灌水文都有哪些特征?
- SAP Link Between Material Document and Accounting Document Table
- mysqld与mysqld_safe的区别
- IHostingEnvironment VS IHostEnvironment - .NET Core 3.0中的废弃类型
- apache+tomcat配置
- windows 弹shell_Windows系统常用免费软件“红黑榜”
- AI+BI,真的如想象中的那么美好吗?
- Halcon 一维码(条形码)
- watson语音识别下载
- MVI - 继续来凑个热闹
- JAVA中数组和集合的区别
- html中怎样设置邮件地址,我该如何为自己的域名设置邮箱地址呢?
- 机器学习系列文章:Apriori关联规则分析算法原理分析与代码实现
- c语言舍弃字符串的前一部分,C语言札记
- Theil-Sen Median斜率估计和Mann-Kendall趋势分析:以多年NPP数据为例
- poi 启用保护后取消_关于POI锁定保护Excel表格后的操作
- 《周志明的软件架构课》学习笔记 Day13
- android梅花形布局,技法介绍——画梅花时的布局
- 电脑diy配件产品导购,装机硬件资讯