概述
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
效果如图:
最后,,这次没什么感慨,就祝大家汤圆节快乐吧(*^__^*) ……
转载于:https://www.cnblogs.com/hxzkh/p/8492231.html
最后
以上就是搞怪耳机为你收集整理的SVO(SLAM)编译运行的全部内容,希望文章能够帮你解决SVO(SLAM)编译运行所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复