啥是SLAM
SLAM的英文全名叫做Simultaneous Localization and Mapping,中文名是同时定位与建图,从字面上来看就是同时解决定位和地图构建问题。
定位主要是解决“在什么地方”的问题,比如你目前在哪国哪省哪市哪区哪路哪栋几号几楼哪个房间哪个角落。
建图主要是解决“周围环境是什么样”的问题
利用不同的传感器实现SLAM的方法不同,目前主流的传感器有激光雷达(LiDAR SLAM)、相机(Visual SLAM)和惯性测量单元(Visual-inertial SLAM)
当然,用相机作为传感器的话,还是有不同的方法,因为相机也有不同的种类,常见的有单目相机、双目相机和RGB-D相机。
视觉SLAM怎么实现
在高博《视觉SLAM十四讲》里的框图来说的话
首先通过传感器(这里利用的是相机)获取环境中的数据信息,也就是一帧一帧的图像,在前端视觉里程计中通过这些图像信息计算出相机的位置(准确来说是位姿,后面会细说)。
同时进行闭环检测,判断机器人是否到达先前经过的地方。然后利用后端非线性优化,对前端得出的相机位姿进行优化,得到全局最优的状态。
最后根据每一时刻的相机位姿和空间中目标的信息,根据需求建立相应的地图。
啥是ORB-SLAM2
在github中的详细说明
https://github.com/raulmur/ORB_SLAM2
ORB-SLAM2 是用于单目、立体和 RGB-D 相机的实时 SLAM 库,用于计算相机轨迹和稀疏 3D 重建(在具有真实比例的立体和 RGB-D 情况下)。它能够实时检测环路并重新定位摄像机。我们提供了在 KITTI 数据集中以立体或单目、在 TUM 数据集中以 RGB-D 或单目形式运行 SLAM 系统以及在 EuRoC 数据集中以立体或单目形式运行 SLAM 系统的示例。我们还提供一个 ROS 节点来处理实时单目、立体声或 RGB-D 流。该库可以在没有 ROS 的情况下进行编译。
测试环境
使用的主机是NVIDIA的Jetson Xavier NX国产开发者套件
系统是ubuntu18.04LTS
使用ROS Melodic Morenia发行版。所以有些驱动,程序,编译器啥的都已经安装好的
流程是照着维基百科安装的
http://wiki.ros.org/cn/melodic/Installation/Ubuntu
摄像头是intel的D435i
使用的数据集
TUM 数据 https://vision.in.tum.de/data/datasets/rgbd-dataset/download
KITTI数据集 https://www.cvlibs.net/datasets/kitti/eval_odometry.php
任务目标
在本流程中,布置ORB-SLAM2,并使用intel的D435i实现SLAM建图