Ubuntu18.04编译运行SVO 以及遇到的相应问题及解决


vslam学习的道路上,不断学习不同的开源算法
本文记录了编译运行SVO的一些问题以及解决方法


主要安装过程参考这篇文章SVO安装教程但依然遇到许多困难
安装过程的代码:

mkdir ~/svo_ws

cd ~/svo_ws

mkdir workspace

cd workspace

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

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

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

这样 Sophus、fast、g2o库就分别下载完了(原文中给的代码安装的sophus还是模板类,是不吻合的,会报错——见下文。我此处给出的是非模板类sophus安装的链接)
然后在 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

还有一个数据包需要安装,下载链接
装完之后,需要的包就都安装完成了

一些相应安装包数据包下载过程相当缓慢

不仅缓慢,时不时还弹出不安全的报告,需要人看着它下载
幸好努力后全部成功下载…如果有人需要的话我就放到百度网盘放上来

开始进行编译:
sophus编译:

cd ~/svo_ws/workspace/Sophus
mkdir build

cd build

cmake ..

make

sudo make install

fast编译:

cd ~/svo_ws/workspace/fast

mkdir build

cd build

cmake ..

make

g2o编译:

mkdir build

cd build

cmake ..

make

sudo make install

都安装好之后 ~/svo_ws 下编译(如果之前已经编译过了,就删除 build 下的所有文件,重新回到 ~/svo_ws 编译):

catkin_make

和原有的其他算法所依赖的库相矛盾

这个真的头大了我好一会,我这台电脑上本来安装了ORB-SLAM2(ORB-SLAM3计就是因为冲突被我安装到了另外一台上,但咱总不能安一个算法换一台电脑吧…)
SVO和ORB-SLAM2都依赖Sophus库,但可能由于SVO是较早的算法,依赖的还是非模板类的Sophus(h),而ORB2依赖的是模板类Sophus(hpp),所以原来电脑上的是Sophus模板类
所以在我第一次编译运行的时候,直接报错 fatal error: sophus/se3.h: No such file or directory #include
Ubuntu18.04编译运行SVO 以及遇到的相应问题及解决_第1张图片

(心路历程:我最开始脑子很快(555)的想到了,那我直接把math_utils.h里的改成se3.hpp不就变成调用模板类了吗
不学无术的ruru还是太单纯…确实没那个报错了,直接变成很多函数比如Matrix未定义,这时我意识到SVO可能就是依赖非模板sophus,然后我上网查了很多资料,都没有直接解决这个问题的,有的一些方法也都不太对,试了还是不行
我开始查:模板类sophus和非模板类sophus能不能放在同一台电脑上同时使用
哈哈…结果当然是不行,根本没有相关内容,奇怪我怎么天天遇到奇怪东西,我甚至开始想换路子,在朋友电脑的Ubuntu上跑SVO算了)

冷静了一下,我重新安装了非模板类Sophus在SVO的workspace下面,想能不能不把非模板类sudo make install 只在这里调用捏 ,结果还是不行T T 还是说找不到
我狠了狠心,sudo make install了,发现好像只是把usr里面的内容暂时换成了非模板类的!那就说明是可以让模板非模板共存的!!要调用之前,重新把要用的那个在build文件夹里sudo make install一下存进主系统就行!

这个问题解决了,又出现了新问题:
Ubuntu18.04编译运行SVO 以及遇到的相应问题及解决_第2张图片
可以看到进度已经往前进了,一步一步解决!
这里写的是有未定义的问题,查阅了一些资料后,在此处找到了解决方法,原来是少了库的链接,在/home/ruru/svo_ws/src/rpg_vikit-master/vikit_common下的CMakelists里面,本来是
Ubuntu18.04编译运行SVO 以及遇到的相应问题及解决_第3张图片
加上一句set(Sophus_LIBRARIES libSophus.so)变为:
Ubuntu18.04编译运行SVO 以及遇到的相应问题及解决_第4张图片

等重新都改好了之后再次 ~/svo_ws 下编译(如果之前已经编译过了,就删除 build 下的所有文件,重新回到 ~/svo_ws 编译):

catkin_make

当当!编译成功了!
Ubuntu18.04编译运行SVO 以及遇到的相应问题及解决_第5张图片
接下来就是运行SVO啦
分别在svo_ws下打开三个终端(或者直接打开终端再cd是一样的),
输入下列命令行:

cd ~/svo_ws
source devel/setup.bash
roslaunch svo_ros test_rig3.launch
cd ~/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

又遇到了一些问题…
Ubuntu18.04编译运行SVO 以及遇到的相应问题及解决_第6张图片
发现是文件路径名出错了,下载下来的文件包名字后面有-master 但是执行命令没有故没找到包,更改之后即可成功运行,运行界面如下
Ubuntu18.04编译运行SVO 以及遇到的相应问题及解决_第7张图片
SVO大功告成!

你可能感兴趣的:(slam算法,github,视觉检测,linux)