news 2026/5/4 13:14:14

保姆级教程:在Ubuntu 20.04 + ROS Noetic上从源码编译运行GVINS(含Ceres/Eigen版本避坑指南)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保姆级教程:在Ubuntu 20.04 + ROS Noetic上从源码编译运行GVINS(含Ceres/Eigen版本避坑指南)

保姆级教程:在Ubuntu 20.04 + ROS Noetic上从源码编译运行GVINS(含Ceres/Eigen版本避坑指南)

当视觉惯性里程计(VIO)遇上全球导航卫星系统(GNSS),会碰撞出怎样的火花?GVINS作为港科大最新开源的GNSS-Visual-Inertial紧耦合融合框架,为机器人定位领域带来了全新的解决方案。本文将带你从零开始,在Ubuntu 20.04和ROS Noetic环境下,一步步完成GVINS的编译部署,特别针对Ceres和Eigen版本冲突这一"拦路虎"提供详细解决方案。

1. 环境准备与依赖安装

在开始GVINS的编译之前,我们需要确保系统环境满足所有必要条件。不同于官方文档基于ROS Kinetic的说明,我们将针对Ubuntu 20.04和ROS Noetic进行适配。

1.1 系统基础环境配置

首先更新系统软件包并安装必要的工具链:

sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential cmake git wget

接下来安装ROS Noetic完整版(如果尚未安装):

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt update sudo apt install -y ros-noetic-desktop-full echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc

1.2 关键依赖版本管理

GVINS对几个核心库有严格的版本要求,这是最容易出现问题的地方。我们需要特别注意:

依赖库要求版本常见问题
Eigen3.3.3高版本API不兼容
Ceres1.12.0编译错误
C++11标准语法支持

提示:建议在虚拟环境或容器中操作,避免影响系统原有环境

2. 精准安装指定版本依赖

2.1 Eigen 3.3.3安装指南

Eigen的版本控制至关重要,高版本会导致GVINS编译失败。以下是安全安装方法:

wget https://gitlab.com/libeigen/eigen/-/archive/3.3.3/eigen-3.3.3.tar.gz tar xzf eigen-3.3.3.tar.gz cd eigen-3.3.3 mkdir build && cd build cmake .. sudo make install

验证安装是否成功:

pkg-config --modversion eigen3

如果显示不是3.3.3版本,可能需要手动卸载现有版本:

sudo rm -rf /usr/local/include/eigen3 sudo rm /usr/local/share/pkgconfig/eigen3.pc

2.2 Ceres Solver 1.12.0编译安装

Ceres的安装相对复杂,需要先安装其依赖项:

sudo apt install -y libgoogle-glog-dev libgflags-dev libatlas-base-dev libsuitesparse-dev

然后从源码编译Ceres:

wget https://ceres-solver.googlesource.com/ceres-solver/+archive/1.12.0.tar.gz tar xzf 1.12.0.tar.gz cd ceres-solver-1.12.0 mkdir build && cd build cmake .. -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF make -j$(nproc) sudo make install

3. GNSS通信包与GVINS源码编译

3.1 gnss_comm安装

gnss_comm是GVINS的GNSS通信基础包,需要先单独安装:

mkdir -p ~/gvins_ws/src cd ~/gvins_ws/src git clone https://github.com/HKUST-Aerial-Robotics/gnss_comm.git cd .. catkin_make source devel/setup.bash

3.2 GVINS源码编译

现在可以开始GVINS本体的编译:

cd ~/gvins_ws/src git clone https://github.com/HKUST-Aerial-Robotics/GVINS.git cd .. catkin_make

