Dead Reckoning

Dead Reckoning

Project Objective

The objective of this project was to implement a robust dead reckoning system for an Autonomous Vehicle using Inertial Measurement Unit (IMU) and GPS data. The goal was to estimate the vehicle’s position and heading over time in the absence of continuous GPS signals.

GitHub

Abstract

Dead reckoning provides position estimates by integrating motion data over time, making it crucial in environments where GPS signals are unreliable or unavailable. This project leverages IMU and GPS sensors to estimate vehicle trajectory in such conditions.

A detailed drift analysis was conducted on sensor data fields such as angular velocity, linear acceleration, and magnetic field. Magnetometer calibration was performed using ellipse fitting to correct for hard and soft iron distortions, followed by a complementary filter fusion with gyroscopic data to yield stable yaw estimates.

Forward velocity was computed by integrating the linear acceleration field, with drift and noise corrected using linear regression and second-derivative-based methods. The final dead reckoning estimate was obtained by transforming the velocity into the GNSS frame using real-time yaw values and integrating over time. This estimated trajectory was compared to GPS-based ground truth to evaluate system accuracy.


Results & Analysis

A detailed drift analysis was conducted on raw IMU and magnetometer data. Angular velocity fields exhibited near-zero mean values, confirming expected behavior under static conditions. Linear acceleration fields showed clear offsets and mild Gaussian resemblance, while magnetometer readings revealed strong soft and hard iron distortions due to surrounding ferrous materials. The table below summarizes key statistics and drift estimates (per hour) based on linear regression slopes:

FieldRangeMeanStd. Dev.Drift/hr
angular_velocity.x0.005924-0.0000080.0006680.000120
angular_velocity.y0.0088240.0000010.000946-0.000044
angular_velocity.z0.0054690.0000030.0006610.000012
linear_acceleration.x0.1030000.3409010.012759-0.002971
linear_acceleration.y0.1100000.5143150.0129460.038681
linear_acceleration.z0.142000-9.5813040.0166360.003671
magnetic_field.x0.006700-0.0441280.0005830.000871
magnetic_field.y0.102100-0.0562310.0017250.000240
magnetic_field.z0.0131000.3255930.002345-0.006147
roll0.002409-0.0536380.000585-0.003869
pitch0.0011170.0355150.000151-0.000346
yaw0.0110482.2526490.0016680.006994

Yaw estimation was improved through magnetometer calibration using ellipse fitting to correct hard and soft iron distortions. A complementary filter (α = 0.9) was used to blend the magnetometer-based yaw with gyroscope integration, balancing long-term stability with short-term responsiveness. Forward velocity was computed by integrating the linear acceleration (x-axis), followed by drift correction using regression and second-derivative thresholding. These corrections enabled more accurate velocity profiles, especially in stationary segments where the raw IMU data showed spurious motion.

Dead reckoning was performed by transforming the corrected velocity from the vehicle frame to the GNSS frame using yaw data. The resulting trajectory, derived by integrating easting and northing components, was compared with GPS ground truth. Trajectories generated using IMU yaw outperformed those using complementary-filtered yaw during motion, reinforcing the role of angular velocity in dynamic heading estimation. Overall, the fusion of IMU and GPS data produced accurate, drift-compensated trajectories suitable for real-world navigation tasks.


Report

⬇️ Download Full Report (PDF)