RKCRobotics, Kinematics & ControlNov – Dec 2024
GPS & IMU Sensor Fusion for Automotive Dead Reckoning
Custom Python ROS drivers characterize sensor noise via Allan Variance and fuse magnetometer + gyro yaw with a complementary filter; a causal “moving-frame” zero-velocity update compensates IMU drift, and kinematics (accounting for sensor offset from the center of mass) reconstruct the trajectory against GPS ground truth.
Hardware & Architecture
- Vehicle-mounted GPS + IMU modules acquired over a ROS framework with self-written Python device drivers.
- Three datasets: circular roundabout driving (magnetometer calibration), a 5-minute stationary hold (bias), and a looped main-road drive (validation).
Key Highlights
- Hard-iron correction by mean subtraction produced a near-spherical magnetic flux plot, confirming negligible soft-iron distortion.
- Complementary filter fuses high-pass gyro yaw with low-pass magnetometer yaw to eliminate low-frequency drift.
- Causal moving-frame windowing detects rest via low std-dev and zeroes velocity, offsetting integration bias in real time.
- Kinematic model accounts for the sensor's ~4 cm displacement from the center of mass; dead-reckoned path tracks the GPS ground truth.
Images




Code
The full ROS device drivers plus the magnetometer-calibration, complementary-filter, and dead-reckoning analysis scripts live on the linked GitLab profile.