视觉slam14讲——第2讲 初识SLAM
来源:互联网 发布:h5场景节日软件 编辑:程序博客网 时间:2024/05/17 06:59
本系列文章是记录学习高翔所著《视觉slam14讲》的内容总结,文中的主要文字和代码、图片都是引用自课本和高翔博士的博客。代码运行效果是在自己电脑上实际运行得出。手动记录主要是为了深入理解
- 关于SLAM
- 关于相机
- slam框架
- slam问题数学描述
1 关于SLAM
slam问题的本质:对运动主体自身和周围环境空间不确定性的估计
尽可能使用不依赖于环境的传感器如laser、imu、camera等,而视觉SLAM主要解决问题是使用相机解决定位和建图问题
2 关于相机
单目相机(Monocular)
关键问题:无法得到深度。
单目slam估计的轨迹和地图和真实的相差一个尺度因子,也叫尺度不确定性双目相机(Stereo)
关键问题:配置与标定比较复杂,深度量程受双目的基线和分辨率限制,视差计算量大,需要使用GPU和FPGA加速。深度相机
关键问题:测量范围有限,容易受日光干扰,无法测量透射材质,主要用于室内。
我们之前机器人比赛经常用到kinect和xtion,上面的几个问题都是常见的,比如测量范围,比较蛋疼的就是这个,机器人看柱子,最远的那个有7米远,kinect就不行了……
3 slam框架
- 传感器数据
相机图像信息的读取和预处理 视觉里程计(VO)
解决问题:估算相邻图像间的运动,以及局部地图的样子,又称为前端。
解决方法:主要进行图像特征提取和匹配后端优化(Optimization)
解决问题:处理slam过程中噪声的问题。从带有噪声的数据中估计整个系统的状态,以及这个状态估计的不确定性有多大——称为最大后验概率估计(MAP),状态包括机器人的轨迹和地图
解决方法:滤波和非线性优化算法回环检测(Loop Closure Detection)
解决问题:位置估计随时间漂移问题,让机器有识别到过场景的能力。
解决方法:判断图像间的相似性建图(Mapping)
解决问题:构建地图描述机器人周围的环境
解决方法: 有多种地图
1 度量地图(Metric Map)
强调精确表示地图中物体的位置关系,有稀疏和稠密两类。
对定位来说,稀疏地图就可以了;对导航来说需要稠密地图
Location—Saprse Map
Navgation—Dense Map, 二维的用Grid表示,三维的用Voxel表示,常见导航算法A*, Dij2 拓扑地图(Topollogical Map)
强调地图元素之间的关系。
拓扑地图是一个Graph,由节点和边组成,只考虑节点之间的连通性。
4 slam问题数学描述
两个方程,运动方程和观测方程。
已知量:
运动测量读数
传感器读数 z
求解量:
定位问题x
建图问题y
这是一个状态估计问题——如何通过带噪声的数据估计内部的隐藏的状态变量。
按照运动和观测方程是否线性和噪声是否服从高斯分布分为四类
线性/非线性,高斯/非高斯
其中
- 线性高斯系统(Linear Gaussian–LG)
最简单,无偏最优估计使用KF解决 - 非线性非高斯系统(NLNG)
可以用滤波器(EKF、Particle Filter)和非线性优化(图优化Graph Optimization)两种方法
- 视觉slam14讲——第2讲 初识SLAM
- 视觉slam14讲——第11讲后端2
- 视觉slam14讲——第9讲 设计前端
- 视觉slam14讲——第10讲后端1
- 视觉slam14讲——第8讲 视觉里程计2
- 视觉slam14讲——习题部分
- 视觉slam14讲——第7讲 视觉里程计1
- 视觉slam14讲——第5讲 相机与图像
- 视觉slam14讲——第3讲 三维空间刚体运动
- 视觉slam14讲——第4讲 李群李代数
- 视觉SLAM14讲学习笔记
- 半闲居士视觉SLAM十四讲笔记(2)初识 SLAM- part 1 基础理论
- 《视觉SLAM十四讲》学习系列(1)—经典视觉SLAM框架
- 半闲居士视觉SLAM十四讲笔记(2)初识 SLAM- part 2 linux CMake、Kdevelop
- 《视觉SLAM十四讲》学习系列(2)—三维空间刚体运动
- 视觉SLAM十四讲调试
- 《视觉SLAM十四讲》内容摘要
- 《视觉SLAM十四讲》书籍图片资源
- sql语句实现对于分组语句的连接
- 随手记
- python dlib学习(二):人脸特征点标定
- PAT 甲 1014. Waiting in Line (30)(优先队列)
- 10.25
- 视觉slam14讲——第2讲 初识SLAM
- 20Python中的XML操作
- bfs简单题 迷宫问题
- linux中的列举多个连续数字的文件的表示方法讲解
- 构图规律
- spring aop学习4:织入原理
- 慎用alpha值——setAlpha与getBackground.setAlpha的差别
- 使用socket.io编程的简单聊天室
- 21Python中多线程的创建