Skip to content
In Development

GNSS-Aided Passive RF Emitter Localisation System

Georeferenced radio direction finding with integrity-aware localisation. A portable demonstrator that fuses georeferenced RF bearings into an uncertainty-aware position estimate.

Dates
21 July 2026 — Present
Role
Independent Engineering Project
Operation
Passive / receive-only
RF SystemsGNSS / PNTEmbedded SystemsSignal ProcessingSensor Fusion

Scope note: Passive, receive-only student engineering demonstrator tested exclusively with owned or authorised transmitters.

View GitHub RepositoryRead Technical Report · Coming soonExplore Test Data · Coming soonWatch Demonstration · Coming soon

Project overview

Radio direction finding estimates the direction from which an electromagnetic signal arrives. A single direction-finding measurement provides a bearing rather than a unique location, meaning the transmitter may lie anywhere along the measured bearing line.

This project combines a directional antenna and software-defined radio receiver with GNSS positioning and antenna-heading measurement. Each observation records the receiver location, direction of peak received signal strength, GNSS quality information and a timestamp. Bearings collected from multiple positions are fused to estimate the location of a known and authorised test transmitter.

The system is designed as a passive, receive-only engineering demonstrator. It does not interfere with, decode private communications from or transmit toward any external system.

Engineering motivation

The engineering problem is not simply detecting a signal. It is producing a repeatable and defensible location estimate despite GNSS error, heading error, antenna imperfections, receiver noise, poor observation geometry and multipath propagation.

Measure

Build a traceable RF bearing from raw angular signal-power samples.

Qualify

Attach uncertainty and integrity evidence to every observation.

Resolve

Fuse independent lines without disguising weak geometry or false precision.

Objectives

  1. Measure received signal strength while rotating a directional antenna.
  2. Estimate the direction of peak signal arrival.
  3. Record the GNSS position and timestamp of every observation.
  4. Measure the physical heading of the antenna.
  5. Combine at least three bearings into a transmitter-location estimate.
  6. Quantify bearing and localisation error.
  7. Detect low-confidence GNSS observations.
  8. Present measurements on an interactive map.
  9. Document calibration, design decisions and limitations.
  10. Maintain receive-only operation throughout testing.

System requirements

Target status: All performance figures below are initial engineering targets. They are not achieved values and will be replaced or qualified after controlled testing.

Swipe horizontally to view matrix →
Functional requirements and verification methods
IDRequirementVerificationInitial target
FR-01Receive a selected legal test signal without transmitting.Configuration and RF-chain inspectionAcceptance method to be defined
FR-02Measure signal strength against antenna heading.Recorded angular sweepNo missing heading or RSSI fields
FR-03Estimate bearing clockwise from true or calibrated North.Known-bearing field comparisonMedian error below 10–15° (initial target)
FR-04Record GNSS latitude, longitude, altitude and quality fields.Schema and log inspectionApprox. 5–10 m clear-sky stability (initial target)
FR-05Record a UTC timestamp for every observation.Timestamp continuity checkAcceptance method to be defined
FR-06Combine at least three spatially separated bearings.Localisation testAt least three separated observations
FR-07Estimate transmitter position and confidence region.Known-location comparisonBelow 20–30 m error (initial target)
FR-08Preserve raw measurements independently of processed outputs.Data lineage auditAcceptance method to be defined
FR-09Flag or reject unreliable GNSS observations.Injected anomaliesDetect poor fixes and impossible jumps
FR-10Remain passive and receive-only throughout operation.Hardware and software reviewAcceptance method to be defined

System architecture

Authorised test transmitter
Directional antenna
SDR receiver
Processing computer
GNSS receiver
Position · UTC · fix quality
Encoder / heading sensor
Orientation · uncertainty · tilt
Measurement layer
Raw database · integrity flags
Solution layer
Bearings · weighted location · map · confidence region
Signal and data flow for the receive-only demonstrator. GNSS and heading measurements georeference each RF observation.

The architecture keeps raw acquisition separate from estimation. That separation supports replay, comparison of algorithms and evidence-based fault investigation.

Subsystems

RF subsystem

A receive-only SDR, directional Yagi antenna, suitable coax and a laptop or Raspberry Pi form the candidate chain. Legal band-pass filtering and appropriate low-noise amplification remain optional, subject to link-budget and overload testing.

Recorded: centre frequency, gain, RSSI, noise floor, SNR, heading and timestamp.

A rotating directional antenna is deliberately used for the first prototype: it tests the measurement chain without falsely claiming coherent phased-array capability.

GNSS subsystem

Records latitude, longitude, altitude, UTC, satellite count, fix type, horizontal accuracy, HDOP, ground speed and status.

GNSS records where each RF bearing was measured. It does not directly locate the transmitter.

Heading subsystem

Candidate sensors include a rotary encoder, IMU and digital compass. Calibration must address zero heading, tilt, repeatability, magnetic interference, and hard-iron and soft-iron effects.

An encoder on a fixed rotating mount should provide more repeatable relative heading than a magnetometer operating near electronic hardware.

Processing subsystem

