这篇文章主要是整理一下我知道、或者用过的惯导相关的比较好的开源项目,包括了:
-
武汉大学i2Nav团队的KF-GINS(组合导航)
-
PX4 (组合导航、AHRS,偏工程应用)
-
西工大严恭敏教授的PSINS工具箱 (组合导航,偏算法仿真)
-
xioTechnologies公司的开源项目 (AHRS,3D图形显示界面)
-
Aceinna公司的开源项目 (组合导航,AHRS,偏算法仿真)
-
香港科技科技大学的VINS (SLAM, GNSS-视觉-惯性)
好的开源项目让我们站在巨人的肩膀上,感谢开源作者们的无私,也欢迎各位读者分享其他优秀的开源项目,我们一起学习,共同进步。
一、KF-GINS(组合导航)
作者:武汉大学i2Nav团队
地址:https://github.com/i2Nav-WHU/KF-GINS
开发语言:C++
最新版本:活跃更新
功能:
-
扩展卡尔曼滤波架构(误差状态向量)的GNSS/INS松组合算法,包括IMU误差补偿、惯性导航解算、Kalman滤波、误差反馈等环节 -
采用21维系统误差状态,包括位置误差、速度误差、姿态误差、IMU零偏误差、IMU比例因子误差 -
姿态误差采用Phi角模型,速度、位置误差定义在导航坐标系下 -
惯性导航解算基于线性变化假设的双子样机械编排算法,补偿了姿态圆锥效应、速度的旋转效应和划桨效应
二、PX4 (组合导航、AHRS,偏工程应用)
作者:PX4 Autopilot团队
地址:https://github.com/PX4/PX4-ECL, https://github.com/PX4/PX4-Autopilot
开发语言:C++, matlab, python
最新版本:活跃更新
功能:PX4团队的开源代码中包括了飞控整套软件,我想国内很多无人机公司、高校研究也是从这套代码开始做起。
-
由于软件是直接针对嵌入式系统,使用了C++开发,所以能够非常快速地进行工程应用。相比其他用于仿真的开源项目,解决了很多实时应用中的问题。 -
对我来说,我主要还是感兴趣其中的导航算法。PX4 ECL中的EKF算法,支持融合IMU、GPS、磁力计、气压高度计、视觉里程计等传感器,相关的模型推导解析可以参见PX4 EKF中的多传感器融合方法。同时也有相关的matlab仿真代码,可以快速用于进行仿真试验。 -
PX4-Autopilot也包括了相比于EKF计算量更小,更简单的AHRS算法,相关模型推导、解析可以参见PX4中的mahony姿态算法解析。
三、PSINS工具箱 (组合导航,偏算法仿真)
作者:西工大严恭敏教授
地址:www.psins.org.cn
开发语言:matlab, C
最新版本:活跃更新
功能:
-
PSINS工具箱主要用于捷联惯导的算法验证开发,包括轨迹仿真、惯组标定、初始对准、惯导解算、组合导航卡尔曼滤波。 -
工具箱主要是matlab开发,适用于做算法仿真,而非工程应用,里面的大部分算法可以配合手册或者严老师的论文看。 -
我对PSINS的初步体验可以参考博客《PSINS开源代码初体验——航迹仿真与组合导航》,对轨迹仿真模块的理解可以参见《关于PSINS运动轨迹仿真模块的理解和思考》。C语言的版本我暂时没有仔细阅读过。
四、 xioTechnologies公司 (AHRS,3D图形显示界面)
作者:xioTechnologies公司,主要产品是IMU
地址:https://github.com/xioTechnologies
开发语言:matlab, C#
最新版本:保持更新
功能:包括AHRS算法和3D界面
-
开源项目以AHRS算法为主,在之前的博客AHRS互补滤波(Mahony)算法及开源代码中也进行过介绍。我感觉开源出来的算法比较简单,主要用于了解核心思想,该公司实际产品中的算法应该会有更加复杂的处理。 -
它最有特色的开源项目我觉得是它的3D图形展示界面,如下图所示,基本上改个接口就可以自己用起来,做个非常直观的动态demo。我之前自己玩过一段时间,感觉挺有趣。
五、Aceinna公司 (组合导航,AHRS,偏算法仿真)
作者:Aceinna 新纳传感公司,主要产品是IMU,AHRS,惯导
地址:https://github.com/Aceinna/gnss-ins-sim
开发语言:python
最新版本:保持更新
功能:GNSS/INS组合导航仿真项目,可以生成参考轨迹以及传感器输出(IMU、GPS、里程计、磁力计),并运行组合导航算法生成结果。不过我印象中这是个半开源的项目,核心的组合导航算法被封装成库进行调用。我个人觉得里面生成轨迹、AHRS、传感器标定的demo还是可以看看。
六、VINS (SLAM, GNSS-视觉-惯性)
作者:香港科技大学
地址:https://github.com/HKUST-Aerial-Robotics
开发语言:C++
最新版本:活跃更新
功能:主要是SLAM相关的融合,采用的不是传统的EKF算法,而是基于因子图的算法。因为SLAM目前不是我的研究方向,EKF也还是当前主流的融合方法,所以我还没有花时间阅读它的相关算法和论文。不过该开源项目非常出名,之后有时间可能会拜读。