Every object reflects radar differently, and how much it reflects changes with the angle you see it from. That reflection strength is its radar cross-section (RCS), and across angles it works like a fingerprint. During my winter internship at IIT Kanpur I built a system that uses those fingerprints to say which drone a radar is looking at.

The data

Measured RCS data for 17 signatures: the DJI M100, Mavic and Phantom 4 Pro, a Parrot, an F450, a hexacopter, a Y600, a Walkera, a mini helicopter and, as a non-drone control, a battery. Several are recorded in more than one radar polarization (HH, HV, VH, VV). Each measurement gives a frequency, two viewing angles (phi and theta) and the RCS in dB. I worked in the 26–40 GHz band.

How it works

  1. Build smooth fingerprints. For each drone, frequency and fixed theta, a cubic spline is fitted through RCS as phi changes. The same is done the other way round, along theta at each fixed phi. The measured points become continuous curves, so the system can estimate RCS at angles that were never measured.
  2. Match a reading. Given one reading (phi, theta, RCS), every spline at that angle predicts what RCS it would expect. The drone whose prediction is closest (smallest squared error) is the best match, found once along phi and once along theta.
  3. Cross-check. The phi-based and theta-based answers are combined by vote, and it reports whether they agree. A reading far outside anything in the dataset is flagged as an unknown object instead of being forced into a known class.
  4. Evaluate. Sampled measurements for every drone type are run through the matcher and scored against the true labels with scikit-learn, with misclassified cases listed for inspection.

Result

96.6% accuracy in predicting drone type. The approach needs no training step: adding a new drone just means adding its measured signature.

Stack: Python, pandas, SciPy, scikit-learn. The code is private.