SVO pro 编译运行

SVO pro 编译运行

编译

安装ROS

小鱼一键安装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构建带有全局地图的版本(包括所有功能)。

    1. 首先,启用全局地图功能:

      rm rpg_svo_pro_open/svo_global_map/CATKIN_IGNORE

    2. 然后在svo_cmake/cmake/Modules/SvoSetup.cmake添加

      SET(USE_GLOBAL_MAP TRUE)

    3. 下载GTSAM

      git clone --branch 4.0.3 git@github.com:borglab/gtsam.git

    4. 同时修改一下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

相关推荐
deephub6 分钟前
1小时微调 Gemma 3 270M 端侧模型与部署全流程
人工智能·深度学习·大语言模型·gemma
Coding茶水间11 分钟前
基于深度学习的草莓健康度检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
图像处理·人工智能·深度学习·yolo·目标检测·机器学习·计算机视觉
weisian15114 分钟前
入门篇--人工智能发展史-6-AI视觉的“注意力革命”,大模型的核心动力--Transformer
人工智能·深度学习·transformer
_Li.21 分钟前
机器学习-特征选择
人工智能·python·机器学习
囊中之锥.21 分钟前
机器学习第一部分---线性回归
人工智能·机器学习·线性回归
司马阅-SmartRead31 分钟前
学术研究与产业实践深度融合:司马阅AI合伙人冀文辉亮相「首届创新管理与JPIM论文工作坊」,产学研一体化推动企业AI落地
大数据·人工智能
YANshangqian38 分钟前
基于Chromium的隐私优先浏览器
人工智能·intellij-idea
躺柒42 分钟前
读人机沟通法则:理解数字世界的设计与形成01机器循环运行
人工智能·计算机·计算·数字世界·人机对话
智算菩萨1 小时前
摩擦电纳米发电机近期进展的理论脉络梳理:从接触起电到统一建模与能量转换
linux·人工智能·算法
LiYingL1 小时前
TRACEALIGN:追踪大规模语言模型对齐漂移的原因和保护措施
人工智能·语言模型·自然语言处理