SVO在ubuntu1804, ROS melodic上运行及错误解决

  环境安装主要参考SVO作者,网址。

  首先你要有装ROS melodic,这里不再多说。总共要安装两个库,分别是Sophus和FAST。

  然后在主目录创建一个文件夹,命名为workspace,执行以下命令安装Sophus库。

cd workspace
git clone https://github.com/strasdat/Sophus.git
cd Sophus
git checkout a621ff
mkdir build
cd build
cmake ..
make
sudo make install 

  执行以下命令安装FAST库。

cd workspace
git clone https://github.com/uzh-rpg/fast.git
cd fast
mkdir build
cd build
cmake ..
make
sudo make instal

  这两个库都是在workspace文件夹下的,然后在workspace中再创建dataset和src文件夹,一个用来装数据集一个用来装代码。数据集下载链接,1.8G

  然后下载vikit,它提供了SVO需要的相机模型、数学和插值函数等。执行以下命令。

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

  安装ROS依赖项。执行以下命令

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

  下载SVO代码。执行以下命令。

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

  最后执行catkin_make命令,当然这是理想的流程,接下去介绍我在实际操作中出现的错误。

 

 Sophus 错误:fatal error: sophus/se3.h: No such file or directory

将src文件夹中rpg_svo/svo目录下的cmakelists.txt中,在73行左右,${Sophus_INCLUDE_DIRS}改为绝对路径,我的是"/home/wjb1804/workspace/Sophus",

同样的操作还要对在rpg_svo/svo_ros下的cmakelists.txt进行,在58行。

然后对rpg_vikit/vikit_common下的cmakelists.txt也进行同样操作,在33行。还要修改66行的链接库地址,也改成绝对路径,我的是在"/usr/local/lib/libSophus.so"

对rpg_vikit/vikit_ros,在cmakelists.txt的29行,修改成绝对路径"/home/wjb1804/workspace/Sophus"

改完所有cmakelists.txt后再进行catkin_make操作。

 错误:unit_complex_.real() = 1.; ^~

 unit_complex_.imag() = 0.;
                          ^~
解决方法:找到workspace/Sophus/sophus/so2.cpp,打开,将第31行改成unit_complex_.real(1.);
32行改成unit_complex_.imag(0.);

然后进行catkin_make操作,应该能编译完成。

然后开始跑代码,总共需要打开四个终端,一个roscore,另外三个启动程序:
可以直接在之前的终端中按ctrl+shift+T来添加终端,按三次,原来的终端输入roscore,另外三个终端需要执行的命令如下(确保三个终端都在workspace目录下即cd workspace)。
source devel/setup.bash
roslaunch svo_ros test_rig3.launch

会有黄色的警告提示没找到参数,这没关系。

第二个终端启动rviz,改成你对应的src/rpg_svo/svo_ros/rviz_config.rviz路径。

source devel/setup.bash
rosrun rviz rviz -d src/rpg_svo/svo_ros/rviz_config.rviz 

第三个终端。

source devel/setup.bash
rosbag play dataset/airground_rig_s3_2013-03-18_21-38-48.bag 

然后我又出错,报错内容:[svo-1] process has died [pid 2709, exit code -11

解决方法,修改cmaklists.txt,删除-march=native。

src/rpg_svo/svo_ros目录下的cmaklists.txt的第8行。

src/rpg_svo/svo目录下的cmaklists.txt的第34行。

src/rpg_vikit/vikit_common目录下的cmaklists.txt的第10行。

src/rpg_vikit/vikit_ros目录下的cmaklists.txt的第8行。

然后重新catkin_make操作即可,再运行代码。

成功截图:

SVO在ubuntu1804, ROS melodic上运行及错误解决

SVO在ubuntu1804, ROS melodic上运行及错误解决

上一篇:linux基本操作


下一篇:初入项目,坑自己的习惯,小结