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

  • Post author:
  • Post category:其他




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


按照解决方法可以一帧帧运行
注释后连续运行

参考链接

https://blog.csdn.net/zzc1684/article/details/84710802



版权声明:本文为qq_33034981原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。