Giter VIP home page Giter VIP logo

gnss-ins-processing's Introduction

GNSS/INS Processing

About

This repository comprises Jupyter Notebooks presenting the outcomes of my MSc Thesis titled 'Development of a holistic open-source processing pipeline for drone-based hyperspectral line scanning systems'. The main goal was to establish an open-source workflow for the Post-Processing Kinematic (PPK) correction of Global Navigation Satellite System (GNSS) data. This corrected GNSS data was then integrated with Inertial Navigation System (INS) data using an Extended Kalman Filter (EKF). The ultimate goal was to provide precise positioning (X,Y,Z) and orientation (๐œ™,๐œƒ,๐œ“) informations for sensors mounted on Unmanned Aerial Vehicles (UAVs) (Multi/Hyperspectral cameras...).

Workflow

Implementation Details

1. Data Preparation

The automated workflow begins with the Convert_To_Rinex.ipynb notebook, which establishes the foundation for converting APX-15 observations recorded in Trimble *.T04 proprietary format to the universally accepted RINEX format. This notebook integrates with tools like runpkr00 and TEQC, facilitating conversion and merging of RINEX (Receiver Independant Exchange Format) files to ensure seamless integration of observation and navigation data, eliminating potential gaps. Subsequently, the Download_Corrections_Files.ipynb notebook automates the retrieval of crucial correction files for PPK from diverse GNSS sources, using FTP (File Transfer Protocol) and allowing customization based on parameters like date and nearest permanent station. This comprehensive workflow optimizes data processing by preparing a complete dataset for further analysis with open-source tools.

2. Data Processing

In the data processing phase, serving as a crucial link between data preparation and data fusion,the notebook PPK.ipynb focuses on applying the PPK method to enhance the positional accuracy of raw GNSS observations.The notebook seamlessly integrates RTKlib into the automated workflow, utilizing raw GNSS data in RINEX format and correction files previously downloaded to perform differential corrections and improve the rover's positional accuracy.

3. Data Fusion

The notebook LC_INS_GNSS.ipynb is a compilation of functions designed for achieving precise navigation by integrating INS and GNSS corrected data using the EKF. The initial function handles dual responsibilities: reading GNSS and Inertial Measurement Unit (IMU) data, ensuring time synchronization, and estimating gyroscope and accelerometer biases to refine sensor measurements. Recognizing the disparate frames of GNSS and IMU measurements, the second function ensures consistent transformation between coordinate systems, with a focus on the NED (North,East,Down) frame for terrestrial navigation. The core of the notebook lies in the third function, which implements EKF functionalities to update INS states using mechanization equations in the NED frame. Matrices like the state transition matrix ๐น and measurement matrix ๐ป play pivotal roles, facilitating accurate state estimation by balancing predicted UAV states and new sensor measurements, accounting for uncertainties in process and measurement noise covariance matrices (๐‘„ and ๐‘…, respectively). This comprehensive approach continuously refines position, velocity, and attitude estimates throughout the navigation process.

ekf_vs_kf

4. Data Visualization

The Visualization.ipynb notebook employs Python libraries like Folium with geemap to plot the drone's flight path on a map using diverse basemaps. This spatial representation of the drone's trajectory ensures a clear and accessible presentation of results, facilitating an intuitive comprehension of the drone's spatial movements.

Trajectory_Visualization.mp4

Contributing

Pull requests are always welcome! For significant changes or bug reports, please initiate the process by opening an issue, this allows us to collaboratively address the proposed modifications to improve this project.

To Do

  • Develop an automated workflow to convert Trimble *.T04 proprietary format files to RINEX.
  • Implement an automated workflow for PPK correction.
  • Fuse GNSS and INS data by implementing a loosely coupled architecture.
  • Generalize the RINEX conversion process to accommodate various formats such as Topcon, Leica, etc.
  • Enhance the workflow by integrating algorithms for despiking and smoothing.
  • Develop a Python package for GNSS/INS Processing.

Acknowledgments

This Research would not have been possible without the collaborative efforts and contributions from both the HIF-EXPLO & my supervisor from the department of Cartography and Photogrammetry at the School of Geomatics and Surveying Engineering in the Institute of Agronomy and Veterinary Medicine Hassan II (IAV). Their support has played a crucial role in the success of this project.

References

[1] Chen K, Chang G and Chen C. GINav: a MATLAB-based software for the data processing and analysis of a GNSS/INS integrated navigation system. GPS Solut 25, 108 (2021). https://doi.org/10.1007/s10291-021-01144-9

[2] RTKLIB ver. 2.4.2 Manual. https://www.rtklib.com/rtklib_document.htm

[3] Kalman Filter Interview. Towards Data Science. https://towardsdatascience.com/kalman-filter-interview-bdc39f3e6cf3

[4] Groves, P.D. Principles of GNSS, Inertial, and Multi Sensor Integrated Navigation Systems; Artech House: London, UK, (2013).

[5] GDOP calculation for simple GPS positoning post-processing. GitHub page. https://github.com/FelipeTJ/gdoper/tree/main

Contact

For further details, please reach out to me via E-mail: [email protected]

gnss-ins-processing's People

Contributors

mrbourriz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

mfkiwl

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.