如何快速上手IC-GVINS:Ubuntu+ROS环境搭建、编译构建与Demo跑通完整教程
如何快速上手IC-GVINSUbuntuROS环境搭建、编译构建与Demo跑通完整教程【免费下载链接】IC-GVINSA Robust, Real-time, INS-Centric GNSS-Visual-Inertial Navigation System项目地址: https://gitcode.com/gh_mirrors/ic/IC-GVINSIC-GVINS 是一款以惯导INS为核心的鲁棒、实时 GNSS-视觉-惯性导航系统源自武汉大学 i2Nav 实验室的 IEEE RA-L 2022 论文。本文手把手教你在 Ubuntu ROS 环境下完成环境搭建、编译构建并跑通官方 Demo 数据集帮助新手在 1 小时内看到 RViz 中的实时轨迹 。上图是 IC-GVINS 的系统架构GNSS、IMU、Camera 三路传感器数据经过 INS 初始化与 mechanization捷联解算后以 GNSS-RTK 因子、预积分因子和重投影因子的形式在统一的因子图优化框架中紧耦合融合。一、IC-GVINS 是什么为什么以 INS 为核心普通视觉导航系统怕光照变化和纹理缺失而惯性导航不受外部环境影响。IC-GVINS 的巧妙之处在于地球自转补偿在 INS 中补偿地球自转项显著提升 MEMS 级 IMU 的精度INS 辅助前端用高精度 INS 状态辅助特征跟踪与地标三角化高动态场景更稳GNSS 辅助初始化利用 GNSS/RTK 快速完成初始化IMU、视觉、GNSS 在统一世界坐标系下做紧耦合因子图优化。项目核心算法源码位于ic_gvins/ic_gvins/目录跟踪tracking/、预积分preintegration/、因子factors/等模块ROS 接口在ic_gvins/ROS/中。二、环境要求清单5 分钟确认你的系统对照下面清单一次性检查到位可避免后期反复返工组件版本要求说明操作系统Ubuntu 18.04 / 20.04推荐 20.04编译器gcc ≥ 8.0 或 clang ≥ 6.0需要支持 C14ROSMelodic (18.04) / Noetic (20.04)按系统版本对应选择Ceres Solver2.0.0 或 2.1.0非线性最小二乘求解器OpenCV≥ 3.2.0支持 OpenCV 4图像与特征处理Eigen≥ 3.3.7线性代数TBB / glogglog ≥ 0.4.0并行与日志yaml-cpp任意稳定版解析配置文件三、一键安装步骤依赖快速配置方法打开终端执行以下命令即可完成大部分依赖安装# 1. 编译器以 gcc-8 为例 sudo apt install gcc-8 g-8 # 2. Ceres 依赖Eigen、glog、TBB sudo apt install libeigen3-dev libgoogle-glog-dev libtbb-dev # 3. OpenCV sudo apt install libopencv-dev # 4. yaml-cpp sudo apt install libyaml-cpp-dev⚠️ 注意Ceres Solver 2.0.0/2.1.0 通常不在系统源中需要按照官方安装文档从源码编译先装 Eigen、SuiteSparse 等依赖。如果上述包版本不满足要求同样需要从源码构建。ROS 部分请按对应版本安装Ubuntu 18.04 装 ROS MelodicUbuntu 20.04 装 ROS Noetic参考 ROS 官方 wiki 的 Ubuntu 安装章节。四、编译构建三步完成 catkin_make创建 ROS 工作空间并克隆源码编译命令一行搞定# 1. 创建工作空间 mkdir ~/gvins_ws cd ~/gvins_ws mkdir src cd src # 2. 克隆 IC-GVINS 源码 git clone https://gitcode.com/gh_mirrors/ic/IC-GVINS.git # 3. 返回工作空间并编译gcc 示例 cd .. catkin_make -j8 -DCMAKE_BUILD_TYPERelease -DCMAKE_C_COMPILERgcc-8 -DCMAKE_CXX_COMPILERg-8如果你用 clang 编译器把编译命令换成catkin_make -j8 -DCMAKE_BUILD_TYPERelease -DCMAKE_C_COMPILERclang -DCMAKE_CXX_COMPILERclang构建成功后可执行节点ic_gvins_ros会生成在devel/lib/ic_gvins/下。第三方依赖 abseil-cpp 已内置在ic_gvins/thirdparty/中CMake 会自动编译无需额外下载。五、跑通 Demo播放 ROS bag 看实时定位IC-GVINS 使用标准 ROS bag 作为输入传感器话题约定如下传感器消息类型默认话题频率 (Hz)相机sensor_msgs/Image/cam020IMUsensor_msgs/Imu/imu0200GNSS-RTKsensor_msgs/NavSatFix/gnss01 关键细节IMU 数据必须是**前-右-下front-right-down**坐标系格式。准备好数据集后如 KAIST urban38 序列打开两个终端# 终端 1加载环境并启动 IC-GVINS 节点 # configfile 需替换为你本地配置文件的实际路径 source ~/gvins_ws/devel/setup.bash roslaunch ic_gvins ic_gvins.launch configfile:path/urban38/IC-GVINS/gvins.yaml # 终端 2播放 ROS bag rosbag play path/urban38/urban38.bag启动后 RViz 会自动弹出配置来自config/visualization.rviz你可以实时看到轨迹与视觉地标。运行结束后脚本scripts/show_statistics.py可帮你统计定位精度scripts/show_tracking.py查看特征跟踪情况。上图是 KAIST urban38 序列时长约 2154 秒、轨迹 11191 米的覆盖区域。官方还开源了自采机器人数据集campus 序列约 950 秒、1337 米building 序列约 1820 秒、2560 米适合作为入门验证数据。六、配置文件速览gvins.yaml 关键参数运行 Demo 前务必检查配置文件config/gvins.yaml启动时通过configfile:传入核心参数包括imudatarateIMU 原始数据频率Hz需与你的数据一致antleverGNSS 天线相对 IMU 的杆臂IMU 前-右-下方向单位 mimumodelIMU 噪声建模参数陀螺/加速度随机游走、零偏不稳定性、相关时间cam0相机内参、畸变、分辨率及相机-IMU 外参q_b_c、t_b_c四元数 平移track_*/optimize_*特征跟踪与滑动窗口优化的阈值通常保持默认即可。若要使用自己的数据记得同步修改ic_gvins/launch/ic_gvins.launch中的话题名imu_topic、gnss_topic、image_topic与配置文件参数。七、常见问题排查❓ 编译报 Ceres 找不到CMake 找不到 Ceres 2.0/2.1 时优先确认 Ceres 安装路径是否在默认搜索范围/usr/local或为 catkin_make 追加-DCERES_INCLUDE_DIR、-DCERES_LIBRARIES参数。❓ 节点启动后 RViz 无数据依次检查bag 话题名是否与 launch 配置一致rostopic list验证、IMU 是否为前-右下坐标系、配置文件路径是否传对。❓ 定位跳变或不收敛多半是外参/时间同步问题。IC-GVINS 支持在线估计外参与时间延迟optimize_estimate_extrinsic、optimize_estimate_td但初始值偏差过大时建议先标定好再融合。八、写在最后恭喜你已经完成了 IC-GVINS 从环境搭建 → 依赖安装 → 编译构建 → Demo 跑通的全流程 ✅。接下来建议用 campus 数据集完整跑一遍对比 urban38 观察不同场景下的精度差异阅读ic_gvins/ic_gvins/ic_gvins.h与ic_gvins/preintegration/源码理解 INS 预积分与因子图设计尝试替换为自己的 ROS bag 数据体验从配置到落地的完整定制流程。祝你在多传感器融合导航的路上玩得开心【免费下载链接】IC-GVINSA Robust, Real-time, INS-Centric GNSS-Visual-Inertial Navigation System项目地址: https://gitcode.com/gh_mirrors/ic/IC-GVINS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Oracle SQL CASE表达式实战:从条件判断到高阶应用

