ygz_slam_ros測試

###將ygz_slam_ros單獨拿出來編譯

#按照安裝依賴
https://gaas.gitbook.io/guide/software-realization-build-your-own-autonomous-drone/wu-ren-ji-zi-dong-jia-shi-xi-lie-part-3-zai-wu-gps-huan-jing-xia-tong-guo-slam-shi-xian-wei-zhi-gu-j

Mavros msgs: sudo apt install ros-kinetic-mavros-msgs
Pangolin (for visualization): https://github.com/stevenlovegrove/Pangolin
Eigen3: sudo apt-get install libeigen3-dev
g2o: sudo apt-get install libcxsparse-dev libqt4-dev libcholmod3.0.6 libsuitesparse-dev qt4-qmake
glog (for logging): sudo apt-get install libgoogle-glog-dev
ROS Octomap: sudo apt-get install ros-kinetic-octomap-*
#用以下命令,但不包括安裝Pangolin
sudo apt-get install libeigen3-dev
sudo apt-get install ros-kinetic-mavros-msgs
sudo apt-get install libqglviewer-headers libqt4-dev libcholmod3 libsuitesparse-dev qt4-qmake
sudo apt-get install libgoogle-glog-dev
sudo apt-get install ros-kinetic-octomap-*
sudo apt-get install libglew-dev
sudo apt-get install libxkbcommon-x11-dev
#安裝g2o依賴報錯
chen@chen:~/MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros$ sudo apt-get install libcxsparse-dev libqt4-dev libcholmod3.0.6 libsuitesparse-dev qt4-qmake
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libcxsparse-dev
#解決:進入https://github.com/RainerKuemmerle/g2o進行安裝
#按照教程https://www.cnblogs.com/ambition921009/p/10551959.html
1、首先在github上下載g2o圖優化庫
git clone https://github.com/RainerKuemmerle/g2o.git
2、運行安裝以下依賴庫
sudo apt-get install libcholmod3.0.6
sudo apt-get install libsuitesparse-dev
sudo apt-get install freeglut3 freeglut3-dev freeglut3-dbg
sudo apt-get install libqglviewer2 libqglviewer-dev libqglviewer-doc
sudo apt-get install libeigen3-dev libeigen3-doc
3、開始安裝g2o,先進入g2o的目錄內,然後開啓終端,依次運行下列命令:
mkdir build
cd build/
cmake ..
make
sudo make install
至此,g2o圖優化庫安裝完畢!


##安裝PCL
https://github.com/PointCloudLibrary/pcl

git clone https://github.com/PointCloudLibrary/pcl pcl-trunk
cd pcl-trunk && mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
make -j2
sudo make -j2 install

##安裝DBoW3
cd Thirdparty/DBow3/
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4

##安裝fast
cd ../../fast
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4

##安裝opencv
#在編譯opencv的過程中,需要確保cmake生成的opencv編譯配置中,包括了opencv_cvv組件。爲此,你需要首先克隆opencv_contrib:
git clone https://github.com/opencv/opencv_contrib
#進入克隆下來的opencv目錄,切換版本到一個較高版本——此處使用版本號3.4.5:
git checkout 3.4.5
#注意,對於opencv和opencv_contrib都需要切換版本,且必須保證兩者版本一致。
#然後使用cmake進行配置——若對cmake不熟悉則可以使用cmake-gui:
sudo apt-get install cmake-qt-gui
cmake-gui


##上面比較抽象,以下是具體的操作
參考教程:https://blog.csdn.net/echoamor/article/details/83022352
1.先去github上下載opencv和opencv_contrib,並在分支中(左上角Tag那裏選)選擇相對應的版本,如都是3.4.5.
https://github.com/opencv/opencv/tree/3.4.5
https://github.com/opencv/opencv_contrib/tree/3.4.5
2.安裝依賴
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
3.依賴安裝完成後,把opencv_contrib文件夾放入opencv目錄下,並且創建build文件夾
4.安裝cmake-gui
sudo apt-get install cmake-gui
5.安裝配置opencv
安裝好之後,進入opencv文件夾裏的build文件夾,在這裏打開終端,輸入:
cmake-gui ..
6.確定路徑沒問題之後點擊configure選擇Unix Makefiles,其餘默認,點擊finish。需要下載一些文件,要等待一段時間。然後CMake即載入默認配置.
7.這裏需要對三個地方進行修改:
(1)在CMAKE_BUILD_TYPE 值處輸入RELEASE,其他保持不變(如果已經存在就不必修改)。
下方的CMAKE_INSTALL_PREFIX顯示了默認的安裝目錄,生成makefile文件最後執行 make install時就會安裝到這個目錄,這裏可以根據個人需求更改。但是建議就按照默認路徑來,不要亂改!
(2)在OPENCV_EXTRA_MODULES_PATH處,選擇輸入目錄(單擊這一行後方空白處即可選中)
接着選擇opencv_contrib文件夾中的modules文件夾,注意,不是隻選中opencv_contrib文件夾就好了,需要點進去選中裏面的modules文件夾! 然後點Choose。
(3)在BUILD_opencv_world後面打√
(4)勾選WITH_QT和ENABLE_CXX11:
8.再點擊一次Configure,即可看到BUILD_opencv_cvv選項,勾選之後點擊Generate即可生成目標makefile,進行編譯即可。這個過程需要一段時間,耐心等待一下。完成後顯示generating done
9.完成之後,在build文件夾下重新打開一個終端,輸入make,就會開始編譯,過程較長,耐心等待。
10.配置環境變量
(1)安裝成功後還需要設置opencv的環境變量。打開文件:
  sudo gedit /etc/ld.so.conf.d/opencv.conf
