What is modelled. Signals are synthesized directly on each receiver's time-frequency grid (the short-time Fourier transform the detection pipeline consumes), per antenna with the correct steering phase, rather than as raw samples; the sample rate sets the grid's cell size. Emitters are generic parameterized models, not any product's waveform. Each update captures 2 ms of RF and flies the swarm 0.1 s. Remote ID is received by a separate always-on receiver at each sensor (PHY demodulation is not simulated; a message is decoded when its SNR clears 6 dB).
Scenario
Sensors (squares) sit on a 3 km square. The swarm flies around the field, and fixed Wi-Fi access points, Bluetooth devices and microwave ovens add background traffic. Circles are the receiver's tracks with their 2σ error ellipses; small triangles are the true drones.
Top-down view
Zoom with the buttons, ⌘/Ctrl-scroll or a pinch; drag to pan once zoomed; double-click to reset.
Wideband waterfall, sensor 1
The receiver's instantaneous bandwidth, over time. Control links hop as short 1 MHz dashes, Wi-Fi fills 20 MHz blocks, Bluetooth hops faster and narrower, and Remote ID appears on the Bluetooth advertising channels or Wi-Fi channel 6.
History max over each tenth of a capture
Latest 2 ms capture
Boxes are the bursts the detector extracted (stage 4).
Energy detection
The noise floor is estimated as the median cell power. Each cell is averaged with its neighbours (as a detector integrates), then compared with the threshold. Too low a threshold makes noise bursts; too high loses distant drones.
Max-hold spectrum over the capture
Burst extraction and angle of arrival
Connected cells above the threshold become bursts, with a start time, frequency span, duration and SNR. Each sensor's circular antenna array then measures the burst's bearing by scanning all directions (a Bartlett beamformer over the burst's cells).
| # | Start (µs) | Centre (MHz) | BW (MHz) | Length (µs) | SNR (dB) | Bearing (°) | Truth |
|---|
Bearing scan
Hop-pattern clustering
A fix is only good to tens of metres, so drones flying close together can't be told apart by position. Their hops can: the receiver estimates the hop rate from burst timing alone, and each control link's bursts land at its own phase of the hop period. Telemetry and video keep a fixed channel per drone.
Located bursts over the last 2 s
Each colour is one emitter cluster.
| Cluster | Kind | Hop phase | Bursts | Track |
|---|
Localization and tracks
Bursts seen by two or more sensors are triangulated: the weighted least-squares crossing of their bearing lines, with an error ellipse from the bearing uncertainties and the geometry. Fixes feed emitter clusters, and each control-link cluster anchors one drone track that its telemetry and video attach to.
| Track | Kind | Position (m) | Speed | 2σ ellipse | Emitters | Remote ID | Truth |
|---|
Remote ID
Drones broadcast ASTM F3411 Remote ID messages (Basic ID, Location/Vector, System) over Bluetooth advertising or a Wi-Fi beacon. Each message's own RF is located by angle of arrival, so a drone claiming to be somewhere it isn't shows up as a mismatch. Drone tracks with no Remote ID are flagged too.
| UAS ID | Claimed position | Altitude | Speed | RF position | Distance | Status |
|---|
Message bytes select a row
Message layout follows the open-source opendroneid implementation of ASTM F3411: Basic ID (type 0, 20-character serial), Location/Vector (type 1, latitude and longitude in 10⁻⁷ degrees, altitude in 0.5 m steps offset by 1000 m, speed and direction), System (type 4, operator location).
Scoring against ground truth
Confirmed drone tracks are matched one-to-one with drones within 150 m, closest pairs first. A drone counts as separated when its track's emissions come at least 80% from that one drone.
Labelled ground truth
Every emitted burst from the last updates: emitter, kind, time, frequency, bandwidth, duration, position, and whether sensor 1–4 detected it. Useful for training or testing another detector.