Python coordinates acquisition, data quality, signal processing, localisation and reporting while preserving raw observations for replay.

PythonNumPySciPypandasGNU RadioLeafletKiCad

Bearing estimation and processing

  1. Configure SDR
  2. Estimate signal power
  3. Associate power with antenna angle
  4. Smooth angular response
  5. Estimate strongest valid peak
  6. Attach GNSS and integrity data
  7. Store raw observation
  8. Fuse multiple bearings
  9. Display solution and confidence

Illustrative angular response

Illustrative sample data · not measured results
Swipe horizontally to view chart →
Example RSSI against antenna headingAn illustrative signal response peaks near 42 degrees with an example uncertainty of plus or minus seven degrees.0°90°180°270°360°-45-55-65-75-8542° ± 7°RSSI / dBFSHEADING / DEG
The curve demonstrates the intended interface and processing concept only. It will be replaced with controlled sweep data.

The intended algorithm removes invalid samples, estimates a local noise floor, smooths the angular response, identifies the strongest valid peak, fits the neighbourhood of that peak, estimates a bearing and uncertainty, then compares clockwise and anticlockwise sweeps.

Estimated bearing = 42° ± 7°

Uncertainty will be derived from repeatability, response-peak width, heading uncertainty and sensitivity to multipath—not from an arbitrary fixed margin.

Observation data model

timestamplatitudelongitudealtitudesatellite_counthdopgnss_accuracyfix_typeantenna_headingheading_uncertaintycentre_frequencyrssinoise_floorsnrestimated_bearingbearing_uncertaintyobservation_status
Expand illustrative CSV row (not measured data)
timestamp,latitude,longitude,altitude,satellite_count,hdop,gnss_accuracy,fix_type,antenna_heading,heading_uncertainty,centre_frequency,rssi,noise_floor,snr,estimated_bearing,bearing_uncertainty,observation_status
2030-01-01T12:00:00Z,51.500000,-0.120000,35.2,12,0.9,4.8,3D,41.6,2.5,433920000,-52.1,-78.4,26.3,42.0,7.0,accepted

Localisation mathematics

For receiver position pᵢ = [xᵢ, yᵢ]ᵀ and measured clockwise bearing θᵢ, define the bearing direction and its perpendicular normal:

dᵢ = [sin θᵢ, cos θᵢ]ᵀ    nᵢ = [cos θᵢ, −sin θᵢ]ᵀ

A candidate transmitter position x should lie close to each bearing line. Its perpendicular residual is:

rᵢ = nᵢᵀ (x − pᵢ)

The weighted least-squares solution minimises the total squared residual:

x̂ = arg minₓ Σᵢ wᵢ [nᵢᵀ(x − pᵢ)]²

Greater weight can be assigned to observations with better SNR, narrower peaks, stronger GNSS quality, lower heading uncertainty and useful crossing geometry. Weighting cannot rescue fundamentally poor geometry; condition and residual diagnostics remain visible.

GNSS integrity monitoring

This work uses the term integrity monitoring: checks that identify questionable observations and adjust their influence. It does not claim complete GNSS resilience or assured navigation.

Fix-quality checks

Reject absent or invalid navigation solutions.

Satellite threshold

Reduce trust when constellation visibility is weak.

HDOP & accuracy

Compare reported precision with configured limits.

Stale timestamps

Detect measurements that are no longer current.

Impossible jumps

Flag motion inconsistent with elapsed time.

Stationary state

Characterise drift while the platform is static.

IMU consistency

Compare GNSS motion with inertial context.

Cross-observation consistency

Inspect residuals after bearing fusion.

Weight or reject

Preserve suspect data while preventing undue influence.

Interface example · not experimental results
GNSS integrity score: 0.87
Bearing confidence: 0.76
Combined weight: 0.66
Observation status: accepted

Hardware and integration

The first portable assembly is expected to combine an SDR, directional antenna, GNSS receiver, heading interface, processing computer and power subsystem on a fixed rotating mount. Cable strain relief, RF connector integrity, power distribution, grounding, enclosure geometry and sensor placement are treated as engineering constraints rather than presentation details.

RF chain

Characterise loss, gain, overload risk and frequency configuration.

Mechanical reference

Control rotation axis, zero heading, tilt and repeatable positioning.

Power & data

Preserve synchronisation and logs through representative field runtime.

Experimental methodology and test plan

Open-field testing

Establish baseline bearing accuracy, minimise reflections and validate the core multi-position localisation method with an owned or authorised test transmitter.

Multipath testing

Repeat controlled measurements near buildings, fences, parked vehicles and other reflective structures to compare open-field and reflective-environment performance.

Ethical and legal test constraint: All trials remain passive and receive-only, use owned or explicitly authorised transmitters, follow applicable spectrum rules, and do not intercept private communications or locate individuals.

Swipe horizontally to view test plan →
Planned test programme
IDPurposeMethodEvidenceStatus
T-01GNSS time to fixCold and warm starts in clear skyTimestamped fix logsPlanned
T-02Stationary GNSS stabilityLog a fixed receiver positionScatter and accuracy statisticsPlanned
T-03Heading repeatabilityRepeat calibrated angular positionsHeading residualsPlanned
T-04Antenna patternControlled 360° sweepRaw polar responsePlanned
T-05Bearing accuracyCompare estimate with surveyed bearingAngular error distributionPlanned
T-06Repeated sweepsClockwise and anticlockwise trialsRepeatability and hysteresisPlanned
T-07Multi-position localisationCollect three or more separated bearingsMap, residuals and position errorPlanned
T-08Geometry sensitivityVary receiver baselines and crossing anglesCondition and error comparisonPlanned
T-09Multipath performanceRepeat near reflective structuresOpen-field comparisonPlanned
T-10GNSS integrity logicInject poor fixes, stale data and jumpsDetection logPlanned
T-11Data lossRun extended acquisition and audit schemaMissing-field reportPlanned
T-12Battery enduranceOperate representative hardware loadRuntime and voltage logPlanned

Results framework

This section is intentionally complete in structure but empty of experimental claims. Validated plots will be generated from versioned local JSON or CSV-derived data after controlled testing.

GNSS position scatter

Measured data will be added after controlled field testing.

Awaiting validated dataset

Satellite count

Measured data will be added after controlled field testing.

Awaiting validated dataset

HDOP over time

Measured data will be added after controlled field testing.

Awaiting validated dataset

Antenna polar pattern

Measured data will be added after controlled field testing.

Awaiting validated dataset

Raw and smoothed angular response

Measured data will be added after controlled field testing.

Awaiting validated dataset

Bearing error distribution

Measured data will be added after controlled field testing.

Awaiting validated dataset

Localisation map

Measured data will be added after controlled field testing.

Awaiting validated dataset

Confidence region

Measured data will be added after controlled field testing.

Awaiting validated dataset

Open-field versus multipath comparison

Measured data will be added after controlled field testing.

Awaiting validated dataset

Engineering decisions

Swipe horizontally to view matrix →
Engineering decision matrix
DecisionChosen approachAlternativeRationaleConsequence / limitation
Direction findingRotating directional antennaCoherent antenna arrayLower RF complexity and a defensible first prototype.Sequential measurements and mechanical motion limit update rate.
ReceiverSoftware-defined radioDedicated RSSI receiverFlexible frequency, gain and raw-signal inspection.Requires careful gain control and power calibration.
HeadingEncoder plus IMUMagnetometer onlyRepeatable relative angles with tilt and consistency checks.Needs mount zeroing and sensor alignment.
LocalisationWeighted least squaresGraphical line intersectionUses all observations and supports uncertainty-aware weighting.Weights must be calibrated and poor geometry remains limiting.
Position qualityGNSS integrity metricsCoordinate logging onlyMakes low-confidence fixes visible and actionable.Integrity monitoring reduces risk but does not guarantee resilience.
Data retentionRaw structured dataFinal position onlyEnables replay, audit and algorithm comparison.Requires schema control and more storage.
PresentationMap and diagnostic plotsText-only outputExposes geometry, uncertainty and failure modes.Visuals must not imply false precision.

Failure and iteration log

These entries demonstrate the information architecture only. They are not claimed development events. Real version, evidence, root cause, change, outcome, date and media will replace them as the system develops.

EXAMPLE V0.1 · DATE PLACEHOLDER

Broad or double signal peak

Evidence: Illustrative clockwise/anticlockwise sweep mismatch

Possible root cause: Multipath or coarse angular sampling

Example design change: Increase angular resolution and add peak-validity checks

Outcome: To be replaced with a measured development outcome

EXAMPLE V0.2 · DATE PLACEHOLDER

Unstable absolute heading

Evidence: Illustrative magnetic deviation near computing hardware

Possible root cause: Hard-iron interference and mount proximity

Example design change: Use an encoder for relative angle with calibrated zero reference

Outcome: To be replaced with a measured development outcome

Limitations, ethical scope and future work

Known limitations

Signal-strength direction finding depends on antenna directivity and stable receiver gain.

Multipath can create misleading peaks and biased bearings.

Heading accuracy depends on calibration, mounting and magnetic environment.

GNSS error shifts the origin of every bearing line.

Poor crossing geometry can amplify small bearing errors.

One bearing cannot guarantee a unique transmitter location.

Operating boundaries

Receive-only operation

Owned or authorised transmitters only

No interception or decoding of private communications

No location of individuals

No interference with external systems

Future improvements

Custom KiCad sensor and power PCBImproved enclosureAutomated antenna rotationImproved antenna calibrationCoherent multi-channel receiver as a future research directionMulti-constellation GNSSAdditional integrity sensorsMore robust outlier rejectionReal-time mappingUncertainty propagationMonte Carlo localisation analysisAutomated test pipelines

Repository and project artefacts

The proposed structure separates hardware, firmware, software, raw evidence and processed results so changes remain traceable.

Swipe horizontally to view tree →
Project artefacts

Follow the build from requirement to field evidence.

Links will be enabled only when the corresponding repository, report, data and demonstration are ready for review.

View GitHub RepositoryRead Technical Report · Coming soonExplore Test Data · Coming soonWatch Demonstration · Coming soon