Skip to content
/ T-ESKF Public

T-ESKF: Transformed Error-State Kalman Filter for Consistent Visual-Inertial Navigation

License

Notifications You must be signed in to change notification settings

HITCSC/T-ESKF

Repository files navigation

T-ESKF: Transformed Error-State Kalman Filter for Consistent Visual-Inertial Navigation

ROS 1 Workflow ROS 2 Workflow

We propose a novel approach to address inconsistency caused by observability mismatch in VINS. The key idea is to apply a linear time-varying transformation to the error-state. This transformation is designed to make the unobservable subspace of the transformed error-state system independent of states, thereby preserving the correct observability of the transformed system against variations in linearization points. Compared to Lie group-based methods, the proposed method is more straightforward and flexible. We also provide a supplemental material for T-ESKF.

The code is developed on OpenVINS. During the development of the T-ESKF, utmost care is taken to preserve the original architecture of OpenVINS. This allows (standard) ESKF and FEJ-ESKF to remain in the codebase. Moreover, RI-EKF is also integrated into this codebase.

Build

We have tested the codebase in Ubuntu 20.04 with ROS Noetic. Please additionally refer to the OpenVINS installation guide, as all dependencies are shared with it.

# Assuming you have a valid installation of ros-$(Distro)-desktop-full.
# Dependencies
sudo apt-get install libeigen3-dev libboost-all-dev libceres-dev

# Build T-ESKF
mkdir -p ~/catkin_ws/src  
cd ~/catkin_ws/src 
git clone https://github.com/HITCSC-Robotics/T-ESKF 
cd ~/catkin_ws
catkin build 
source devel/setup.bash

Run

We provide examples to run ESKF, FEJ-ESKF, RI-ESKF, and T-ESKF with EuRoC dataset.

There are two ways to run the code:

  • subscribe the ROS topics

    roslaunch ov_msckf subscribe.launch config:=euroc_mav                               # ESKF 
    roslaunch ov_msckf subscribe.launch config:=euroc_mav use_fej:=true                 # FEJ-ESKF 
    roslaunch ov_msckf subscribe.launch config:=euroc_mav use_tekf:=true tekf_method:=2 # RI-EKF 
    roslaunch ov_msckf subscribe.launch config:=euroc_mav use_tekf:=true                # T-ESKF 
    # play the bag
    rosbag play V1_01_easy.bag 
    
  • read the rosbag directly (You need to configure the path to datasets correctly in serial.launch)

    roslaunch ov_msckf serial.launch config:=euroc_mav dataset:="V1_01_easy"                                # ESKF 
    roslaunch ov_msckf serial.launch config:=euroc_mav dataset:="V1_01_easy" use_fej:=true                  # FEJ-ESKF 
    roslaunch ov_msckf serial.launch config:=euroc_mav dataset:="V1_01_easy" use_tekf:=true tekf_method:=2  # RI-EKF 
    roslaunch ov_msckf serial.launch config:=euroc_mav dataset:="V1_01_easy" use_tekf:=true                 # T-ESKF 
    

Citation

If you found this code/work to be useful in your own research, please considering citing the following information.

@ARTICLE{tian2024teskf,
  title={T-ESKF: Transformed Error-State Kalman Filter for Consistent Visual-Inertial Navigation}, 
  author={Tian, Chungeng and Hao, Ning and He, Fenghua},
  journal={IEEE Robotics and Automation Letters}, 
  year={2024},
  doi={10.1109/LRA.2024.3524905}}

About

T-ESKF: Transformed Error-State Kalman Filter for Consistent Visual-Inertial Navigation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published