Oracle SQL CASE表达式实战:从条件判断到高阶应用

1. 项目概述:为什么说CASE表达式是SQL的“决策大脑”?在数据库的世界里,尤其是与Oracle打交道时,我们经常面临一个核心问题:如何让静态的数据查询结果,根据不同的条件动态地“活”起来?比如&…

2026/8/26 16:06:16 阅读更多 →
Windows11 休眠与睡眠设置实战指南:3 种途径任选,告别耗电纠结

Windows11 休眠与睡眠设置实战指南:3 种途径任选,告别耗电纠结

Windows11 休眠与睡眠设置实战指南:3 种途径任选,告别耗电纠结 【免费下载链接】windows11 🌎 Windows 11 Settings, Tweaks, Scripts 项目地址: https://gitcode.com/GitHub_Trending/wi/windows11 用 Windows11 时,你肯定…

2026/8/26 11:09:07 阅读更多 →
2026年软件测试面试核心考点与趋势解析

2026年软件测试面试核心考点与趋势解析

1. 2026年软件测试面试趋势与核心能力解析金三银四的招聘旺季永远是技术人职业发展的关键窗口期。作为深耕测试领域十年的老兵,我完整经历了从手工测试到自动化测试、再到质量保障体系的行业变革。2026年的软件测试岗位面试已经呈现出明显的技术深度与广度并重趋势&…

