Invariant Extended Kalman Filter for Localization in Underwater Caves

Introduction: This is a final research project for NA 568/EECS 568/ROB 530 MOBILE ROBOTICS: METHODS & ALGORITHMS WINTER 2021 at the University of Michigan. The goal of this project is to use Invariant Kalman filtering on data gathered from underwater cave systems for autonomous localization. This program uses the accelerator and gyroscope data for prediction, DVL, depth sensor and magnetometer for correction, and the 6 traffic cones for ground truth.

You can see our final presentation video of our program here

Dataset

The program relied on:

about file

Getting started

These instructions will get you a copy of the project up and running on your local machine for development purposes.

Prerequisites

Python3, numpy, scipy, os, csv and some knowledge about command line tool (e.g. terminal)

Running the code

In order to configure this project, please follow these steps:

  1. Clone the repository onto your local system.
$ git clone https://github.com/sansaldo/IEKF_AUV_Cave_Navigation.git
  1. The "problem_skeleton.py" file will initiate the program.
$ python3 problem_skeleton.py

💡 Note: in your terminal, please change the directory to the IEKF_AUV_Cave_Navigation directory before you run the program

Result presentation

Below are the 3D and 2D plots of our approach (in blue) versus visual odometry and SLAM algorithm approach after applied the DVL, Depth sensor and magnetometer for correction step. The triangles indicate those predicted positions of each cone (the colors indicate the cone number from 1 through 6)

You can see that our approach largely matches the other two in shape. Alt text Alt text

😃 If applicable, we will apply ROS package in our future work, which enables online usage of data. Data processing is available on import_data_ros.py

Authors

Acknowledgments

  • Professor Maani Ghaffari and the instruction team of EECS 568 in winter 2021, whose code examples helped form the basis of this project.