视觉SLAM是一种基于视觉相机传感器的SLAM 系统,与激光雷达传感器相比,视觉传感器具有成本低,能够获取环境语义信息的优点,可以与深度学习(Deep Learning,DL)进行大量结合。
结合方向
DL与SLAM的结合大致分为3个思路:
- 用DL实现SLAM的所有功能
- 用DL改进SLAM的部分功能
- 介于思路1和思路2之间
第1种思路就是简单粗暴地用DL直接实现SLAM,也就是所谓的端到端方法(End-to-End),输入连续帧图像,经过网络直接得到pose信息,例如D3VO、UnDeepVO和NeuralRecon就是典型代表。
第2中思路是用DL改进SLAM中的个别功能模块,比如基于DL方法的特征匹配、重定位、深度估计等,比如CNN-SLAM就是典型代表。例如Magicleap团队用SuperPoint和SuperGlue进行特征点的提取和匹配,普林普顿Jia Deng团队的RAFT光流,DroidSLAM主要用学习的方法进行BA,类似工作还有BANet;还有一些工作用深度学习来做场景识别,可以用来SLAM中的回环检测阶段。
更多的是介于思路1和思路2之间的方法,利用深度学习的其他模块来提取一些更高级的语义特征。包括:端到端视觉里程计、端到端建图、端到端定位导航、语义SLAM。
具体工作
- 结合YOLOv5目标检测,动态物体特征点剔除
- DL进行深度估计
- CNN提取特征点和描述子,并降低网络参数
- 语义地图构建
- MobileNetv3-KPCA回环检测
视觉SLAM框架
视觉SLAM可采用开源的ORB-SLAM3,支持视觉、视觉加惯导、混合地图的SLAM系统,可以在单目,双目和RGB-D相机上利用针孔或者鱼眼模型运行。
目标检测网络
目标检测可采用YOLOv5,将PyTorch格式的模型转换为TorchScript,使用LibTorch库进行部署,实现将目标检测整合到以C++为主要编程语言的SLAM系统中。