# Wheel Slip Detection via a Novel Adaptive Kalman Filter on Michigan Racing’s Formula SAE Car
###### tags: `ROBOTICS`, `sensor fusion`
This paper develops a novel velocity estimator using an Kalman Filter (KF). The proposed state estimator for automotive vehicles combines data from an inertial measurement unit (IMU), wheel encoders, and GPS to produce a velocity estimate that is robust against wheel slip events and point out the section of slipping. The algorithm is efficient and can be implemented to run in real-time to produce accurate velocity estimates for vehicle control systems. Open source software is available for download and reproducing the presented results.
{%youtube jyrhxCQwX8k %}
## Getting Started
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
## Code organization
.
├── config # reference
├── data # data from Michigan Racing’s Formula SAE
│ ├── settings.yaml # setting for params and methods in python programming
├── doc # reference
├── results # Folder contains final results files(including txt and image)
├── src # Matlab and Python scripts
│ ├── Matlab # Matlab scripts
│ │ ├── ekf.m # Matlab script of velocity estimation with EKF.
│ │ ├── Single_EKF.m # Matlab script of velocity estimation with Single_EKF.
│ │ ├── Single_EKF_experimental.m # Matlab script of velocity estimation with Single_EKF_experimental.
│ ├── Python # Python scripts
│ │ ├── main.py # Python script of velocity estimation.
│ │ ├── rob_run.py # the structure of velocity estimation.
│ │ ├── rob_system.py # motion model, measurement model, noise covariance, and Jocabian matrix.
│ │ ├── helper # Helper function
│ │ │ ├── data_loader.py # Helper function: load data
│ │ │ ├── make_plot.py # Helper function: make plot
│ │ ├── filter # filter scripts
│ │ │ ├── EKF.py
│ │ │ ├── InEKF.py
│ │ │ ├── KF.py
│ │ │ ├── KF_separated_wheel.py
│ │ │ ├── PF.py
│ │ │ ├── UKP.py
└── README.md
## Running the code
To run the Python code, run `main.py`
To run the Matlab code, run `main.m`
## Implementations
* See the [report] (upcoming soon!) for detailed implementations.
## Results

The gray area is Slip phenomenon via slip detection
## Contributors
* Yu-Ju(Leslie) Chiu: [Gitlab](https://gitlab.eecs.umich.edu/yujuchiu), [Homepage](https://hackmd.io/@lesliechiu), [Linkedin](https://www.linkedin.com/in/yu-ju-chiu-611515198/)