SVO(SLAM)编译运行

SVO即“Fast Semi-Direct Monocular Visual Odometry”视觉slam算法

编译环境:Ubuntu14.04-LTS(64位)、ROS Indigo

不得不说,这个代码是我目前为止编译最为顺利的一个,没有遇到之前各种奇奇怪怪的问题。虽然完全按照原作者的方法来编译应该不会出现问题,但还是决定写一篇关于svo编译的。一是关于这个编译的文章少,我百度的时候没出来几个(可能是因为这个编译太简单了吧,,hehe……);二是原作者没有给出关于 OpenCV 的说明,如果自己之前自定义安装了 OpenCV 的小朋友,在编译的时候可能会出现找不到 OpenCV 的问题。

下面是具体步骤:

1、下载源码

先交代一下,我们是要建两个并列的文件夹,一个(workspace)用于存放所要用到的库,一个(src)用于存放 SVO 代码。我是先把所有需要的东西都下载完,然后再编译的。

首先创建一个文件夹用于放置代码,我的是在 Home 目录下:

mkdir ~/svo_ws

cd ~/svo_ws

mkdir workspace

cd workspace

git clone https://github.com/strasdat/Sophus.git

git clone https://github.com/uzh-rpg/fast.git

git clone https://github.com/RainerKuemmerle/g2o.git

这样三个库 Sophus、fast、g2o 就分别下载完了,然后在 svo_ws 下创建 src:

cd ..

mkdir src

cd src

git clone https://github.com/uzh-rpg/rpg_vikit.git

git clone https://github.com/uzh-rpg/rpg_svo.git

这里下载的两个一个是工具库,一个是源码。

然后下载一会要用到的数据包,这是下载链接,然后把下载的包移到 svo_ws 下备用。

2、编译

然后开始编译,编译要用到的三个库,最后编译程序代码。

先编译 Sophus,进入 Sophus 文件夹:

cd ~/svo_ws/workspace/Sophus

然后切换分支:

git checkout a621ff

如图:

然后创建 build 文件夹并编译:

mkdir build

cd build

cmake ..

make

结果如图:

然后编译fast:
cd ~/svo_ws/workspace/fast

mkdir build

cd build

cmake ..

我在这里编译出错了,因为我 OpenCV 安装时没有装到系统路径,而是自定义的,我之前的文章里也多次提到了。

编辑 fast  下的 CMakeLists.txt,在 20行左右添加自己的安装路径:

set(OpenCV_DIR ~/opencv-2.4.9/share/OpenCV)

保存退出。这里我是沿用上篇文章的 OpenCV2.4.9 版本,路径设置及版本切换参考我之前的文章。删掉 build 下的所有文件(这点狠重要!!),然后重新编译:

cmake ..

make

到这里应该会没问题,如图:

这里提一下,如果你出现了 “unrecognized command line option '-mfpu=neon' ”的错误:

那么自己给自己一巴掌。如果按我的步骤来,不会出现这个错误,出现这个错误的原因是添加了环境变量 ARM_ARCHITECTURE=True。其实作者已经说得狠清楚了,ARM平台才需要添加这个,我们是 PC端编译,所以不要添加这个。

然后编译 g2o,由于我之前编译别的代码时已经将g2o安装到了系统路径,所以这次我没有再次安装。不过这里还是给出安装过程(这是安装到系统路径,如果想自定义路径,请自行参考原作者网页):

cd ~/svo_ws/workspace/g2o

mkdir build

cd build

cmake ..

make

sudo make install

至此需要用到的库已经完都编译或安装完毕,然后就该编译主程序了。再编译之前,原作者也友情提示了一下检查是否安装了 cmake-modules,其实一般来说都是安上了的,我的是 Indigo 版本,所以:

sudo apt-get install ros-indigo-cmake-modules

如果之前编译 fast 时出现了找不到 OpenCV 的问题,那么编译主程序时还会遇到这个问题,别问我怎么知道的[僵尸脸]~~!出错截图:不给你看咩~~!

所以我们一次性修改所有的文件,分别是 src/rpg_vikit/vikit_common/、src/rpg_vikit/vikit_ros/ 、src/rpg_svo/svo/ 、src/rpg_svo/svo_ros/ 下的 4 个CMakeLists.txt 文件,在里面合适位置添加(路径改成你的):

set(OpenCV_DIR ~/opencv-2.4.9/share/OpenCV)

保存退出。然后在 ~/svo_ws 下编译(如果之前已经编译过了,就删除 build 下的所有文件,重新回到 ~/svo_ws 编译):

catkin_make

编译成功如图:

3、运行

新开窗口进入 ~/svo_ws 并运行:

source devel/setup.bash

roslaunch svo_ros test_rig3.launch

然后新开窗口进入 ~/svo_ws 并运行:

rosrun rviz rviz -d src/rpg_svo/svo_ros/rviz_config.rviz

最后运行数据包:

cd ~/svo_ws

rosbag play airground_rig_s3_2013-03-18_21-38-48.bag

效果如图:

 

最后,,这次没什么感慨,就祝大家汤圆节快乐吧(*^__^*) ……

 

posted @ 2018-03-02 11:17  花心葬空魂  阅读(2532)  评论(0编辑  收藏  举报