Black dots : GNSS measurements
Blue line : IMU prediction
Green line : Kalman filter prediction
In this mini-project, I have implement an extended Kalman filter for fusing IMU and GNSS data from the open-source simulator, Carla. Kalman filters are linear estimators. They are used to find state estimates of the state of a system from predictions and direct or indirect measurements. GNSS or IMU data alone is unreliable. We can fuse data from both of these sources to create a more robust localization system. The Kalman filter was implemented in python and tested in a self-driving simulator, Carla.
Localization is the task of finding the position of an entity in its surroundings. A variety of methods can be used for this. 2 of the most popular sensors used for this are the GNSS (Global Navigation Satellite System), of which GPS is the most common variant, and IMUs (Inertial Measurement Unit). They are found in all modern smartphones and can be easily integrated into robotic systems. However, either of these alone is insufficient. The GNSS system has a low sampling rate of 1-10Hz and has high variance. For retrieving location data from IMUs, we need to integrate acceleration twice. During this, small errors in sensor reading build up over time, causing drift in the predictions.
We can observe that both of these sensors are complementary in nature. IMUs can give data at very high sampling rates but accumulate drift, and GNSS sensors have high variance and low sampling rates. If we can fuse the data from both of these, we will be able to create a more robust system. For this, we use the Kalman filter estimator.
Kalman filters are linear estimators. They function in 2 stages, state updation and measurement. In the state updation stage, we predict the next state of our system from known inputs of the system. Here, if we have x, y acceleration and angular velocity about the z-axis of the vehicle, we can predict the next state by building a kinematic model.
In the measurement stage, we compare our current state with measurements. We calculate estimated measurements for our predicted state and take the error of this measurement from our actual measurements. This is used to correct our predictions.