Giter Site home page Giter Site logo

mbrossar / se2-3- Goto Github PK

View Code? Open in Web Editor NEW
79.0 5.0 13.0 18.19 MB

Code of paper "Associating Uncertainty to Extended Poses for on Lie Group IMU Preintegration with Rotating Earth"

License: MIT License

Python 100.00%
state-estimation slam imu preintegration sensor-fusion

se2-3-'s Introduction

Associating Uncertainty to Extended Poses for on Lie Group IMU Preintegration with Rotating Earth

This repo provides Python scripts that implement the major equations from the paper mentioned above. The GTSAM fork related to the papier is available at this url. The repo also contains supplementary material that provides detailed proofs with comprehensive derivations of the paper.

Paper Overview ArXiv paper

A recently introduced matrix group provides a 5x5 matrix representation for the orientation, velocity and position of an object in the 3-D space, a triplet we call ``extended pose''. In the paper we build on this group to develop a theory to associate uncertainty with extended poses represented by 5x5 matrices. Our approach is particularly suited to describe how uncertainty propagates when the extended pose represents the state of an Inertial Measurement Unit (IMU). In particular it allows revisiting the theory of IMU preintegration on manifold and reaching a further theoretic level in this field. Exact preintegration formulas that account for rotating Earth, that is, centrifugal force and Coriolis force, are derived as a byproduct, and the factors are shown to be more accurate. The approach is validated through extensive simulations and applied to sensor-fusion where a loosely-coupled fixed-lag smoother fuses IMU and LiDAR on one hour long experiments using our experimental car. It shows how handling rotating Earth may be beneficial for long-term navigation within incremental smoothing algorithms.

Installation

These scripts are based on the PyTorch library with CUDA installed for highly fast batch computation (it assumes the desktop is equipped with a GPU). It necessitates to install the following packages

pip install torch torchvision pyyaml matplotlib numpy scipy typing termcolor

The repo has been tested on a Ubuntu 16.04 desktop with 1.5 PyTorch version.

Description of the Scripts

  • intro.py generates plots for comparing different distributions (Figure 1)
  • simple_propagation.py generates the plots for the example of propagation of an extended pose (Figure 2 and Figure 5)
  • fourth_order.py generates the plot for comparing second- and fourth-order methods (Figure 3)
  • retraction.py generates the plots for comparing different distributions (Figure 4)
  • preintegration.py generates the plots for the IMU preintegration comparison (Figure 7)
  • bias.py generates plots for the bias update comparison (Figure 8)
  • coriolis.py generates plots for the Coriolis comparison (Figure 9)
  • lie_group_utils.py implements Lie group related functions
  • preintegration_utils.py contains functions for preintegration
  • numerical_test.py compares numerical Jacobian and integration versus our analytical expressions related to the Gamma factors and IMU increments.

The implementation is based with batch in the first dimension, e.g.

xis = torch.randn(N, 3) # N is batch size
Rots = SO3.exp(xis) # Nx3x3 rotation matrices

contains N rotation matrices. This allows really fast 🚀 Monte-Carlo sampling.

GTSAM

GTSAM is a C++ library that implements smoothing and mapping algorithms using factor-graphs. Our GTSAM fork of at this url contains implementation for

  • Bias update with Lie exponential coordinates
  • Proposed rotating Earth and Coriolis effect preintegration
  • Debug of the original rotating Earth and Coriolis effect preintegration

Citation

If you use this code in your research, please cite:

@article{brossard2020associating,
  author={M. {Brossard} and A. {Barrau} and P. {Chauchat} and S. {Bonnabel}},
  title = {Associating Uncertainty to Extended Poses for on Lie Group IMU  Preintegration with Rotating Earth},
  year = {2020}
}

Authors

This code was written by the Centre of Robotique at the MINESParisTech, Paris, France.

Martin Brossard, Axel Barrau, Paul Chauchat and Silvère Bonnabel.

se2-3-'s People

Contributors

mbrossar 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

Watchers

 avatar  avatar  avatar  avatar  avatar

se2-3-'s Issues

Code missing in preintegration.py

Hi there,

In the file preintegration.py plot_results

def plot_results(vs, results, k_maxs, alpha):

The code is incomplete.

Also, there is a typo in the paper equation (42)~

Screenshot from 2024-07-22 02-58-42

Thanks for the detailed description and derivation of the extended pose SE2-3!!

Noise model in intro.py

Hi,

In code intro.py actual noise propagation,

T[:, k] = Gamma.bmm(Phi).bmm(T_k).bmm(tmp2)

where T_k is the exponential mapped generated multivariate Gaussian noise using the Cholesky decomposition of the covariance matrix.

I am wondering why multiplication is not at the end of the equation as followed

T[:, k] = Gamma.bmm(Phi).bmm(tmp2).bmm(T_k)

Based on the equation (44) in paper
Screenshot from 2024-07-23 00-11-55

Thanks!

Why GTSAM_TANGENT_PREINTEGRATION=OFF

Hello,

I was reading your paper, but it seems that you had GTSAM_TANGENT_PREINTEGRATION=OFF which will not use the up-to-date implementation in GTSAM for IMU pre-integration. I wonder if this impacts the comparison in Fig. 1?

Thank you very much!

Is there any chance to replace SO3 and SE3 motor pattern expression in SLAM (eg vins-mono or ORB-SLAM3) in the future?

Hello, I have read your article in detail. As a junior researcher, I am very interested in the innovation in your paper. Here I would like to ask whether SE2 (3) may replace the current popular one in the future, the SO3 or SE3 motion expression formulas in SLAM, and is the computational complexity of this motion expression formula large? Can it be done in real time if it is applied to SLAM? I would be greatly appreciated if I could get a reply from the author! If possible, I would like to contact you by email, my email: [email protected]

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.