Code Monkey home page Code Monkey logo

i2ekf-lo's Introduction

I2EKF-LO

A Dual-Iteration Extended Kalman Filter Based LiDAR Odometry
IROS 2024 Oral
Pipeline Image

Introduction

LiDAR odometry is a pivotal technology in the fields of autonomous driving and autonomous mobile robotics. However, most of the current works focuse on nonlinear optimization methods, and there are still many challenges in using the traditional Iterative Extended Kalman Filter (IEKF) framework to tackle the problem: IEKF only iterates over the observation equation, relying on a rough estimate of the initial state, which is insufficient to fully eliminate motion distortion in the input point cloud; the system process noise is difficult to be determined during state estimation of the complex motions; and the varying motion models across different sensor carriers. To address these issues, we propose the Dual-Iteration Extended Kalman Filter (I2EKF) and the LiDAR odometry based on I2EKF (I2EKF-LO). This approach not only iterates over the observation equation but also leverages state updates to iteratively mitigate motion distortion in LiDAR point clouds. Moreover, it dynamically adjusts process noise based on the confidence level of prior predictions during state estimation and establishes motion models for different sensor carriers to achieve accurate and efficient state estimation. Comprehensive experiments demonstrate that I2EKF-LO achieves outstanding levels of accuracy and computational efficiency in the realm of LiDAR odometry.

Developers: The codes of this repo are contributed by Wenlu Yu (于文录), Jie Xu (徐杰), Chengwei Zhao (赵成伟)

News

  • [30/06/2024]: I2EKF-LO is accepted to IROS 2024.
  • [01/07/2024]: We are currently working on organizing and refining the complete code. The full version will be released soon.
  • [02/07/2024]: Updated the video link and submitted the paper to arxiv.

Related Paper

Related paper available on arxiv: I2EKF-LO: A Dual-Iteration Extended Kalman Filter Based LiDAR Odometry

Related Video:

1. Prerequisites

1.1 Ubuntu and ROS

Ubuntu >= 18.04.

ROS >= Melodic. ROS Installation

1.2. PCL && Eigen

PCL >= 1.8, Follow PCL Installation.

Eigen >= 3.3.4, Follow Eigen Installation.

1.3. livox_ros_driver

Follow livox_ros_driver Installation.

2. Build

Clone the repository and catkin_make:

cd ~/catkin_ws/src
git clone https://github.com/YWL0720/I2EKF-LO
cd ..
catkin_make -j
source devel/setup.bash

3. Directly run

cd ~/$I2EKF_LO_ROS_DIR$
source devel/setup.bash
roslaunch i2ekf_lo xxx.launch

4. Rosbag Example

Download our test bags here: HIT-TIB Datasets.

5. Acknowledgments

Thanks for Fast-LIO2 (Fast Direct LiDAR-inertial Odometry) and LI-INIT(Robust Real-time LiDAR-inertial Initialization).

6. License

The source code is released under GPLv2 license.

7. TODO(s)

  • Updated video link
  • Upload a preprint of our paper

i2ekf-lo's People

Contributors

ywl0720 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

i2ekf-lo's Issues

Derivation of the F_x and F_w matrices?

Hi,

Thanks for the code. I am looking into the maths of the prediction step, which involves calculating the Jacobian F_x and F_w.

I found your calculation of F_x with respect to the rotation and angular velocity errors here:

F_x.block<3, 3>(0, 0) = Exp(state_inout.bias_g, -dt);

F_x.block<3, 3>(0, 15) = Eye3d * dt;

Do you have the technical note on these calculations? Just to share some results.

dx_tilde_{k+1} / d_rotation_error = Exp(omega_hat, dt)^{-1},

which is equivalent to Exp(omega_hat, -dt)

My calculation of dx_tilde_{k+1} / d_angular_velocity_error shows that it should be Jr(angular_velocity_estimate * dt)dt, which can be approximated to Eye(3) * dt as in your code.

Reproduce the mapping result in Fig.6d of your paper

Thank you for your great work!

I use the "mid360.yaml" in your code and set "adaptive_cov_use" true. When tested with "dance.bag" , the odometry drift quickly and cannot reproduce the mapping result in Fig. 6d of your paper.

Could you tell me if "mid360.yaml" is the right config file for "dance.bag"?

关于 I2EKF 命名的澄清建议

感谢您在 I2EKF 和 LiDAR 里程计上的工作。我注意到缩写“I2EKF”可能会导致误解,容易让人联想到 ICP 和迭代卡尔曼滤波更新阶段的优化。
建议考虑使用更清晰的缩写,如 RIEKF(Recursive Iteration Extended Kalman Filter),以突出迭代的递归性质。这可以帮助避免混淆。

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.