2026/8/26 16:07:02 阅读更多 →

最新新闻

海思平台不依赖频道文件实现 DVB 直接播放

海思平台不依赖频道文件实现 DVB 直接播放

1. 频道文件与直接调谐的区别传统方案的流程是:搜索频道↓ 导出频道文件↓ 系统预置频道文件↓ 开机导入↓ 根据文件中的 PID 播放频道文件通常包含:频率;符号率;调制方式;节目号;视频 PID;音频…

2026/8/26 18:52:29 阅读更多 →
海思 DVB 播放超时与 C 语言同名函数冲突排查

海思 DVB 播放超时与 C 语言同名函数冲突排查

概要本文记录一次海思 DVB 直接播放失败的定位过程。程序最初出现 HI_UNF_TUNER_SetAttr failed,修正前端参数后又出现 HIADP_Search_GetAllPmt failed 和 DMX_DataRead timeout。进一步分析发现,unf_abs.c 与 hi_adp_demux.c 中存在同名函数&#xff0c…

2026/8/26 18:52:29 阅读更多 →
IoT OTA 灰度发布与回滚:从设备分组到故障收敛

IoT OTA 灰度发布与回滚:从设备分组到故障收敛

一次固件在实验室成功升级,只证明“这台设备在这次条件下写入并启动了新镜像”。它没有证明车队里不同硬件修订、运营商网络、剩余电量、存储磨损、现场外设和长时间离线设备都能安全升级。真正的 IoT OTA 系统不是文件分发器,而是一套限制故障半径、判断…

2026/8/26 18:52:29 阅读更多 →
【超详细】搞懂tar、tgz、zip、rar、7z归档压缩格式,理清跨平台踩坑根源

【超详细】搞懂tar、tgz、zip、rar、7z归档压缩格式,理清跨平台踩坑根源

文章目录1、先分清归档与压缩,很多初学者的概念误区1.1 归档与压缩二者完全是两件独立工作1.2 两套技术路线诞生的历史背景2、tar家族格式完整拆解:tar / tar.gz / tgz / tar.bz2 / tar.xz2.1 tar归档格式,只打包不压缩2.2 gzip介入之后&…

2026/8/26 18:52:29 阅读更多 →
Langchain学习笔记(4) ---rag基础和向量数据库

Langchain学习笔记(4) ---rag基础和向量数据库

一、文档加载与切分二、Embeddingfrom langchain_milvus.vectorstores.milvus import Milvus from utils.rag_factory import get_milvus_client# 获取milvus客户端 vector_store: Milvus get_milvus_client("employee_handbook",is_deleteFalse) results vector…

2026/8/26 18:52:29 阅读更多 →
【Playwright教程】Playwright必备基础知识、核心用途与第一个截图实战

【Playwright教程】Playwright必备基础知识、核心用途与第一个截图实战

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:软件测试学习提升资料包 🔥 教程推荐:自动化测试从入门到精通全套保姆级教程 📢欢迎点赞 👍 收藏 ⭐留言 学习 Playwri…

2026/8/26 18:51:29 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →