This project aims to estimate the states of a wheel robot in outdoor environments using IMU data, wheel encoder data. An InEKF based approach is taken to achieve the objective. This project is developed based on the "Legged Robot State Estimation in Slippery Environments Using Invariant Extended Kalman Filter with Velocity Update" and the open source code of "In-EKF".
To run the Python code, the following environment and dependencies are required:
- Python == 3.6
- numpy == 1.20.3
- matplotlib == 3.4.3
- scipy == 1.7.1
- pandas == 1.3.4
.
├── results # Folder contains final results images
├── src # Matlab and Python scripts
│ ├── Matlab # Matlab scripts
│ │ ├── main.m # Main script of state estimation with In-EKF in indoor environment
│ ├── Python # Python scripts
│ │ ├── helper_func.py # Helper function
│ │ ├── husky_inekf_indoor.py # Main script of state estimation with In-EKF in indoor environment
│ │ ├── husky_inekf_light.py # Main script of state estimation with In-EKF in parking lot environment
│ │ ├── inekf_imu_cameraPos.py # In-EKF with encoder and camera measurements
└── README.md
To run the Python code, run husky_inekf_light.py
for parking lot environment
To run the Matlab code, run main.m
for parking lot environment
- See the [report] (upcoming soon!) for detailed implementations.
The following video shows how our proposed algorithms (encoder-only and encoder-pseudo measurement) work well compared to ORB-SLAM2, Visual Odometry and GPS.