# RGIOE **Repository Path**: rebeater/RGIOE ## Basic Information - **Project Name**: RGIOE - **Description**: A Real-time GNSS/INS/Odometer Integrated Navigation Algorithm based on Extend Kalman Filter - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 14 - **Forks**: 10 - **Created**: 2021-07-08 - **Last Updated**: 2026-02-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README RGIOE: A Real-time GNSS/INS/Odometer Integrated Navigation Algorithm based on Extended Kalman Filter --- ## Description RGIOE is a real-time integrated navigation algorithm that combines GNSS (Global Navigation Satellite System), INS (Inertial Navigation System), and Odometer data using an Extended Kalman Filter (EKF). The system enhances navigation accuracy by fusing multiple sensor inputs and supports real-time data processing, simulation, and visualization. --- ## Key Features - **Sensor Fusion**: Integrates GNSS, INS, and Odometer data using EKF for optimal navigation accuracy. - **Real-time Processing**: Designed for real-time applications such as autonomous vehicles and robotics. - **Flexible Configuration**: Supports various IMU types and configurations via YAML files. - **Data Simulation**: Includes tools for replaying and visualizing navigation data. - **Error Detection and Correction**: Supports NHC (Non-Holonomic Constraint), ZUPT (Zero Velocity Update), and outage detection for improved accuracy during GNSS signal loss. --- ## Compilation To compile the project, ensure you have CMake and a C++ compiler installed. Then run: ```bash mkdir build && cd build cmake .. make -j ``` Some components depend on ROS (Robot Operating System), Eigen, and Qt libraries. Make sure those dependencies are installed beforehand. --- ## Usage ### 1. **Post-Processing Mode** Use `PostDataFusion` to process a batch of GNSS and IMU data files and output the fused navigation result: ```bash ./PostDataFusion --config configure.yml ``` ### 2. **Real-time Simulation** Launch real-time simulation using ROS nodes: ```bash roslaunch navplay replay_lps01.launch ``` This will simulate GNSS and IMU data and publish the results on relevant topics. ### 3. **GUI Tool** The `UiDataFusion` module provides a Qt-based GUI for configuration and visualization: ```bash ./UiDataFusion ``` Use the interface to load data files, adjust filter settings, and visualize the trajectory. --- ## C-style API The library provides a C-style API for integration into embedded systems: - `rgioe_init`: Initialize the navigation system. - `rgioe_timeupdate`: Perform time update using IMU data. - `rgioe_gnssupdate`: Update position using GNSS data. - `rgioe_get_atti`, `rgioe_get_pos`, `rgioe_get_vel`: Retrieve attitude, position, and velocity. - `rgioe_deinit`: Deinitialize the system. --- ## Performance RGIOE has been tested under various conditions with different IMU types (FOG, MEMS) and GNSS outage scenarios. It shows robustness even when GNSS signals are intermittently lost, thanks to the EKF and auxiliary constraints (e.g., NHC, ZUPT). For detailed performance data, see [Doc/performance.md]. --- ## Tools Several auxiliary tools are available: - `DataGenerator`: Generate synthetic navigation data. - `SaveNavToBin`: Convert output to binary format. - `IMUFix`, `OdoFix`: Fix sensor data alignment and scaling. - `showTraj`, `show_debug.py`, `show_nav.py`: Visualize trajectories and sensor data. --- ## Contributing Contributions are welcome! Please refer to the `.gitlab-ci.yml` for build and test instructions. YAML configuration files are in the `yaml/` directory, and unit tests are under `Test/`. --- ## License This project is licensed under the terms provided in the `LICENSE` file. --- ## Contact For any questions or support, please refer to the project issues on Gitee or contact the maintainers.