SLAM概述与预备知识

一、熟悉 Linux

1.1.如何在 Ubuntu 中安装软件(命令行界面)?它们通常被安装在什么地方?

  1. Ubuntu 中安装软件(命令行界面):
  • 在线安装:sudo apt-get install xxx;
  • 本地安装:sudo dpkg -i xxx.deb
  1. 软件安装位置:
  • 一般在 /usr/bin

1.2. linux 的环境变量是什么?我如何定义新的环境变量?

  1. Linux环境变量是系统预定义的参数

  2. 环境变量定义:

  • 临时:在终端中直接使用export指令添加,eg. export AA="hello world"
  • 长期:在~/ .bashrc文件中添加export指令。

1.3. linux 根目录下面的目录结构是什么样的?至少说出 3 个目录的用途。

  1. 目录结构
bin/   dev/   home/  lib64/ mnt/   proc/  run/   snap/  sys/   usr/ 
boot/  etc/   lib/   media/ opt/   root/  sbin/  srv/   tmp/   var/   
  1. 目录用途
  • bin: 存放二进制可执行文件
  • dev: 外接设备文件
  • home: 通常用来保存用户的文件

1.4. 假设我要给 a.sh 加上可执行权限,该输入什么命令?

chmod +x a.sh

1.5. 假设我要将 a.sh 文件的所有者改成 xiang:xiang,该输入什么命令?

chown xiang:xiang a.sh

二、SLAM 综述文献阅读

2.1. SLAM 会在哪些场合中⽤到?

  1. AR和VR技术 ; 2) 无人驾驶;3) 多机器人协同作业

2.1 SLAM 中定位与建图是什么关系?为什么在定位的同时需要建图?

  1. 定位与建图:
  • 定位:机器人获取自身在环境中位置

  • 建图:机器人将周围环境信息制成地图

单独的定位是在已知地图的情况下,机器人通过传感器获 取外部信息来获得自己的具体位置,比如高精度地图下无人车的定位;单独的建图也有,例如三维重建技术,对一些建筑的精细化重建。

而SLAM的关键是在实时状态下,机器人可以在定位的同时建立环境地图。这样可以使得机器人可以在未知环境下,进行探索,并实时反馈各种突发情况,降低了自动机器人的环境应用限制。

2.3 SLAM 发展历史如何?我们可以将它划分成哪⼏个阶段?

SLAM的发展史,我从计算设备的发展程度,划分为3个阶段。

  1. 阶段1:机器人定位和环境重建各自研究,少有交集。

  2. 阶段2:随着硬件设备的发展,开始探索同时定位和建图的研究领域。

  3. 阶段3:多机器人协同作业,多智能体的SLAM的研究。例如,以万物可联的愿景,未来所有智能体都能自发的进行SLAM操作,获得动态地图,智能体间还能互动的提高各自的定位精度。

2.4 列举三篇在 SLAM 领域的经典⽂献。

[1] Zou D, Tan P. Coslam: Collaborative visual slam in dynamic environments. IEEE transactions on pattern analysis and machine intelligence. 2012 May 1;35(2):354-66.

[2] Forster C, Pizzoli M, Scaramuzza D. SVO: Fast semi-direct monocular visual odometry. In2014 IEEE international conference on robotics and automation (ICRA) 2014 May 31 (pp. 15-22). IEEE.

[3] Mur-Artal R, Montiel JM, Tardos JD. ORB-SLAM: a versatile and accurate monocular SLAM system. IEEE transactions on robotics. 2015 Aug 24;31(5):1147-63.

三、 CMake 练习

SLAM概述与预备知识

SLAM概述与预备知识

四、理解 ORB-SLAM2 框架

4.1 从 github.com 下载 ORB-SLAM2 的代码

SLAM概述与预备知识

4.2 ORB-SLAM2 的 CMakeLists.txt 解读

a) ORB-SLAM2 将编译出什么结果?有⼏个库⽂件和可执⾏⽂件?

  • 编译输出多个可执行文件程序和多个库文件。
  • 库文件:通过/src文件夹中的.cc文件生成动态库文件ORB_SLAM2。
  • 可执行文件:rgbd_tum、stereo_kitti、stereo_euroc、mono_tum、mono_kitti、mono_euroc 。

b) ORB-SLAM2 中的 include, src, Examples 三个⽂件夹中都含有什么内容?

  • /include:对应c++函数的头文件
  • /src:主函数c++文件
  • /Examples:相机的主程序。

c) ORB-SLAM2 中的可执⾏⽂件链接到了哪些库?它们的名字是什么?

  • OPENCV_LIBS
  • EIGEN3_LIBS
  • Pangolin_LIBRARIES
  • /ORB-SLAM2/Thirdparty/DBoW2/lib/libDBoW2.so
  • /ORB-SLAM2/Thirdparty/g2o/lib/libg2o.so
上一篇:2021-03-30


下一篇:近十年的VI-SLAM算法综述与发展