單目ORB_SLAM 實戰

單目ORB_SLAM 實戰

本篇是對 Zaragoza universidad 發表的ORB-SLAM a Versatile and Accurate Monocular SLAM System 中提出的ORB-SLAM 的代碼運行實戰,在GitHub上有英文的代碼運行介紹。
原作者主頁
GitHub路徑
以下是在自己電腦(dell-optiplex 9020, i7 8G )中調試成功後的,調試流程和注意事項:
這個工作只是爲了方便調試過程中遇到問題的小白,大神請直接看原鏈接。同時如有錯誤請大家指正,我只是搬運工。

ORB_SLAM安裝

首先確保安裝了ROS和依賴庫文件 eigen3,opencv,blas,lapack,boost等

  1. git clone https://github.com/raulmur/ORB_SLAM.git ORB_SLAM

  2. export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/&&/ 其中&&表示自己安裝ORB_SALM的路徑, 也可以自行在bashrc環境變量中添加,可以直接gedit ~/.bashrc 查看自己的環境變量

  3. cd Thirdparty/g2o/ 圖優化
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    make

  4. cd Thirdparty/DBoW2/ 迴環檢測的包
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    make
  5. 如果是ROS Indigo ,去掉ORB_SLAM 文件夾中manifest.xml中關於 opencv2的依賴
    如下:
  <package>

  <description brief="ORB_SLAM">

     ORB_SLAM

  </description>

  <author>Raul Mur-Artal</author>

  <license>GPLv3</license>

  <depend package="roscpp"/>

  <depend package="tf"/>

  <depend package="sensor_msgs"/>

  <!-- <depend package="opencv2"/>  -->

  <depend package="image_transport"/>

  <depend package="cv_bridge"/>

</package>

然後依然運行
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
ORB_SLAM 安裝完成


運行ORB_SLAM代碼-使用Example.bag

  1. 下載Example.bag.tar.gz
    http://webdiis.unizar.es/~raulmur/orbslam/downloads/Example.bag.tar.gz.

  2. ORB_SLAM 的根目錄下提供了兩個可運行的版本
    in ROS Fuerte:
    roslaunch ExampleFuerte.launch

    in ROS Groovy or newer versions:
    roslaunch ExampleGroovyHydro.launch

  3. rosbag play --pause Example.bag

現在應該可以利用已有的數據庫運行ORB_SLAM了


運行ORB_SLAM代碼-使用攝像頭數據

  1. 配置文件 :rosrun ORB_SLAM ORB_SLAM PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE

    此處PATH_TO_VOCABULARY 爲ORB_SLAM/Data/ 下ORBvoc.txt.tar.gz 解壓後的ORBvoc.txt

    PATH_TO_SETTINGS_FILE 爲ORB_SLAM/Data/ 下的 Settings.yaml 文件
    PS:工程要求,實際要將Settings.yaml 換成自己標定攝像頭後產生的文件

  2. roscore

  3. roslaunch rbx1_vision ORB_cam.launch 運行自己的攝像頭驅動launch文件
    此處的ORB_cam.launch 文件是 我將 rbx1_vision 文件夾中的 usb_cam.launch 修改後的文件,修改地方如下將
    <remap from="usb_cam/image_raw" to="/camera/rgb/image_raw" />

        <remap from="usb_cam/camera_info" to="/camera/rgb/camera_info" />
 修改爲:
  <remap from="usb_cam/image_raw" to="/camera/image_raw" />

        <remap from="usb_cam/camera_info" to="/camera/camera_info" />

因爲ORB_SLAM接受的topic名爲 /camera/image_raw,也可以自己寫remap到相應的topic
3. roslaunch mycamera.launch

此處 將ORB-SLAM 文件夾中的ExampleGroovyOrNewer.launch 複製重新命名爲mycamera.launch

將ExampleGroovyOrNewer.launch中的 
<remap from="/image" to="/ORB_SLAM/Frame" /> (是讀取Example.bag的代碼)
改爲 <remap from="/camera/image_raw" to="/ORB_SLAM/Frame" />

運行之後等待幾秒鐘,單目ORB_SLAM是利用前幾幀的視差來初始化定位的,所以左右擺動攝像頭就可以出現特徵點和攝像頭的位置了。


在調試過程中也借鑑了[漫遊者1號](http://blog.csdn.net/dourenyin/article/details/48055441)的文章,自己在調試中遇到了問題,然後摸索後,分享給大家,這篇文章中已經給出了很多詳細介紹,這裏就不重複了,只將可以運行的調試過程給大家。
以上只是ORB_SLAM 單目的運行程序,原文作者也發佈了ORB_SLAM2 裏面有關於RGB-D和 stereo 的運行代碼。同時近期也看完了 ORB:an efficient alternative to SIFT or SURF 這篇文章,該文章發表於2011年 ECCV,近期會發布關於這篇文章的詳細介紹。
關於這篇ORB的文章,讀完後並不是很瞭解,可能需要再深讀,消化後再和大家分享。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章