ORB_SLAM2 安装 血的教训 - Something TO DO

ORB_SLAM2 安装 血的教训

Something TO DO posted @ 2018年1月28日 14:32 in C++ with tags ubuntu camera orb_slam2 , 510 阅读

记住一个原则,如果要安装请按照Github源代码下的安装说明来,各种翻译版本的容易出问题。如果你已经安装完了,出了问题也尽量去Github该源代码下的Issues中去找解决方法,其他地方也大部分是翻译过来的,更容易出新问题。(当然我记录是为了我防止再犯错,你也可以参考,还是推荐去Github)

一, 安装依赖项

这个在https://github.com/raulmur/ORB_SLAM2中有说明,这里细说一下。

依赖项有:

1) Boost

2) Pangolin

3) OpenCV

4) Eigen3

5) DBoW2和g2o (在Thirdparty文件夹下有,无需安装)

 

下面分别说一下:

1)Boost安装

sudo apt-get install libboost-all-dev

(后面自己的时间基本都耽误在这个boost上,不是这个安装的问题,具体后边说)

 

2)Pangolin安装

参考:https://github.com/stevenlovegrove/Pangolin

Required Dependencies

    C++11

    OpenGL (Desktop / ES / ES2)

    Glew

sudo apt-get install libglew-dev

 

    CMake (for build environment)

sudo apt-get install cmake

Recommended Dependencies(电脑中貌似基本都有,可以命令行输入python看一下)

    Python2 / Python3, for drop-down interactive console

(deb) sudo apt-get install libpython2.7-dev
git clone https://github.com/stevenlovegrove/Pangolin.git

cd Pangolin

mkdir build

cd build

cmake ..

cmake --build .

3) OpenCV安装

这个下载源码,编译安装就行,版本要求在2.4.3以上就行,原作者用的是OpenCV 2.4.11 and OpenCV 3.2做的测试,我下载的是OpenCV 2.4.13,也可以工作。

4)Eigen3 安装

sudo apt-get install libeigen3-dev
cd /usr/include/eigen3
sudo cp Eigen/ .. -R (将Eigen文件夹放在/usr/include下面)

5)DBoW2和g2o

不用安装。

二, ORB_SLAM2安装

1, 下载ORB_SLAM2源代码

这里一般都不说下载的位置,但是我推荐下载到自己的ros工作目录(一般为catkin_ws)的src文件夹下,即./home/{用户名}/catkin_ws/src/{ORB_SLAM2},也就是在src目录下,做以下操作:

git clone https://github.com/raulmur/ORB_SLAM2.git

2, 编译,在catkin_ws/src/ORB_SLAM2/目录下编译

打开build.sh将-j去掉,-j为多核提高编译速度,但容易引起电脑卡机

chmod +x build.sh
./build.sh

 

(这里build.sh是一系列操作的脚本,其他的感觉很复杂的操作都是之前版本的,所以需要注意)

此时可以通过TUM数据集来测试安装是否成功。

TUM Dataset

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

    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_FOLDERto the uncompressed sequence folder.

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER

这里之前没有遇到什么问题,如果有问题记得去Github查找Issuses。

3, 之前这些都是非ROS版本的ORB_SLAM2,下面编译ros版本的

首先需要修改.bashrc(根目录下),指定orb_slam2的ros路径,按照以下要求添加

Add the path including Examples/ROS/ORB_SLAM2 to the ROS_PACKAGE_PATH environment variable. Open .bashrc file and add at the end the following line. Replace PATH by the folder where you cloned ORB_SLAM2:

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

我的ORB_SLAM2目录是放在了/home/{用户名}/catkin_ws/src/ORB_SLAM2…..

我在.bashrc中添加的为:

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/{用户名}/catkin_ws/src/ORB_SLAM2/Examples/ROS

这里需要做另外一个工作,就是从系统中查找两个文件,libboost_system.so和libboost_filesystem.so,查找方法为

locate boost_system
locate boost_filesystem

找到这两个文件 libboost_system.so和libboost_filesystem.so后,将他们复制到 /home/{用户名}/catkin_ws/src/ORB_SLAM2/lib目录下。

然后找到/home/{用户名}/catkin_ws/src//ORB_SLAM2/Examples/ROS/ORB_SLAM2目录下的CMakeLists.txt文件,需要做一定的修改,修改方法有两种,参考:https://github.com/raulmur/ORB_SLAM2/issues/494

说明一下,这里面两个人(分别是shejing和AldrichCabrera),他们两个分别修改为

 

shejing的回复:

set(LIBS
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
++
${PROJECT_SOURCE_DIR}/../../../lib/libboost_filesystem.so
${PROJECT_SOURCE_DIR}/../../../lib/libboost_system.so)

 

AldrichCabrera的回复:
set(LIBS
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
-lboost_system)

我之前在CSDN上看到的全是第一种解决方法,一直编译不通过,后来尝试第二种编译成功。不知道第一种情况有没有编译通过,后期需要找一下原因。

chmod +x build_ros.sh
./build_ros.sh

 

(同样需要去掉build_ros.sh文件中的-j参数)

切换目录到/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/下,然后按照Github上编译即可。

4, Execute build_ros.sh script:

 

笔记本摄像头驱动安装和相机标定

1. 使用博世公司的 "usb_cam":A ROS Driver for V4L USB Cameras

cd catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd ../
catkin_make

 

下载需要标定的黑白棋盘,打印后贴在平板上.

 

2. 编译ROS相机标定包

rosdep install camera_calibration
rosmake camera_calibration

3. 启动usb_cam,获取笔记本摄像头的图像

 

// sudo apt-get install ros-indigo-usb-cam optional 若没有安装usb_cam驱动时安装

roslaunch usb_cam usb-cam-test.launch

 

4. 启动标定程序

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.025 image:=/usb_cam/image_raw camera:=/usb_cam

其中image:= 和camera:=后的内容需要根据自己电脑摄像头的话题和节点来修改,可以通过rqt_graph来查看。比如有的会是image:=/camera/image_raw camera:=/camera

标定界面出现后,按照x(左右)、y(上下)、size(前后)、skew(倾斜)等方式移动棋盘,直到x,y,size,skew的进度条都变成绿色位置.

此时可以按下CALIBRATE按钮,等一段时间就可以完成标定。

完成后Commit,在终端后会有标定结果yaml文件地址.默认一般为/home/{用户名}/.ros/camera_info/head_camera.yaml

打开后,按照TUM1.yaml的格式修改,只是需要加上camera的尺寸Camera.width和Camera.height,命名为mycam.yaml.

例如:

复制到/home/shang/catkin_ws/src/ORB_SLAM2/Examples/Monocular/目录下

而在orb_slam中的格式如下,需要将上面的

camera_matrix:

distortion_coefficients:

参数值对应。其中ORB参数与Viewer参数不变。

roslaunch usb_cam usb_cam-test.launch
rosrun ORB_SLAM2 Mono /home/mazhg/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/mazhg/catkin_ws/src/ORB_SLAM2/Examples/Monocular/myusb.yaml

 

 

Avatar_small
goodman 说:
2018年5月28日 23:54

orbslam2 git clone網址錯誤拉~
少一個2
GOOD LUCK

Avatar_small
Something TO DO 说:
2018年8月14日 08:42

@goodman: 多谢提醒,已修改


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee