TX2下Ubuntu16.04+ZED+ROS +ORB_SLAM2


之前幾天看了視覺SLAM,然后就在TX2開發板上安裝了ubuntu16.04+ROS+ZED+ORB_SLAM2,因為使用的是ZED雙目相機,ORB_SLAM不支持立體相機,

TX2上安裝ubuntu16.04+ROS的教程很多,自行百度吧,這里就不再羅嗦了。

1、OpenCV 3..4.3的安裝

  參考:https://www.cnblogs.com/qilai/p/13653354.html

2、CUDA的安裝

  官網 https://developer.nvidia.com/cuda-downloads 下載,完成后進行安裝

sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb
sudo apt-get update
sudo apt-get install cuda

也可以使用TX2 SDK 安裝CUDA Opencv等。我使用的是SDK安裝

4、ZED SDK安裝與調試

參考:https://www.stereolabs.com/docs/getting-started/installation/

下載ZED SDK   https://www.stereolabs.com/developers/release/下載完成后在終端輸入

chmod +x ZED_SDK_Linux_*.run
./ZED_SDK_Linux_*.run

 5、ZED ROS Wrapper安裝

(1)下載ZED ROS包並放置在ROS工作空間

cd ~/robot_ws/src
git clone https://github.com/stereolabs/zed-ros-wrapper

 6、 安裝相關依賴項

       1)安裝Pangolin

   安裝Pangolin,用於可視化和用戶接口,首先安裝依賴如下:

sudo apt-get install libglew-dev libboost-dev libboost-thread-dev libboost-filesystem-dev 

     下載Pangolin:

cd ~/robot/src
git clone https://github.com/stevenlovegrove/Pangolin

     編譯並安裝Pangolin:

cd Pangolin
mkdir build
cd build
cmake ..
make
sudo make install

       2)安裝Eigen3
             由於當前使用的orb_slam2支持eigen3.3,所以直接apt-get方式下載安裝即可

sudo apt-get install libeigen3-dev

 6、ORB SLAM2的安裝

      (1)下載ORB SLAM2包:

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

   編譯前需要打開build.sh文件,將所有的make -j改為make -j4之后修改文件權限並運行編譯: 

chmod +x build.sh
./build.sh

             如果編譯時出現如下問題:

 

解決方法在ORB-SLAM2中的include文件夾里面的system.h加入#include<unistd.h>

編譯成功 ,

7、Monocular Examples(單目數據集測試)

自述文件中介紹了,在單目測試中可以使用TUM Dataset、KITTI Dataset、EuRoC Dataset三種數據集進行測試,以TUM Dataset為例,自述文件中原文如下:

    ## TUM Dataset

    1. Download a sequence from http://vision.in.tum.de/data/datasets/rgbd-dataset/download and uncompress it.

    2. Execute the following command. Change `TUMX.yaml` to TUM1.yaml,TUM2.yaml or TUM3.yaml for freiburg1, freiburg2 and freiburg3 sequences respectively. Change `PATH_TO_SEQUENCE_FOLDER`to the uncompressed sequence folder.
    ```
    ./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER
    ```

 登錄http://vision.in.tum.de/data/datasets/rgbd-dataset/download,下載freiburg1_xyz數據集並解壓,在ORB_SLAM2根目錄下執行如下命令:

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml ~/robot_ws/src/ORB_SLAM2/rgbd_dataset_freiburg1_xyz

  運行過程如下:

8、ROS 上使用zed+ORB_SLAM

(1)編譯build_ros.sh

首先,打開文件gedit ~/.bashrc,在文件末尾添加(根據自己的路徑):

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/robot/src/ORB_SLAM2/Examples/ROS

 編譯前需要打開build_ros.sh文件,將make -j改為make之后修改文件權限並運行編譯

chmod +x build_ros.sh
./build_ros.sh

編譯可能會出現undefined reference to symbol

解決辦法:gedit ./Examples/ROS/ORB_SLAM2/CMakeLists.txt

添加一行-lboost_system

(2)  運行Demo

 1)比較簡單的方法

roscore
//再開一個命令行 
roslaunch zed_wrapper zed.launch
//再開一個命令行
//先進入ORB_SLAM2的根目錄下
rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml false /camera/left/image_raw:=/zed/left/image_rect_color /camera/right/image_raw:=/zed/right/image_rect_color

//false的含義是do not rectify,因為使用了校正后的圖像,所以不再校正,所以YAML文件也無所謂啦
//如果需要校正的話,需要自己寫一個yaml文件,寫入自己的傳感器的標定參數,比如說使用普通的網絡攝像頭(Mono),然后選true

 

    運行效果:

 

2)仿照/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src目錄下的ros_stereo.cc建立一個新文件,如zed_stereo_rect.cc。將代碼復制過去,修改以下部分:

message_filters::Subscriber<sensor_msgs::Image> left_sub(nh, "/zed/left/image_rect_color", 1);
message_filters::Subscriber<sensor_msgs::Image> right_sub(nh, "/zed/right/image_rect_color",1);

 此處選取了ZED的兩個數據流。然后修改CmakeLists.txt,仿照加入:

# Node for ZED camera
rosbuild_add_executable(zed_Stereo_rect
src/zed_stereo_rect.cc
)

target_link_libraries(zed_Stereo_rect
${LIBS}
)

然后在ORB_SLAM2的根目錄下重新編譯:

./build_ros.sh

會新生成一個可執行文件 zed_Stereo_rect    然后執行:

roslaunch zed_wrapper zed.launch
//另開一個命令行
cd ~/catkin_ws/src/ORB_SLAM2
rosrun ORB_SLAM2 zed_Stereo_rect Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml false

運行效果:

其他問題參考:https://blog.csdn.net/CAIYUNFREEDOM/article/details/104251661


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM