Doppler-Based Vehicle Speed Estimation

Part of MTE 546: Multi-Sensor Data Fusion - Major Project

Goal

The purpose of this project was to create a low cost, scalable system that estimates the speed of a moving vehicle using only microphones and a speaker emitting a 2000Hz tone. This was to be done using the Doppler-based frequency shifts present in the audio recordings of a car passing by at constant speed. Both data-driven and model-based techniques were used and compared to find which worked best.

Method

The data was collected by recording audio on 5 different devices along a straight line while a car passed at constant speeds ranging from 10 - 50 km / hr. The data was then converted to mel spectrograms using Librosa (128 bins, 1024-20480Hz range).

To build a model-based system, a convolutional neural network was used. The data first underwent various preprocessing such as zero-padding to equalize length, thresholding to -70db to suppress noise, and normalizing to [0,1] for a stable model input. Additionally, the first sensor was ignored due to high error. Dozens of system architectures were tested. The final architecture consisted of the following:

  • 4 convolution/ pool layers (8—16—32—64) → flatten → dense(64) → dropout(30%) → dense(1)
  • ReLU activation function, Adam optimizer (lr=0.001), batch size 4
  • Trained for 300 epochs using MSE loss and 5-fold cross validation (80/20 split)

For the data-driven system, an Unscented Kalman Filter was used. The filter tracked the peak frequency and its rate of change. The Doppler-shifted audio was treated as a nonlinear system. The motion model was a constant acceleration model. The measurement model was the estimated peak frequency and was treated as nonlinear. The UKF parameters were tuned empirically. The sigma spread was fine tuned to optimize the filter. After the peak velocity was estimated, the Doppler formula was used to find the vehicle speed.

The two methods were compared both in accuracy and efficiency.

This project was done using Python, Matlab, and TensorFlow.

Results

  • Demonstrated feasibility of using a UKF estimator for Doppler based tracking
  • CNN model achieved <2.7 km/hr average error
  • CNN outperformed UKF in accuracy and implementation efficiency
  • See images for spectrograms, UKF results, and sample training curve!
  • View the final report and presentation attached!