2017.7.25报告:
一、邹丹平博士:视觉SLAM基础
1.主要内容:
1.1 SLAM大致可以分为激光SLAM
和视觉SLAM
两类,但其主要思路大同小异。
激光SLAM分为:2D和3D激光SLAM两种
视觉SLAM也分为:Sparse、semiDense、Dense三种
1.2 视觉SLAM目前由两个分支:分别是基于滤波器的视觉SLAM和基于(关键帧)图优化方法的视觉SLAM,目前基于图优化的方法占主导地位:
- 基于滤波器的SLAM:使用滤波器的方法,精度低,扩展性高
- 基于图优化的SLAM:使用优化的方法,精度高,但是由于加一个传感器就要改变优化函数,可扩展性不强
1.3 相机的畸变模型:
- model1:对于一般相机很精确,但是不支持鱼眼相机的校正
- model2:对于一般的相机效果都不太好,是在PTAM中使用的模型
model3:适用于鱼眼相机的校正
1.4 去除视觉里程计中图像之间的误匹配的点的方法:RANSAC和M-estimator
* RANSAC:可以在80%outlier情况下取得很好的效果,适合outlier较多和较少的情况,但是计算量较大。
* M-etimator:适合与outlier不多的情况,计算量较小。
1.5 key frame的选择方法:
* 距离上一关键帧有足够的距离
* 当前图像的清晰度高
* 当前帧与上一关键帧有一定数量的特征点重合
1.6 常用Bundle Adjustment(光束平差法)库
ORB—SLAM中的Bundle Adjustment中的库是g2o,但是sba,mcba的性能比g2o好。
-
sba: A Generic Sparse Bundle Adjustment C/C++
-
mcba: Multi-Core Bundle Adjustment (CPU/GPU). GPL3.
-
g2o: General Graph Optimization (C++) - framework with solvers for sparse graph-based non-linear error functions. LGPL.
-
Apero/MicMac, a free open source photogrammetric
software. Cecill-B licence. -
Package Based on the Levenberg–Marquardt Algorithm (C, MATLAB). GPL.
-
cvsba: An OpenCV wrapper for sba library (C++). GPL.
-
ssba: Simple Sparse Bundle Adjustment package based on the Levenberg–Marquardt Algorithm (C++). LGPL.
-
opencv: Computer Vision library in the contrib module. BSD license.
-
libdogleg: General-purpose sparse non-linear least squares solver, based on Powell’s dogleg method. LGPL.
-
ceres-solver: A Nonlinear Least Squares Minimizer. BSD license.
-
DGAP: The program DGAP implement the photogrammetric method of bundle adjustment invented by Helmut Schmid and Duane Brown. GPL.
1.7 CoSLAM: Collaborative visual slam in dynamic environments(多机器人slam)
具体介绍和源码见ppt