ORB-SLAM2可以说是目前最优秀的基于特征带的视觉SLAM,由于是开源的,很多人在此基础上进行了改进与应用.废话不多说,下面说说关于IMU+ORB的编译流程与运行结果.
论文是这篇论文:Mur-Artal, R., & Tardós, J. D. (2017). Visual-inertial monocular slam with map reuse. IEEE Robotics & Automation Letters, 2(2), 796-803.
但是论文上没有源码地址,不过好在pangjing根据此片论文,写了相应代码:https://github.com/jingpang/LearnVIORB
由于代码是基于ROS写的,因此需要安装ROS.
(1)ROS安装(ubuntu14.04 64位 ros-indigo)
安装:
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-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
sudo apt-get update
sudo apt-get install ros-indigo-desktop-full
apt-cache search ros-indigo
sudo rosdep init ///出错则使用:sudo c_rehash /etc/ssl/certs sudo -E rosdep init
rosdep update
echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt-get install python-rosinstall
验证:
打开4个终端,分别运行下面四段话,没出错则安装成功O_O
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
rosrun rqt_graph rqt_graph
卸载:
sudo apt-get remove ros-* -----------------------------------卸载ros
(2)安装其他库
和ORB-SLAM编译一样,就不多说了。
https://github.com/raulmur/ORB_SLAM2
(3)编译
创建一个catkin空间:
mkdir -p catkin_ORBVI/src
cd catkin_ORBVI
catkin_make
sudo gedit ~/.bashrc
在最后一行添加:source ~/catkin_VIORB/devel/setup.bash
source ~/.bashrc
将代码下载下来复制到catkin_ORBVI/src里.
由于我的系统默认安装的opencv3.1.0,而ubuntu14.04安装ros默认链接的是opencv2.4.8,因此编译会报一个关于opencv版本的错,以下是报错的部分内容.
what(): /build/buildd/opencv-2.4.8+dfsg1/modules/core/src/persistence.cpp:74
1:开始打算把ROS的默认链接opencv版本改为opencv3.1.0,http://www.cnblogs.com/Jessica-jie/p/6959309.html,不过ROS编译不能通过,rosbuild()报错,有点郁闷,这个暂时就不管了,对rosbuild()不太熟悉.
2:还是安装一个opencv2.4.8版本吧,注意修改opencv安装路径,不然会覆盖之前的opencv.很简单在opencv的CMakeLists中设置安装路径就可以了.
set(CMAKE_INSTALL_PREFIX "/usr/local/opencv249" CACHE PATH "Installation Directory")
之后在find_package(OpenCV 2.4.9 REQUIRED)上面添加下面的一句话就可以找到你安装的opencv了
set(OpenCV_DIR "/usr/local/opencv249/share/OpenCV")
由于一直没找到oopencv2.4.8因此安装了一个opencv2.4.9.之后再编译就可以了
chmod +x build.sh
./build.sh
(4)运行
roslaunch src/VIORB/Examples/ROS/ORB_VIO/launch/testeuroc.launch
rosbag play vins_data/MH_01_easy.bag
路径自己设置
(5)结果
至于怎么避开ROS,用单目运行,后面再说吧