(2)將以下內容添加到最後:
  /usr/local/lib
(3)接下來配置庫:
  sudo ldconfig
(4)更改環境變量:
  sudo gedit /etc/bash.bashrc
(5)在文件後添加:
  PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
  export PKG_CONFIG_PATH
保存退出,到這一步,opencv安裝完成!
原文鏈接:https://blog.csdn.net/echoamor/article/details/83022352

注意:按照步驟7設置之後不能編譯成功。後來採用以下步驟:
4.安裝cmake-gui
sudo apt-get install cmake-gui
5.安裝配置opencv
安裝好之後,進入opencv文件夾裏的build文件夾,在這裏打開終端,輸入:
cmake-gui ..
6.首先指定編譯目錄,source code選擇opencv的目錄,build the binaries選擇opencv的build,點擊Configure並選擇Unix Makefiles,先進行第一次配置:
7.指定OPENCV_EXTRA_MODULES_PATH到opencv_contrib的modules,並勾選WITH_QT和ENABLE_CXX11:
再點擊一次Configure,即可看到BUILD_opencv_cvv選項,勾選之後點擊Generate即可生成目標makefile,進行編譯即可。
即回到opencv/build目錄下,make.
chen@chen:~/MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros$ cd opencv
chen@chen:~/MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros/opencv$ cd build/
chen@chen:~/MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros/opencv/build$ cmake-gui ..
chen@chen:~/MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros/opencv/build$ make
編譯過程需要很長時間,編譯opencv需要大量內存。
#安裝
chen@chen:~/MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros/opencv/build$ sudo make install
#配置按照以上步驟
10.配置環境變量
(1)安裝成功後還需要設置opencv的環境變量。打開文件:
  sudo gedit /etc/ld.so.conf.d/opencv.conf
(2)將以下內容添加到最後:
  /usr/local/lib
(3)接下來配置庫:
  sudo ldconfig
(4)更改環境變量:
  sudo gedit /etc/bash.bashrc
(5)在文件後添加:
  PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
  export PKG_CONFIG_PATH
保存退出,到這一步,opencv安裝完成!

##編譯SLAM
#由於ROS自帶了低版本的opencv,爲了防止cmake在生成SLAM的makefile的過程中無法找到正確的opencv版本,需要在SLAM的cmake配置文件中指定:
cd /MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros
gedit CMakeLists.txt
配置文件的第53行:
find_package(OpenCV REQUIRED)
在OpenCV後面加上版本號(注意不要省略空格),若你安裝了其他版本(必須不低於3.4.5),則將3.4.5改爲你安裝的版本號:
find_package(OpenCV 3.4.5 REQUIRED)
#完成後,通過如下命令編譯SLAM:
cd (GAAS_PATH)/software/SLAM/ygz_slam_ros
cd ~/MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros

# 編譯過程較長,不建議在虛擬機裏進行
sh generate.sh

#運行測試
#啓動小覓SDK ROS節點
cd MYNT-EYE-ORB_SLAM2/src/MYNT-EYE-S-SDK/
source ./wrappers/ros/devel/setup.bash
roslaunch mynt_eye_ros_wrapper mynteye.launch

#查看節點話題
/mynteye/left/image_raw
/mynteye/right/image_raw

#在 ygz_slam_ros/examples文件夾內,你可以看到一個名爲simulationCamera.yaml的配置文件,此文件是SLAM的配置文件,文件包含ROS的左右圖像topic名,相機內參以及一些其它參數。其中一部分內容如下:
......
# camera and imu topics
Left: /gi/simulation/left/image_raw
Right: /gi/simulation/right/image_raw
......
如果想測試自己的相機,請更改相機topic,注意此時並沒有使用IMU信息,並且此項目還未完成,會有不穩定情況出現。
將話題改成自己的雙目話題:
Left: /mynteye/left/image_raw
Right: /mynteye/right/image_raw

#接下來,開啓SLAM:
./bin/EurocStereoVIO_ros ./examples/simulationCamera.yaml

#報錯
chen@chen:~/MYNT-EYE-ORB_SLAM2/src/ygz_slam_ros$ ./bin/EurocStereoVIO_ros ./examples/simulationCamera.yaml
OpenCV Error: Parsing error (./examples/simulationCamera.yaml(10): Tabs are prohibited in YAML!) in icvYMLSkipSpaces, file /tmp/binarydeb/ros-kinetic-opencv3-3.3.1/modules/core/src/persistence.cpp, line 1322
terminate called after throwing an instance of 'cv::Exception'
  what():  /tmp/binarydeb/ros-kinetic-opencv3-3.3.1/modules/core/src/persistence.cpp:1322: error: (-212) ./examples/simulationCamera.yaml(10): Tabs are prohibited in YAML! in function icvYMLSkipSpaces

Aborted (core dumped)

#待解決...

 

 

 

 

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