开源代码分享之KF-GINS:基于扩展卡尔曼滤波的GNSS/INS组合导航算法

发布时间:[2022-10-22] 来源:[武汉大学i2Nav团队] 点击量:[7452]


虽然GNSS/INS松组合算法已经很成熟,但对初学者来说正确实现它仍是不小的挑战。为此,我们开源一套基于扩展卡尔曼滤波的GNSS/INS组合导航算法代码(KF-GINS)。代码结合团队已公开的视频课程、讲义,供初学者入门使用,也可作为基础的GNSS/INS松组合算法研究平台。

    随着自动驾驶和智能无人系统的发展,复杂环境下连续准确的定位定姿需求日益增加。在众多的导航定位技术中,全球卫星导航系统(GNSS)和惯性导航系统(INS)具有天然的互补性,因此GNSS/INS组合导航被公认为最经典、使用最广泛的组合导航系统。GNSS/INS的数据融合算法首先通过INS机械编排实现导航状态的推算,然后通过Kalman滤波将GNSS的定位和测速信息作为观测量对INS推算的导航状态量进行修正。GNSS/INS数据融合的Kalman滤波算法已经很成熟,但涉及惯性导航算法、IMU误差建模、Kalman滤波设计实现等多方面的知识,正确实现组合导航算法对初学者来说仍是不小的挑战。

    武汉大学i2Nav团队开源了一套基于扩展卡尔曼滤波的GNSS/INS组合导航系统(EKF-Based GNSS/INS Integrated Navigation System, KF-GINS)算法代码。这套代码结合团队已公开的视频课程、讲义[1, 2],供初学者入门使用,也可作为基础的GNSS/INS松组合算法研究平台。KF-GINS采用C++语言编写,各功能函数和模块相对独立,复用性和可扩展性较强。KF-GINS已上传到GitHub,可通过以下链接获取:

https://github.com/i2Nav-WHU/KF-GINS


KF-GINS主要特点包括:

a. 扩展卡尔曼滤波(误差状态向量)架构的GNSS/INS松组合算法,包括IMU误差补偿、惯性导航解算、Kalman滤波、误差反馈等环节;

b. 采用21维系统误差状态,包括位置误差、速度误差、姿态误差、IMU零偏误差和IMU比例因子误差;

c. 姿态误差采用Phi角模型,速度、位置误差定义在导航坐标系下;

d. 惯性导航解算采用基于角速度和加速度线性变化假设的双子样机械编排算法,补偿了姿态圆锥效应、速度的旋转效应和划桨效应。


1666369651541033346.png

KF-GINS系统框架


这套代码配套的组合导航测试数据集(包含不同精度等级IMU)可以通过如下链接获取:

https://github.com/i2Nav-WHU/awesome-gins-datasets

开源、视频和讲义中如有错误请各位同行批评指正,其它意见和建议也请不吝赐教。团队的开源算法交流QQ群: 481173293(i2Nav多源融合定位算法交流)


参考文献:


[1] 牛小骥陈起金“惯性导航原理与GNSS/INS组合导航课程讲义”武汉大学多源智能导航实验室, 2022. [Link]

[2] 牛小骥陈起金“惯性导航原理与GNSS/INS组合导航课程视频”武汉大学多源智能导航实验室, 2022. [Link]

[3] X. Niu, Q. Zhang, L. Gong, C. Liu, H. Zhang, C. Shi, J. Wang and M. Coleman (2014). "Development and evaluation of GNSS/INS data processing software for position and orientation systems." Survey Review 2014; 47(341), 87-98.

在网站的“资源下载”板块可以下载相关的讲义和数据。[Link]


版权所有:武汉大学多源智能导航实验室(微信公众号:i2Nav) 当前访问量: 技术支持:武汉楚玖科技有限公司