SVO pro 编译运行
编译
安装ROS
安装依赖
Install catkin tools
and vcstools
bash
# For Ubuntu 18.04 + Melodic
sudo apt-get install python-catkin-tools python-vcstool
# 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
bash
# 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
下载和编译
bash
mkdir svo_ws && cd svo_ws
# 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 https://github.com/uzh-rpg/rpg_svo_pro_open.git
vcs-import < ./rpg_svo_pro_open/dependencies.yaml
touch minkindr/minkindr_python/CATKIN_IGNORE
# vocabulary for place recognition
cd rpg_svo_pro_open/svo_online_loopclosing/vocabularies && ./download_voc.sh
cd ../../..
- --extend /opt/ros/ :将ROS系统的安装路径作为catkin工作空间的基础路径,以便使用ROS中已经安装的软件包和依赖项。
ROS-DISTRO=melodic(18.04)/noetic(20.04)
- -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 :指定
Eigen
库的安装路径,以便CMake可以正确地找到和链接该库 - vcs-import :使用vcs-import工具,根据指定的
YAML
文件(./rpg_svo_pro_open/dependencies.yaml)
,下载和导入所有依赖项。 - CATKIN_IGNORE文件 :是
ROS
中的一种特殊文件,用于告诉catkin
构建系统忽略该目录中的软件包,不要将其包含在构建中。 - download_voc.sh:下载并解压词袋
sh
wget http://rpg.ifi.uzh.ch/svo2/vocabularies.tar.gz -O - | tar -xz
这里有两种构建类型可供选择:
-
不使用全局地图的构建(前端 + 滑动窗口后端 + 回环检测 / 位姿图优化):
catkin build
-
使用iSAM2构建带有全局地图的版本(包括所有功能)。
-
首先,启用全局地图功能:
rm rpg_svo_pro_open/svo_global_map/CATKIN_IGNORE
-
然后在
svo_cmake/cmake/Modules/SvoSetup.cmake
添加SET(USE_GLOBAL_MAP TRUE)
-
下载GTSAM
git clone --branch 4.0.3 git@github.com:borglab/gtsam.git
-
同时修改一下GTSAM的编译标志
txt# 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(禁用avx指令) # below the line `list_append_cache(GTSAM_COMPILE_OPTIONS_PUBLIC "-march=native")` list_append_cache(GTSAM_COMPILE_OPTIONS_PUBLIC "-mno-avx")
使用相同版本的Eigen有助于避免内存问题。根据我们的经验,禁用avx指令集也有助于解决一些段错误(这可能取决于操作系统和硬件)。
5. 最后catkin build
-