SLAM定义
SLAM Simultaneous localization and mapping
同时定位(我在哪里)与建图(我周围有什么)
当某种移动设备(汽车,扫地机,手机,无人机,机器人)从一个未知环境的未知地点出发,在运动过程中,通过传感器(相机/雷达)观测定位自身位置,姿态,运动轨迹,根据自身位置进行增量式地图构建 ,从而达到同时定位于地图构建的目的。
SLAM的应用
定位:定位建图,室内无GPS,救援,军事观察。
扫地机器人,无人室内场景建图。宾大。仓储机器人(AGV automated guided vehicle)
建图:小尺度,单个物体扫描建图数字化。大尺度,建筑物内、场景建图建模。机器人理解环境。大场景AR游戏(见到棚顶一些玩法)。室内导航互动娱乐(桌子上面各种玩法)三维全景漫游(全景相机采集之后建图)。
SLAM技术框架
传感器:激光(2D,3D)计算量小,准确率高,贵,体积大
视觉(单目,双目,RGB-D相机,全景相机)便宜,体积小,信息丰富,计算量大,易干扰
单目相机:成本低,距离不受限,尺度不确定,依赖纹理光照
双目相机:被动算深度,距离不受限,计算量大,依赖纹理光照
RGB-D: 主动算深度,高帧率高精度,量程受限,不适合室外,受材质干扰
视觉里程计:
根据图像定量估算帧间相机的运动。后端优化,优化前端计算的位姿,减少漂移。
建图:
2D/3D,稀疏/半稀疏/稠密
回环检测:
认识自己曾经去过的地方,消除累积误差。
SLAM优秀开源框架
稀疏地图:
ORB SLAM v2 https://github.com/raulmur/ORB_SLAM2
半稠密地图
LSD SLAM(单双目,RGB-D) https://github.com/tum-vision/lsd_slam
DSO(单目) https://github.com/ziyan-wyq/dso
稠密地图
Elastic Fusion(RGB-D) https://github.com/ziyan-wyq/ElasticFusion
Bundle Fusuib(RGB-D)https://github.com/ziyan-wyq/BundleFusion
InfiniTAM V3 (RGB-D)https://github.com/ziyan-wyq/InfiniTAM
多传感器融合
VINS-Fusion 单目IMU https://github.com/ziyan-wyq/VINS-Fusion
OKVIS (单双目+IMU) https://github.com/ziyan-wyq/okvis
Cartographer (LIDAR+IMU )https://github.com/ziyan-wyq/cartographer
V-LOAM (LIDAR 单双目) https://github.com/ziyan-wyq/loam_velodyne 视觉可以为雷达获得更好的点云深度,视觉也可以为雷达提供扫描匹配的运动先验
VI-LOAM (单双目 IMU LIDAR)
LIMO (Lidar 单目)https://github.com/johannes-graeter/limo
https://arxiv.org/pdf/1807.07524.pdf
ElasticFusion https://github.com/mp3guy/ElasticFusion
SLAM vs 深度学习
深度学习在检测,识别领域无比强大
SLAM多 视角几何为基础,需要明确理论保证
深度学习的黑盒子模型在解决SLAM几何问题上不太奏效。