如何快速上手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),仅供参考