As a classic loosely coupled GNSS/INS integrated navigation algorithm, KF-GINS is suitable for beginners to learn and understand integrated navigation. However, the C++ implementation of KF-GINS still makes debugging, modification, and extension challenging for newcomers. Therefore, we open-source a Matlab-based integrated navigation software, KF-GINS-Matlab, which serves as the Matlab version of KF-GINS. This version is more suited for teaching, experiments, and beginners. In addition to replicating KF-GINS in Matlab, KF-GINS-Matlab incorporates a GNSS velocity update algorithm and a framework for ODO/NHC updates (Note: the ODO/NHC measurement update is not fully implemented, and ODO scale factor error is not augmented. You are encouraged to complete the algorithms based on the documentation as a learning exercise).
Origanization: Integrated and Intelligent Navigation (i2Nav) Group, GNSS Research Center, Wuhan University.
Related Reference:
- 牛小骥, 陈起金, "惯性导航原理与GNSS/INS组合导航课程讲义", 武汉大学多源智能导航实验室, 2022
- 牛小骥, 陈起金, "惯性导航原理与GNSS/INS组合导航课程视频", 武汉大学多源智能导航实验室, 2022
- 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.
- 严恭敏, 翁浚, 捷联惯导算法与组合导航原理. 西北工业大学出版社, 2019.
- E.-H. Shin, "Estimation techniques for low-cost inertial navigation," Ph.D. dissertation, Dept. Geomatics Eng., Univ. of Calary, AB, Cabada, 2005
- Savage, P.G., "Strapdown analytics, Part I", Maple Plain, MN: Strapdown Associates, 2000.
- Titterton David, JohnL. Weston, and John Weston, "Strapdown inertial navigation technology", The Institution of Electrical Engineers, 2004.
- P. D. Groves, "Principles of GNSS, Inertial, and Multi-sensor Integrated Navigation Systems", 2nd ed., vol. 39. Artech House, 2013.
If you use this software for your academic research, please give acknowledgment as follows and cite our related document and papers
English version: “The authors would like to acknowledge the team of Prof. Xiaoji Niu of the Integrated and Intelligent Navigation (i2Nav) group from GNSS Research Center of Wuhan University for providing the open-source KF-GINS-Matlab software that was used in the paper.”
中文模板:“本文作者感谢武汉大学卫星导航定位技术研究中心多源智能导航实验室(i2Nav)牛小骥教授团队开源的KF-GINS-Matlab软件平台。”
Contacts:
- For any technique problem, you can send an email to Liqiang Wang ([email protected]).
- For Chinese users, we also provide a QQ group (481173293) for discussion. You are requested to provide your organization and name to join the QQ group.
Filename | Description |
---|---|
kf_gins.m | Entry point; main loop of the algorithm |
Initialize.m | Program initialization |
InsMech.m | Strapdown inertial navigation mechanization algorithm |
InsPropagate.m | State vector prediction and covariance propagation |
GNSSUpdate.m | GNSS position/velocity observation update |
GetOdoVel.m | Processes ODO raw data to get velocity results |
ODONHCUpdate.m | ODO/NHC velocity update function (not fully implemented) |
ErrorFeedback.m | Error feedback |
ProcessConfig.m | Configuration of program parameters |
ProcessConfig1.m | Configuration for GNSS position/INS test data |
ProcessConfig2.m | Configuration for GNSS velocity/INS test data |
ProcessConfig3.m | Configuration for ODO/NHC test data |
function/Param.m | Geographical parameter handling |
function/*.m | Libraries for rotation parameters and geographical transformations |
plot-function/plot_result.m | Plots navigation results |
plot-function/plot_std.m | Plots estimated navigation state STD |
plot-function/plot_imuerror.m | Plots estimated IMU errors |
plot-function/calc_error.m | Calculates and plots positioning errors |
dataset1 | GNSS position/INS test data |
dataset2 | GNSS velocity/INS test data |
dataset3 | ODO/NHC test data |
KF-GINS-Matlab runs in Matlab without additional dependencies, requiring no specific system environment or Matlab version.
To download, use the following git command or download the zip package from GitHub and extract it.
git clone https://github.com/i2Nav-WHU/KF-GINS-Matlab.git ~/
1)Open the KF-GINS-Matlab folder in Matlab.[中] [EN]
2)Double-click the kf-gins.m
file to open it in the editor. Click "Run" in the editor or type kf-gins
in the command window (default: ProcessConfig1.m
).
3)Wait for the program to finish running.
1)Add the plot-function
folder to the workspace: right-click the folder and select "Add to Path" -> "Selected Folders and Subfolders."
2)Expand the plot-function
folder, and execute plot_result.m
to plot navigation results or calc_error.m
to plot positioning errors.
For the ODO/NHC update framework, set the ODO update time according to the preset update frequency. At each update, use the GetOdoVel
function to obtain ODO velocities from raw data.
In GetOdoVel.m
, average ODO data from 10 epochs before and after the update time to reduce quantization noise.
1)Modify the cfg
value in kf-gins.m
to run other test datasets. Update file paths in plotting scripts as needed.
2)For custom test data, define a new ProcessConfig.m
file and modify file paths and configurations accordingly.
KF-GINS-Matlab includes three test datasets with corresponding parameter configuration files in the main folder. dataset1 is the GNSS position/INS test data (i.e. the test data in KF-GINS); dataset2 is the GNSS velocity/INS test data; dataset3 is the ODO/NHC test data. The datasets are as follows:
Dataset | Filename | Description |
---|---|---|
dataset1 | Leador-A15.txt | IMU text file |
GNSS-RTK.txt | GNSS position file | |
truth.nav | Reference truth file | |
dataset2 | ADIS16465.txt | IMU text file |
GNSS-POSVEL.txt | GNSS position/velocity file | |
truth.nav | Reference truth file | |
dataset3 | ADIS16465.txt | IMU text file |
GNSS-POS.txt | GNSS position file | |
ODO.txt | ODO velocity file | |
truth.nav | Reference truth file |
For the formats of IMU files, GNSS position files, reference truth files, generated results, IMU error, and STD files, refer to KF-GINS/README.md
. The formats for GNSS position/velocity files and ODO files are as follows:
- GNSS position/velocity file format:
Column | Description | Unit |
---|---|---|
1 | GNSS time of week | |
2 | Latitude | |
3 | Longitude | |
4 | Ellipsoidal height | |
5~7 | Position STD (North-East-Down) | |
8~10 | Velocity (North-East-Down) | |
11~13 | Velocity STD (North-East-Down) |
- ODO file format:
Column | Description | Unit |
---|---|---|
1 | GNSS time of week | |
2 | ODO velocity |
KF-GINS-Matlab is released under the GPLv3 license.
For commercial usage, please contact Prof. Xiaoji Niu ([email protected]).