orb-slam試跑 ubuntu16.04 + ros Kinetic + orb-slam2

聲明:這是一個新手的總結,根據各個大神的博客得來

首先默認你已經安裝了Pangolin、OpenCV、Eigen3,如果沒有,請參照我的這篇博客:https://blog.csdn.net/qq_41981025/article/details/80023155,或者百度搜索大神教程

ROS Kinetic安裝

         ros是一個機器人操作系統,但並不像windows或者ubuntu一樣,可以說他是一個平臺,在ubuntu系統下通過在命令窗口輸入相關命令就可以進入,完全不必擔心會把你的ubuntu覆蓋。

         我當時主要參考的這兩篇博文:ubuntu 16.04下安裝和配置ros 

                                                                Ubuntu下使用單目相機運行ORB SLAM2

     1   首先點擊ubuntu右上角的設置圖標,點擊系統設置,在打開的窗口中單擊軟件和更新,確保ubuntu軟件下的前四個選項被選中


         然後進入/etc/apt/sources.list,在文件的頭部添加

deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties    
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted    
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties    
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted    
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties    
deb http://mirrors.aliyun.com/ubuntu/ xenial universe    
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe    
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse    
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse    
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse    
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties    
deb http://archive.canonical.com/ubuntu xenial partner    
deb-src http://archive.canonical.com/ubuntu xenial partner    
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted    
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties    
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe    
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse 
deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse  
deb http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse  
deb http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse  
deb http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse  
deb http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse  
deb-src http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse  
deb-src http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse  
deb-src http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse  
deb-src http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse  
deb-src http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
        保存文件後,打開命令窗口,輸入
                                     sudo apt-get update

        仍舊打開軟件和更新,你可以打開下載自的下拉列表,選擇其他站點


         單擊選擇最佳服務器,ubuntu會自動選擇離你較近的服務器。

       2  打開命令窗口(快捷鍵 Ctrl + Alt + T),輸入命令創建ros源

  sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

          輸入命令,設置密鑰

  sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

         輸入命令,更新源

   sudo apt-get update

       3  安裝ros,這一步我當時安裝的時候和參考的博客不太一樣,在命令窗口輸入命令,安裝完整版的時候會提示需要先安裝另外兩個東西,按照提示走,還是用 sudo apt-get install + 需要安裝的東東就行,安裝完成後,輸入

   sudo apt-get install ros-kinetic-desktop-full

      4  安裝完成後,需要初始化ros,並添加環境變量

          在命令窗口輸入

   sudo rosdep init
   rosdep update
   echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
   source ~/.bashrc

      5  安裝ros常用插件

   sudo apt-get install python-rosinstall

         到此ros就安裝的差不多了,先啓動ros看看前面是否有錯誤步驟,在命令窗口輸入

   roscore

        如果出現窗口

           表示安裝基本成功,下面開始配置ros

       6  創建工作區,在命令窗口輸入

    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws/src
    cd ~/catkin_ws/
    catkin_make
    source devel/setup.bash

        到此ros就安裝完成了。其中還有一些小問題,比如我使用 echo $ROS_PACKAGE_PATH 命令來查看環境變量的時候,並沒有出現配置ROS工作空間catkin+rosbuild 這篇文章中所說的四個路徑,只有/home/yyl/rosbuild_ws/sandbox:/home/yyl/catkin_ws/src:/opt/ros/kinetic/share這三個路徑,但是並不影響跑orb-slam單目攝像頭,其他的影響還不知道。


安裝usb_cam

   1  下載源碼並配置環境,在命令窗口輸入

    cd catkin_ws/src
    git clone https://github.com/bosch-ros-pkg/usb_cam.git
    cd ..
    catkin_make
    source ~/catkin-ws/devel/setup.bash

    2  編譯,進入catkin_ws/src文件夾,在此文件夾內右鍵打開命令窗口,輸入

    cd usb_cam
    mkdir build
    cd build
    cmake ..
    make

       到此usb_cam安裝成功,可以測試一下。

       插入usb攝像頭後,根據命令

    ls /dev/video*
查看自己的usb攝像頭爲video幾,默認是video0,可以進入catkin_ws/src/usb_cam/launch文件夾,打開usb_cam-test.launch文件,將裏面第三行的/dev/video0,改成/dev/video**(自己的號)。進入catkin_ws/src/usb_cam/nodes文件夾,打開usb_cam_node.cpp文件,將裏面第92行的/dev/video0,改成/dev/video**。

      打開ros,即在新的終端下輸入命令

    roscore

    再打開一個終端(Ctrl + Alt + T),輸入

    roslaunch usb_cam usb_cam-test.launch

   如果出現圖像代表安裝配置成功。

ORB_SLAM2安裝


      1  下載源碼,在終端中輸入

    cd catkin_ws/src
    git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2

     2   包含路徑,在當前終端中輸

    export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS

     3   分別編譯源碼

         編譯orb_slam2

   cd catkin_ws/src/ORB_SLAM2
   mkdir build 
   cd build 
   cmake ..
   make 

        編譯ros的源碼

  cd ~/catkin_ws/src/ORB_SLAM2/Example/ROS/ORB_SLAM2
  mkdir build
  cd build
  cmake ..
  make

       編譯g2o

  cd ~/catkin_ws/ORB_SLAM2/Thirdparty/g2o/
  mkdir build
  cmake ..
  make

      編譯DBoW2

 cd ~/catkin_ws/ORB_SLAM2/Thridparty/DBoW2
 mkdir build 
 cmake ..
 make

          一般情況是都能編譯成功,但是我編譯catkin_ws/src/ORB_SLAM2/Example/ROS/ORB_SLAM2出問題了,rgbd和stereo一直編譯不了,試了網上能找到的各種方法還是不行,沒辦法只有放棄編譯這兩個模式,在catkin_ws/src/ORB_SLAM2/Example/ROS/ORB_SLAM2的cmakelists.txt文件中刪掉

# Node for stereo camera                                         target_link_libraries(Stereo
rosbuild_add_executable(Stereo                          ${LIBS}
src/ros_stereo.cc                                                        )
)

# Node for RGB-D camera                                        target_link_libraries(RGBD
rosbuild_add_executable(RGBD                             ${LIBS}
src/ros_rgbd.cc                                                           )
)

再編譯就行了,不過只有單目的可執行文件

運行

        分三個終端

        第一個終端打開ros

  roscore

       第二個窗口打開usb攝像頭

  roslaunch usb_cam usb_cam-test.launch

       第三個窗口運行orb_slam

 rosrun ORB_SLAM2 Mono /home/***/catkin_ws/src/ORB_SLAM2-master/Vocabulary/ORBvoc.txt /home/***/catkin_ws/src/ORB_SLAM2-master/Examples/ROS/ORB_SLAM2/Asus.yaml

其中ORBvoc.txt需要將catkin_ws/src/ORB_SLAM2-master/Vocabulary中的壓縮包解壓,***代表用戶名,第二個路徑/home/***/catkin_ws/src/ORB_SLAM2-master/Examples/ROS/ORB_SLAM2/Asus.yaml是攝像頭參數,可以標定後按實際路徑添加


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