ORB_SLAM运行详细过程(ubuntu14.04系统和ROS Indigo环境搭建,配置及测试运行)
ORB_SLAM运行详细过程(不能再详细了)本文档包括单目ORB_SLAM从ubuntu系统和ROS环境搭建到最终测试程序,主要包含以下几部分。运行环境:window 7下装虚拟机VMWare 10,在虚拟机里跑ubuntu14.04。参考了一些资料,在测试中也碰到很多问题,故编写这个详细ORB_SLAM运行过程,辛苦堆砌。一、ORB SLAM简介ORBSLAM是15年出的比较完备
ORB_SLAM运行详细过程(不能再详细了)
本文档包括单目ORB_SLAM从ubuntu系统和ROS环境搭建到最终测试程序,主要包含以下几部分。
运行环境:window 7下装虚拟机VMWare 10,在虚拟机里跑ubuntu14.04。参考了一些资料,在测试中也碰到很多问题,故编写这个详细ORB_SLAM运行过程,辛苦堆砌。
一、ORB SLAM简介
ORBSLAM是15年出的比较完备的单目slam算法,orb指的是一种旋转不变性特征,整个算法均是基于orb特征实现的,不同于基于稠密或半稠密地图的slam,orbslam是一个基于特征点地图的slam。最新的orbslam的进展是基于orbslam的关键帧做了半稠密场景重建,新的研究成果可持续关注下面的项目主页:http://webdiis.unizar.es/~raulmur/orbslam/
二、ubuntu系统和ROS环境搭建
(1)ubuntu系统安装
ubuntu系统下载镜像:http://mirrors.ustc.edu.cn/ubuntu-releases/14.04/
我是下载32位的。
虚拟机VMWare 10自己百度安装下就好了。下图是我的ubuntu配置
(2)ROS环境安装
ROS是运行在ubuntu系统下的,Ubuntu和ROS版本对应,这里是对应安装ROS Indigo版
(1)首先打开“软件和更新”对话框,具体可以在Ubuntu最左上角的搜索按钮中搜索。
打开后按照下图进行配置(确保你的"restricted","universe,"和"multiverse."前是打上勾的):
(2)添加源,在终端(快捷键:Ctrl + Alt + T)命令行执行下列命令
首先,有两个工具是需要提前安装的。即cmake和git。
sudo apt-get install cmake
sudo apt-get install git
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
(3)设置密钥,在终端命令行执行下列命令
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
(4)安装,在终端命令行执行下列命令
sudo apt-get update
sudo apt-get install ros-indigo-desktop-full
安装完成后,可以用下面的命令来查看可使用的包:
apt-cache search ros-indigo
(5)初始化ROS,在终端命令行执行下列命令
sudo rosdep init
rosdep update
(6)初始化环境变量,在终端命令行执行下列命令
echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
source ~/.bashrc
上面两句非常非常非常重要,很多小伙伴在日常的开发过程中,有的找不到 Package,找不到node,很多情况下都是没有添加source。
sudo apt-get install python-rosinstall
(7)测试ROS,重新打开终端,在命令行执行下列命令,表示安装成功。
roscore -h
三、ORB_SLAM依赖库
orb-slam依赖于若干库,需要依次安装,包括:Boost/ROS/OpenCV/g2o/DBoW2,针对这些库的安装将分别进行描述。
(1)Boost
使用Boost库主要是用来管理多线程的,在终端命令行执行下列命令即可,
sudo apt-get install libboost-all-dev
(2)ROS(见第二步、已做)
使用ROS主要是用来获取输入图像序列(可以是从摄像头直接获取,或者从已采集好的图像序列文件中获取数据,下面展示的例子属于后者)以及结果可视化。ROS的安装配置也可参考官网链接:
http://wiki.ros.org/indigo/Installation/Ubuntu完成,这里不再赘述。
(3)OpenCV (先编译后安装)
这里安装的opencv版本是opencv-2.4.13,下载地址:https://www.opencv.org/releases.html安装配置的过程如下:
安装opencv之前需要事先安装一些依赖项,在终端命令行执行下列命令:
sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
然后从opencv官网下载opencv2.4.13版本(就下window版),将其用U盘拷贝到虚拟机的ubuntu系统里并解压缩,进入解压缩后目录,创建编译文件夹build,并进入该文件夹,
cd opencv-2.4.13
mkdir build
cd build
先编译OpenCV,后安装OpenCV在终端命令行执行下列命令:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install
(4)g2o 依赖库
(执行图优化的一个通用求解器,这里可以简单理解位姿求解,位姿优化、地图优化)
g2o主要是用来进行优化计算的,编译g2o需要首先安装其他依赖项,在终端命令行执行下列命令:
sudo apt-get install libblas-dev
sudo apt-get install liblapack-dev
sudo apt-get install libeigen3-dev
(5)DBoW2(主要用于place recognition,场景识别,在ORB SLAM中主要用于闭环检测)
DBoW2不需要其他依赖库,直接进行下一步的编译即可。
四、ORB_SLAM源码及编译
(1)ORB_SLAM源码下载
从ORB-SLAM的github主页下载ORB-SLAM项目至目录ORB_SLAM下,在终端命令行执行下列命令:
git clone https://github.com/raulmur/ORB_SLAM.git ORB_SLAM
也可以在window系统里下载好用U盘拷贝到ubuntu系统里。
(2)设置环境变量
如果ORB-SLAM源码的绝对路径为:/home/wzh/ORB_SLAM,那么设置环境变量ROS_PACKAGE_PATH为,在终端命令行执行下列命令:
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH::/home/wzh/ORB_SLAM
(3)第三方库g2o编译
进入目录ORB_SLAM/Thirdparty/g2o/,并在命令行中执行命令,
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
(4)第三方库DBoW2编译
进入目录ORB_SLAM/Thirdparty/DBoW2/,并在命令行中执行命令,
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
Make
(5)ORB_SLAM源码编译
进入目录ORB_SLAM/,并在命令行中执行命令,
mkdir build
cd build
cmake .. -DROS_BUILD_TYPE=Release
make
特别需要注意的是,如果ROS安装的版本是ROS Indigo,需要将ORB_SLAM根目录下的manifest.xml文件中的opencv2依赖一行的代码去掉!
完成ORB-SLAM的编译过程。
五、测试程序、运行程序
前提:ORB_SLAM源码已下载,ros已正确安装,依赖库的安装,第三方库的编译(g2o和DBoW2),ORB_SLAM已编译。
说到运行程序,orbslam是基于ros的,因此首先必须得运行roscore,启动ros服务。随后逐一运行图片显示,地图显示,orb slam主体程序,rosbag图片发布程序。
关于启动各个程序,无论是ORB本体程序还是可视化程序还是图片发布程序,大致有两种方法:
一、逐一手动启动各个程序
(1) 开启新的终端,执行
roscore #启动ros服务
(2) 开启新的终端,执行
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:(你的ORB_SLAM文件夹绝对路径) #添加环境变量,如果ORB_SLAM位于ROS工作空间的话,则忽略
我的是:export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/wzh/ORB_SLAM
这一步是可以省掉的,只需在前面第四步下载ORB_SLAM源码及编译时,设置好环境变量就可以。
设置环境变量
如果ORB-SLAM项目的绝对路径为/home/wzh/ORB_SLAM,那么设置环境变量ROS_PACKAGE_PATH为,
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/wzh/ORB_SLAM
(3) 打开新的终端,执行
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:(你的ORB_SLAM文件夹绝对路径) #添加环境变量,如果ORB_SLAM位于ROS工作空间的话,则忽略
我的是:export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/wzh/ORB_SLAM
rosrun rviz rviz -d Data/rviz.rviz #启动地图视图窗口,显示轨迹及特征点地图
(4) 打开新的终端,执行
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:(你的ORB_SLAM文件夹绝对路径) #添加环境变量,如果ORB_SLAM位于ROS工作空间的话,则忽略
rosrun ORB_SLAM ORB_SLAM Data/ORBvoc.txt Data/Settings.yaml #运行ORB_SLAM, 其中ORBvoc.txt需要先解压
(5) 打开新的终端执行,进入Example.bag所在文件夹,执行
rosbag play --pause Example.bag
#执行图片发布程序,执行后,按空格键开始
二、使用launch文件启动程序
使用launch文件就比较简单了,ORB_SLAM包中包含两个launch文件,对应不同的ROS版本
根据你的ROS版本,选择对应的launch文件即可,launch文件相当于将上一小节的2,3,4步集成在一块:
(1) 开启新的终端,执行
roscore #启动ros服务,#符合表示注释的意思。
(2) 开启新的终端,执行
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:(你的ORB_SLAM文件夹绝对路径) #添加环境变量,如果ORB_SLAM位于ROS工作空间的话,则忽略.
我的ORB_SLAM源码文件夹在:/home/wzh下
先在终端输入命令:
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/wzh/ORB_SLAM
再进入ORB_SLAM目录下
输入命令:roslaunch ExampleGroovyOrNewer.launch
(3) 打开新的终端执行,进入Example.bag所在文件夹,执行
rosbag play --pause Example.bag #执行图片发布程序,执行后,按空格键开始。也可以不按空格键,按s键可以单步查看运行结果。
下面左图展示的是相机姿态的可视化结果,右图展示的是对应时刻的追踪特征点可视化结果。
测试结果:
更多推荐
所有评论(0)