SVO2.0 安装编译

1 篇文章 0 订阅
1 篇文章 0 订阅

SVO2-OPEN: https://github.com/uzh-rpg/rpg_svo_pro_open

git挂梯子

https://blog.csdn.net/qq_33349365/article/details/101514412

如果各位终端无法挂梯子,直接下载我在码云上整理好的代码:

第一种编译方式:

git clone https://gitee.com/ma_yu_armor/svo2_build.git

第二种编译方式:

git clone -b method2 https://gitee.com/ma_yu_armor/svo2_build.git

Install

The code has been tested on

  • Ubuntu 18.04 with ROS Melodic

  • Ubuntu 20.04 with ROS Melodic

Install dependencies

Install catkin tools and vcstools if you haven't done so before. Depending on your operating system, run

# For Ubuntu 18.04 + Melodic
sudo apt-get install python-catkin-tools python-vcstool

or

# For Ubuntu 20.04 + Noetic
sudo apt-get install python3-catkin-tools python3-vcstool python3-osrf-pycommon

Install system dependencies and dependencies for Ceres Solver

# system dep.
sudo apt-get install libglew-dev libopencv-dev libyaml-cpp-dev 
# Ceres dep.
sudo apt-get install libblas-dev liblapack-dev libsuitesparse-dev

Clone and compile

Create a workspace and clone the code (ROS-DISTRO=melodic/noetic):

意思是将下面出现的<ROS-DISTRO>替换成你ROS的名称(18为"melodic",20为"noetic")

  • 创建工作空间

mkdir svo_ws && cd svo_ws
  • catkin相关配置

# see below for the reason for specifying the eigen path
catkin config --init --mkdirs --extend /opt/ros/<ROS-DISTRO> --cmake-args -DCMAKE_BUILD_TYPE=Release -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3
  • 下载原码

cd src
​
git clone git@github.com:uzh-rpg/rpg_svo_pro_open.git
vcs-import < ./rpg_svo_pro_open/dependencies.yaml
​
#这样可以不编译,如果要打开全局重定位功能需要删除,后面有交代,先这么写
touch minkindr/minkindr_python/CATKIN_IGNORE

注意:git clone git@github.com:uzh-rpg/rpg_svo_pro_open.git...会失败,原因是使用git@...方式克隆需要私钥,人生苦短,不用配置,用https://github.com/uzh-rpg/rpg_svo_pro_open.git 代替。同理后面的...vcs-import < ./rpg_svo_pro_open/dependencies.yaml意思是clone dependencies.yaml里面罗列的地址的一系列库,但是打开会发现也是用git@写的,将地址按如下方式替换:

repositories:
  catkin_simple:
    type: git
    #url: git@github.com:catkin/catkin_simple.git~~
	url: https://github.com/catkin/catkin_simple.git
    version: master
  cmake_external_project_catkin:
    type: git
    #url: git@github.com:zurich-eye/cmake_external_project_catkin.git~~
	url: https://github.com/zurich-eye/cmake_external_project_catkin.git
    version: master
......

将这个文件复制出来(置于src/中),删除其他文件,重新执行命令。终端需要挂梯子!!!

如果实在不行,可以到我的gitee上下载(见开头),里面包含了所有库(包括后面要用的gtsam)

git clone https://github.com/uzh-rpg/rpg_svo_pro_open.git
vcs-import < dependencies.yaml
  • 继续安装

# vocabulary for place recognition 这句不需要代理,新开终端,下完关掉
cd rpg_svo_pro_open/svo_online_loopclosing/vocabularies && ./download_voc.sh
cd ../../..

在开始编译之前,可以发现src/dbow2_catkin/CmakeList.txt中这样写道(同样的需要修改git地址):

ExternalProject_Add(dbow2_src
  #GIT_REPOSITORY git@github.com:dorian3d/DBoW2.git
	GIT_REPOSITORY https://github.com/dorian3d/DBoW2.git
  CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CATKIN_DEVEL_PREFIX}
  BUILD_COMMAND CXXFLAGS=-i${CATKIN_DEVEL_PREFIX}/include make
  INSTALL_COMMAND make install
)

至此安装工作完成


编译

这里有两种编译方式,建议按照顺序都尝试一下,这样一旦出问题,更好解决。

1. 直接编译 Build without the global map (front-end + sliding window back-end + loop closure/pose graph)

catkin build -j6

Errors

  1. 缺少两个库

Image text

 

 

缺少库:

cd src/

git clone https://github.com/ethz-asl/catkin_boost_python_buildtool.git

git clone https://github.com/ethz-asl/numpy_eigen.git
  1. Opencv3

该开源项目是基于Opencv3写的,本人电脑里装了4(ros自带3),故在src/rpg_svo_open/svo_ros/CmakeList.txt中,修改如下内容:

find_package(catkin_simple REQUIRED)
find_package(rostest REQUIRED)
catkin_simple()
#find_package(OpenCV REQUIRED)  #会默认找到Opencv4
find_package(OpenCV 3 REQUIRED) #指定OpenCv3

至此编译通过:

小编这里共38个包。


2.第二种编译方式Build with the global map using iSAM2 (all functionalities)

  • 首先把上面提到的阻止svo_global_map编译的CATKIN_IGNORE删除

rm rpg_svo_pro_open/svo_global_map/CATKIN_IGNORE

并且在svo_cmake/cmake/Modules/SvoSetup.cmake中:

SET(USE_GLOBAL_MAP TRUE)
  • 克隆GTSAM (与其他pkg在同一目录内)

git clone --branch 4.0.3 https://github.com/borglab/gtsam.git
  • 修改cmakelist

# 1. gtsam/CMakelists.txt: use system Eigen
-option(GTSAM_USE_SYSTEM_EIGEN "Find and use system-installed Eigen. If 'off', use the one bundled with GTSAM" OFF)
+option(GTSAM_USE_SYSTEM_EIGEN "Find and use system-installed Eigen. If 'off', use the one bundled with GTSAM" ON)
# 2. gtsam/cmake/GtsamBuildTypes: disable avx instruction set
# below the line `list_append_cache(GTSAM_COMPILE_OPTIONS_PUBLIC "-march=native")`
list_append_cache(GTSAM_COMPILE_OPTIONS_PUBLIC "-mno-avx")

注意两处更改是不同的文件(见注释)。

ERROR

  1. gtsam 与boost

这种boost报错的问题一般大家是不会有的,因为我之前装了很多boost版本才会导致这样的问题。将boost全部删除干净,使用ros-melodic中自带的boost(version 1.65)即可。但是某些小伙伴可能会出现找不到boost的情况。首先检查是否安装。

sudo apt-get install libboost-all-dev

如果问题还不能够解决,那就是gtsam在找boost的时候路径出了问题。它默认到/usr/local/中去找,然而ros中的boost位于/usr中。与gtsam的CmakeList中指定boost路径如下(大约在165行):

# Store these in variables so they are automatically replicated in GTSAMConfig.cmake and such.
set(BOOST_FIND_MINIMUM_VERSION 1.43)
set(BOOST_FIND_MINIMUM_COMPONENTS serialization system filesystem thread program_options date_time timer chrono regex)
set(BOOST_ROOT "/usr/include") #加上这行
set(BOOST_LIBRARYDIR "/usr/include/lib") #和这行
#add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY)#myk

终于编译通过!

如果觉得文章内容有帮助的话,点赞关注评论转发吧。 (请喝奶茶也是可以的)

 

 

  • 9
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值