← All work

2025

Real-Time FMCW Radar CA-CFAR Pipeline

End-to-end C++17 / Python / React radar signal processor, single make command.

Year
2025
Stack
6 technologies
Source
GitHub ↗
Deep-dive
Read the essay →
C++17FFTW3Python FastAPIReactWebSocketGoogle Test

Highlights

  • 01Sub-0.35 µs per detection frame (1024-bin range profile, 10,000 iterations)
  • 02Cross-validated vs. scipy reference, MAE < 1.4 × 10⁻⁷
  • 03Zero false alarms across 10,000 noise-only Google Test trials

Engineered CA-CFAR and GO-CFAR target detectors in C++17 using FFTW3 single-precision FFT, with an adaptive sliding-window noise estimator and per-cell threshold calibrated for a constant false alarm rate. The detection core runs in well under a microsecond per 1024-bin range profile.

Built a three-tier streaming architecture: the C++17 binary emits newline-delimited JSON frames over stdout at 25 fps, a Python FastAPI bridge spawns it as a subprocess and rebroadcasts every frame to all WebSocket clients with bounded per-client queues that drop stale frames instead of leaking memory.

Shipped a React dashboard with per-frame animated SVG range-profile morphing, a 64×64 Canvas Doppler heatmap, a live detections table, and interactive CA/GO-CFAR parameter controls. Four pre-built radar scenes plus a live C++ stream mode, with the whole pipeline modelled in UML component diagrams and verified by a full Google Test suite covering false alarm rate and JSON serialisation.

Related essay

I Built a Real-Time Radar Signal Processor in C++17. Here's Exactly How It Works.

An end-to-end FMCW radar pipeline, Hann window, FFTW3 range FFT, CA/GO-CFAR detection, Doppler map, streamed to a React dashboard at 50,000+ frames/second.

12 min · Read the deep-dive

Next project

Cache-Aware Lock-Free Ring Buffer