Giter Site home page Giter Site logo

aaronboda24 / loose-gnss-imu Goto Github PK

View Code? Open in Web Editor NEW
177.0 17.0 68.0 2.9 MB

Loosely coupled integration of GNSS and IMU

License: MIT License

C++ 81.82% CMake 2.88% C 2.08% Shell 0.17% Cuda 1.16% Fortran 11.76% JavaScript 0.07% CSS 0.05% Python 0.02%
gnss imu inertial-navigation-systems sensor-fusion loosely-coupled gps kalman-filter

loose-gnss-imu's Introduction

Loose-GNSS-IMU

Loose-coupling is the most commonly used method for integrating GNSS-IMU due to its efficiency and simplicity. The idea is to treat the two sensors completely independent of each other. For the inertial sensor, the summation of acceleration and angular rate over time is used to produce position, velocity and attitude solutions (aka. mechanization). Concurrently, the GNSS sensor also generates position and velocity solutions, albeit at a slower rate than the inertial sensor. Both solutions are then combined at specific intervals using a Kalman filter in order to estimate the error states of the inertial sensor like biases or scale factors. These error estimates are used in a recursive manner to improve the accuracy of the inertial navigation solution.

The IMU mechanization is performed in ECEF Cartesian coordinates as described in the Paul Groves textbook : Principles of GNSS, Inertial, and Multisensor Integrated Navigation Systems, 2nd Edition.

Installation

You need Eigen 3.3.7 and Visual Studio 2017. I have included eigen here along with relative path property so that you can simply download the project and open "Loose-GNSS-IMU.sln". You can find more info about using eigen with VS here.

Testing

You will find instructions in "Loose-GNSS-IMU.cpp" where you need to set the path of the input files, but pay attention to the file format. You can find input file samples in the "Input" folder. Simply recreate your input to accommodate the format supported by the reader provided in this program.

Results

ECEF Solution 2-D Solution in LLF
Vehicle Velocity Attitude

License

Free-to-use (MIT), but at your own risk. Credits to Eigen Library.

loose-gnss-imu's People

Contributors

aaronboda24 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

loose-gnss-imu's Issues

Segmentation fault (core dumped)

Hi,
I am getting a "Segmentation fault (core dumped)" error when I try to run for my data (it is working fine with the example data you have provided). I have printed out the values, my data was read by the reader provided in this package. I don't know much C++, Could you help me get through this?.

Thanks,
cck

Data from Jpeg

Dear Aaron,
Thank you very much for open sourced code.
Could you please upload the data used for the fusion, shown in the jpeg photos.

Thank you very much in advance.

Best regards

Which tool have you used to plot these graphs

Hi! Thanks for the open source. Can you please tell which tool you used to generate these graphs? is it from c++ code or some python script cz your code doesnt have the plotting code.

Thanks
gj

Input data format

Dear author, I don't understand why you don't apply GNSS data calculation in standard RINEX format. I don't know how to generate your data format?

About the result pictures

Good job,man! I appreciate your work, you give a whole process about loose coupled data fusion. Can you tell me how do you draw the result picture? Is there any script that can draw the pics? Waiting for your apply : )

Loosely Coupled

Are there any reference textbook for the calculation process in the program (except Paul Groves textbook).

What is COV PVxyz?

Hi, I am shengkai, i am very interested on your fusion code. But there has little part made me confuse. In the GPS input file, what is the COV PV xyz? how to get it ?

Input format GNSS

Hi

I came accross your gnss-imu fusion solution and wanted to test it out a little with my own data.
I saw the input files and was wondering if you have any more information on what format the GNSS Input file is?
I have can produce .pos files (out of RTKLIB) quite easy, but there are nowhere near the 28 columns you have in your GNSS textfile.

Goam

Some questions about how to get input data

I wanted to test it with my own data.I am a beginner.I don't know how to use rtkLib.So I want to find the input format from the output of my modul support. My modul supports NMEA output and UBX output.
But I only found position, velocity, and 3D accuracy of position and 3D accuracy of velocity from modul outputs, here I want to ask you some questions(I have seen the issue [input format GNSS #1]):
(1) I can't get the variance-covariance of the position xyz components and velocity xyz components.So can I evenly divide the three axes from the accuracy I get?
(2) I can't get covariance either.So I can set 0 to all the covariance? In addition, will this affect a lot?
(3) In issue [input format GNSS #1].you suggestion variance-covariance can assign some constants.Do you have a suggested constant?
(4) Or do you have a suggestion how I can get these values from the NMEA and UBX output?

Looking forward to your reply.
Thank you very much.

there is a problem about running your code

image

When I running your code there always report this error(in the IMUmechECEF file), Do you know how to solve it?
Or some new update code?

Thanks for your sharing.
Have a nice day.

Lack of explanation on GNSS inputs.

Hi, this is not much of an use, because there is no documentation / code on GNS input. Usually GNSS comes in in NMEA2000, this code however takes it in XYZ (fair enough it's ECEF), but further data x xy xz y yz z is not explained / has any code how to process this data.

papers

Hello,
Is there any paper about your work? If yes, can you give me a URL or paper name?
Thkan you.

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.