【SLAM】视觉SLAM十四讲(一:基础知识学习)

1 熟悉Linux

1. 如何在 Ubuntu 中安装软件(命令⾏界⾯)?它们通常被安装在什么地⽅?
apt-get install 包名
aptitude insatll 包名(包含依赖解决方案)
1.下载的软件存放位置
/var/cache/apt/archives
2.安装后软件默认位置
/usr/share
3.可执行文件位置
/usr/bin
4.配置文件位置
/etc
5.lib文件位置
/usr/lib
2. linux 的环境变量是什么?我如何定义新的环境变量?
linux的环境变量有永久生效和shell临时生效两种
设置永久生效的环境变量:

  • 对所有用户生效
    $ gedit /etc/profile
    $ export 新增环境变量
  • 对当前用户生效
    $ gedit /home/用户/.bash.profile
    $ export 新增环境变量

设置当前shell有效的环境变量:
直接在当前命令窗口下新增变量,窗口关闭后失效

$ export 新增环境变量

查看环境变量:

  • 使用env查看所有环境变量 env
  • 使用echo命令查看单个环境变量echo $PATH
  • 使用set查看所有本地定义的环境变量,unset可以删除指定的环境变量
  • 常用的环境变量
    PATH——决定了shell将到哪些目录中寻找命令或程序
    HISTSIZE——历史记录数
    LOGNAME——当前用户的登录名
    HOSTNAME——指主机的名称
    SHELL——当前用户Shell类型
    LANGUGE——语言相关的环境变量,多语言可以修改此环境变量
    MAIL——当前用户的邮件存放目录
    PS1——基本提示符,对于root用户是#,对于普通用户是$
    4. linux 根⽬录下⾯的⽬录结构是什么样的?⾄少说出 3 个⽬录的⽤途。
    根目录下面只有目录
    /home:用户家目录
    /boot:系统启动时用到的一些文件,如内核文件、grub引导
    /etc:系统配置文件
    /dev:系统设备文件
    /bin:可执行二进制文件

    5. 假设我要给 a.sh 加上可执⾏权限,该输⼊什么命令?
    在不知道该档案原本的权限为何的情况下,chmod a+x filename,就可以让该程序拥有执行的权限了
    6. 假设我要将 a.sh ⽂件的所有者改成 xiang:xiang,该输⼊什么命令?chown xiang:xiang a.sh

2 SLAM综述文献阅读

  • SLAM 会在哪些场合中⽤到?⾄少列举三个⽅向。
    增强现实、移动机器人的自主导航、无人驾驶

  • SLAM 中定位与建图是什么关系?为什么在定位的同时需要建图?
    定位:机器人必须知道自己在环境中位置;
    建图:机器人必须记录环境中特征的位置(如果知道自己的位置);
    机器人在未知环境中从一个未知位置开始移动,在移动过程中根据位置估计和地图进行自身定位,同时在自身定位的基础上建造增量式地图,实现机器人的自主定位和导航。

  • SLAM 发展历史如何?我们可以将它划分成哪⼏个阶段?
    声纳——激光雷达——深度相机——多传感器融合

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

  • Smith, R.C. and P. Cheeseman, On the Representation and Estimation of
    Spatial Uncertainty. International Journal of Robotics Research,

  • Se, S., D. Lowe and J. Little, Mobile robot localization and mapping
    with uncertainty using scale­invariant visual landmarks. The
    international Journal of robotics Research, 2002. 21

  • Mullane, J., et al., A Random­Finite­Set Approach to Bayesian SLAM.
    IEEE Transactions on Robotics, 2011

3 CMAKE练习

完成了《cmake 实践》的阅读,了解了cmake工程的构建方法,静态库和动态库的安装调用。

4 ORB-SLAM2练习

在命令行中输入 git clone https://github.com/raulmur/ORB_SLAM2
ORB-SLAM2文件夹将会下载到当前路径
阅读CMakeLists.txt,回答以下问题:

  • ORB-SLAM2 将编译出什么结果?有⼏个库⽂件和可执⾏⽂件? 6个,观察add_executable指令即可
  • ORB-SLAM2 中的 include, src, Examples三个⽂件夹中都含有什么内容? 头文件,源文件,输出
  • ORB-SLAM2 中的可执⾏⽂件链接到了哪些库?它们的名字是什么?观察target_link_libraries指令即可

5 运行ORB-SLAM2

git clone https://github.com/raulmur/ORB_SLAM2将ORB_SLAM2文件夹下载到本地,根据github页面的readme安装好依赖
将课程提供的myvideo.cpp、myvideo.yaml、myvideo.mp4放到Examples/myvideo文件夹下,注意修改myvideo.cpp中的文件路径
修改ORB_SLAM2文件夹下的CMakeLists.txt文件,在最后增加如下语句

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/myvideo)
add_executable(myvideo Examples/myvideo/myvideo.cpp)
target_link_libraries(myvideo ${PROJECT_NAME})

在ORB_SLAM2文件夹下打开终端

cd ORB_SLAM2
chmod +x build.sh
./build.sh
cd build
make

在Examples/myvideo文件夹下找到myvideo可执行程序,./myvideo执行
报错QObject::startTimer: Timers cannot be started from another thread
解决方法
https://blog.csdn.net/weixin_39608351/article/details/90202749
【SLAM】视觉SLAM十四讲(一:基础知识学习)_第1张图片【SLAM】视觉SLAM十四讲(一:基础知识学习)_第2张图片

参考链接
https://blog.csdn.net/zzc1684/article/details/84710802

你可能感兴趣的:(视觉SLAM十四讲学习)