编译过程中常见的错误及解决方案:

  1. Eigen版本不匹配错误

    error: 'Eigen::internal::array_size' has not been declared

    解决方法:确认Eigen 3.3.3已正确安装,并移除其他版本

  2. Ceres相关错误

    undefined reference to `ceres::Problem::AddParameterBlock'

    解决方法:检查Ceres版本是否为1.12.0,并重新编译安装

  3. C++11标准错误

    error: 'make_unique' is not a member of 'std'

    解决方法:在CMakeLists.txt中添加:

    add_compile_options(-std=c++11)

4. 运行测试与实战调试

4.1 启动GVINS节点

编译成功后,可以尝试运行示例:

source ~/gvins_ws/devel/setup.bash roslaunch gvins visensor_f9p.launch

在另一个终端中启动RViz可视化:

rviz -d ~/gvins_ws/src/GVINS/config/gvins_rviz_config.rviz

4.2 使用示例数据集测试

如果需要测试实际数据,可以从GVINS-Dataset下载示例bag文件:

wget [数据集下载链接] -O ~/dataset.bag rosbag play ~/dataset.bag

4.3 常见运行时问题排查

  1. GNSS数据无法接收

    • 检查设备连接和权限
    • 确认串口设置正确
  2. VIO初始化失败

    • 确保环境有足够特征点
    • 调整相机曝光参数
  3. 坐标系对齐问题

    • 检查ENU坐标系设置
    • 确认GNSS天线杆臂值正确

注意:首次运行时可能需要较长时间初始化,特别是在GNSS信号较弱的区域

5. 进阶配置与性能优化

5.1 参数调优指南

GVINS的核心参数集中在config目录下的yaml文件中,几个关键参数:

# GNSS相关参数 gnss: antenna_delay: 0.0 # 天线延迟补偿 lever_arm: [0.1, 0.0, 0.2] # 杆臂值 # VIO相关参数 feature: max_cnt: 150 # 最大特征点数 min_dist: 30 # 特征点最小间距

5.2 多传感器时间同步

对于高精度应用,需要确保各传感器时间同步:

  1. 使用PTP协议同步设备时钟
  2. 在launch文件中设置正确的时间戳偏移量
  3. 启用硬件触发模式减少抖动

5.3 系统性能监控

可以通过以下命令监控系统运行状态:

rostopic echo /gvins/status rqt_plot /gvins/pose/position/x:y:z

6. 实际部署经验分享

在室内外过渡场景中,GVINS的表现尤为出色。我曾在一个仓库到停车场的测试中观察到,当机器人从GNSS信号良好的区域进入完全无GNSS的室内时,系统能够平滑过渡到纯VIO模式,而重新获得GNSS信号后又能快速修正累积误差。

几个实用小技巧:

  • 在GNSS信号边缘区域,适当降低GNSS权重
  • 对于固定场景,可以预先录制一段地图辅助初始化
  • 定期校准IMU参数,特别是在温度变化大的环境中
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 13:13:22

利用Taotoken CLI工具一键配置团队开发环境与密钥

利用Taotoken CLI工具一键配置团队开发环境与密钥 1. 安装Taotoken CLI工具 Taotoken CLI工具提供两种安装方式,适用于不同使用场景。对于需要频繁调用CLI的开发者,推荐全局安装: npm install -g taotoken/taotoken若仅需临时使用或避免全…

作者头像 李华
网站建设 2026/5/4 13:12:03

本地安全沙箱AI助手部署指南:容器化隔离与隐私保护实践

1. 项目概述:一个运行在本地安全沙箱中的个人AI助手如果你和我一样,既想享受AI助手带来的便利——比如让它帮你搜索网页、整理文件、安排日程,又对把API密钥、个人文件甚至整个数字生活暴露给一个“黑盒”程序感到不安,那么Lobste…

作者头像 李华
网站建设 2026/5/4 13:09:45

从微内核到无限扩展:下一代操作系统架构深度解析与实现路径

1. 项目概述:一个面向未来的操作系统构想最近在开源社区里,一个名为“goinfinite/os”的项目标题引起了我的注意。乍一看,这个名字充满了野心——“goinfinite”直译为“走向无限”,而“os”则明确指向了操作系统。这让我立刻联想…

作者头像 李华
网站建设 2026/5/4 13:08:05

10分钟快速上手RVC:基于检索的语音转换WebUI完整教程

10分钟快速上手RVC&#xff1a;基于检索的语音转换WebUI完整教程 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversi…

作者头像 李华
网站建设 2026/5/4 13:04:26

如何高效使用X-TRACK离线GPS自行车码表:专业用户的实用指南

如何高效使用X-TRACK离线GPS自行车码表&#xff1a;专业用户的实用指南 【免费下载链接】X-TRACK A GPS bicycle speedometer that supports offline maps and track recording 项目地址: https://gitcode.com/gh_mirrors/xt/X-TRACK X-TRACK是一款支持离线地图和轨迹记…

作者头像 李华
网站建设 2026/5/4 13:03:42

如何5分钟搞定Windows与Office激活难题

如何5分钟搞定Windows与Office激活难题 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾经为Windows或Office的激活问题头疼过&#xff1f;每次重装系统后都要到处寻找激活工具&#xff…

作者头像 李华