尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

IC-GVINS如何在一个统一坐标系下融合IMU、视觉与GNSS:因子图优化完全指南

IC-GVINS如何在一个统一坐标系下融合IMU、视觉与GNSS:因子图优化完全指南 IC-GVINS如何在一个统一坐标系下融合IMU、视觉与GNSS因子图优化完全指南【免费下载链接】IC-GVINSA Robust, Real-time, INS-Centric GNSS-Visual-Inertial Navigation System项目地址: https://gitcode.com/gh_mirrors/ic/IC-GVINSIC-GVINS 是由武汉大学 i2Nav 团队开源的鲁棒、实时、INS 中心INS-CentricGNSS-视觉-惯性导航系统。它的核心思想是以惯性导航系统INS为参考基准将 IMU 预积分、GNSS 位置观测和相机重投影三类观测统一转换到同一个世界坐标系中再通过因子图优化基于 Ceres Solver实现紧耦合融合从而在城市峡谷、GNSS 多路径等复杂环境下依然保持稳定、精准的定位。一、为什么选INS 中心稳健性的来源 视觉导航容易受光照、纹理等复杂环境影响而惯性导航不依赖外部环境。IC-GVINS 的设计哲学正是把最可靠的那一方作为主角INS 主导IMU 数据以 200 Hz 高频提供连续的状态外推视觉与 GNSS 作为低频观测对 INS 进行纠偏INS 辅助视觉用精确的 INS 信息辅助特征跟踪与地标三角化在剧烈运动下也不容易丢失跟踪源码见ic_gvins/ic_gvins/tracking/tracking.ccGNSS 辅助初始化利用 GNSS 快速完成航向与姿态初始化避免纯视觉初始化失败带来的连锁崩溃地球自转补偿在 INS 预积分中显式补偿地球自转可显著提升高等级 IMU 的长时间精度。二、统一坐标系如何建立局部 ENU 坐标系 WGS84 因子图优化要求所有观测说同一种语言。IC-GVINS 的做法非常经典选原点系统初始化时以第一个有效 GNSS 的地理坐标经度、纬度、高度即 BLH 坐标作为世界坐标系原点见ic_gvins/ic_gvins/ic_gvins.cc中integration_config_.origin的赋值逻辑全局转局部之后每帧 GNSS 观测都通过Earth::global2local()从 WGS84 大地坐标转换到以原点为参考的局部东北天ENU坐标系再进入因子图局部转全局优化完成后再通过Earth::local2global()把局部状态映射回经纬高输出标准航迹。这些坐标与旋转矩阵的换算含 WGS84 椭球参数、大地水准面曲率半径都封装在 earth.h 中。另外GNSS 天线与 IMU 之间存在物理距离系统在因子中加入了杆臂改正antlever参数把 GNSS 位置换算到 IMU 本体坐标系这也是统一坐标系下严丝合缝的关键细节之一。三、因子图优化三大件IMU 预积分、GNSS 因子与重投影因子 在滑动窗口内Ceres Solver 求解一个非线性最小二乘问题窗口中的变量是各时间节点的位姿、IMU 零偏与相机标定参数。约束因子主要由以下四部分构成因子类型作用核心文件IMU 预积分因子把两个关键帧之间的一段 IMU 数据积分成一个位姿约束ic_gvins/ic_gvins/preintegration/preintegration_earth.hGNSS 因子提供带杆臂改正的位置观测按 GNSS 各轴标准差加权ic_gvins/ic_gvins/factors/gnss_factor.h重投影因子将地图三维地标投影回图像与观测像素比对ic_gvins/ic_gvins/factors/reprojection_factor.h边缘化因子滑动窗口前移时把旧信息压缩成先验防止误差积累ic_gvins/ic_gvins/factors/marginalization_factor.h整个优化流程构建因子图 → 卡方剔除粗差 → 求解 → 边缘化 → 更新状态都在 ic_gvins.cc 的runOptimization()线程中完成与跟踪、融合线程并行保证了实时性。 小贴士窗口大小由配置项optimize_windows_size控制默认 10 个关键帧GNSS 与重投影粗差分别通过卡方检验gnssOutlierCullingByChi2自动剔除这是系统鲁棒的又一层保险。四、地球自转补偿容易被忽视的精度增益 在 gvins.yaml 中有一个开关iswithearth: true开启后预积分方程中加入地球自转角速度项iewn与科里奥利项enwn定义见 earth.h使用PreintegrationEarth而非简单平地模型做 IMU 积分preintegration/preintegration_earth.cc对 MEMS 级别 IMU 的长窗口预积分误差有可测的改善这也是团队另外一篇 IEEE Sensors Journal 论文的主题。五、快速上手一键运行官方数据集 环境要求Ubuntu 18.04/20.04 ROS Ceres Solver 2.x OpenCV 4详见 README.md。mkdir ~/gvins_ws cd ~/gvins_ws mkdir src cd src git clone https://gitcode.com/gh_mirrors/ic/IC-GVINS.git cd .. catkin_make -j8 -DCMAKE_BUILD_TYPERelease source devel/setup.bash运行官方演示数据集修改配置文件与命令行中的路径即可roslaunch ic_gvins ic_gvins.launch configfile:path/urban38/IC-GVINS/gvins.yaml rosbag play path/urban38/urban38.bag官方开源了两套数据集KAIST 复杂城市数据集urban38/urban39轨迹长达 11 公里和团队自采机器人数据集campus/building。urban38 的轨迹示例如下机器人楼宇数据集building中大量 GNSS 遮挡场景非常适合观察因子图在退化环境下的表现六、核心配置参数速查表 ⚙️所有参数集中在 gvins.yaml新手重点关注以下几项参数默认值说明iswithearthtrue是否启用地球自转补偿建议保持开启imudatarate200IMU 采样频率Hz需与数据一致antlever—GNSS 天线杆臂IMU 前-右-下系单位 moptimize_windows_size10因子图滑动窗口大小关键帧数reprojection_error_std1.5重投影误差标准差像素用于优化与粗差剔除gnssthreshold20GNSS 固定阈值抗差mtd_b_c0.0相机与 IMU 时间延时支持在线估计 用自己的数据时请牢记IMU 必须为前-右-下坐标格式且 IMU、相机、GNSS 需完成时间同步并修改ic_gvins/launch/ic_gvins.launch中的话题名。七、总结IC-GVINS 给出了多传感器融合导航的一套清晰答卷以 INS 为圆心、以局部 ENU 统一坐标系为画布、以因子图优化为画笔——IMU 预积分提供连续动态约束GNSS 因子锚定全局位置重投影因子注入视觉几何信息边缘化与卡方剔除则让窗口滚动时的系统又稳又准。如果你想深入源码建议按ic_gvins/ic_gvins/ic_gvins.cc总控流程→preintegration/IMU 积分→factors/三类因子的顺序阅读一周内就能读懂整个融合闭环。【免费下载链接】IC-GVINSA Robust, Real-time, INS-Centric GNSS-Visual-Inertial Navigation System项目地址: https://gitcode.com/gh_mirrors/ic/IC-GVINS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表