【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
按照解決方法可以一幀幀運行註釋後連續運行

參考鏈接
https://blog.csdn.net/zzc1684/article/details/84710802

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章