Inspiration
Imagine a world without war. Unfortunately, reality is not like that. Nations must be able to defend their people, infrastructure, and freedoms.
Modern warfare increasingly occurs in dense urban environments and relies heavily on wireless technology. Radios, drones, radar systems, communication links, and civilian devices all share the electromagnetic spectrum. In this environment, quickly identifying what signals are present, where they originate, and whether they are friendly or hostile becomes critically important.
Our objective was to build a system that uses machine learning to detect, classify, geolocate, and track RF emitters in real time, giving operators a clear picture of the electromagnetic environment.
What it does
Concrete Shield is an RF intelligence pipeline that analyzes radio signals from a distributed receiver network and produces a real-time tactical picture.
The system performs four major functions:
Signal Classification
Using machine learning, the system analyzes raw IQ radio samples to classify known friendly signal types such as:
- Radar altimeters
- Satellite communications links
- Short-range telemetry signals The classifier outputs both a predicted signal type and a confidence score.
Unknown Signal Detection
Because the training dataset only contains friendly signals, the system must detect signals it has never seen before.
We solve this using an autoencoder-based anomaly detector. If a signal does not resemble the friendly training data, it is flagged as unknown or potentially hostile.
Hostile Signal Characterization
Once a signal is flagged as unknown, a secondary analysis engine extracts RF features to determine what type of emitter it may be.
This feature-based classifier identifies patterns such as:
- Pulsed airborne radar
- Air-ground moving target radar
- Electronic warfare jammers
- Civilian broadcasts
Geolocation
Signals detected by multiple receivers can be geolocated using Time Difference of Arrival (TDOA).
By comparing signal arrival times across receivers at known positions, the system estimates the transmitter’s geographic location and outputs:
- Latitude and longitude
- Estimated positioning error
- Number of receivers involved in the detection
How we built it
We built Concrete Shield primarily in Python, using a combination of machine learning, signal processing, and geolocation algorithms.
Machine Learning Pipeline
Our signal classification model uses a 1-dimensional Convolutional Neural Network (CNN) trained directly on raw IQ waveform data.
During experimentation, we evaluated multiple model types, but the CNN consistently produced the best classification performance.
To improve performance in low signal-to-noise ratio environments, we augmented the input data with a Fast Fourier Transform (FFT) representation of the waveform. This effectively turns the signal into a frequency-domain fingerprint, making it easier for the model to recognize modulation patterns even when noise is present.
The final model takes three channels as input:
- In-phase (I)
- Quadrature (Q)
- FFT magnitude spectrum
Anomaly Detection
Since hostile signals are not labeled in the dataset, we trained an autoencoder on friendly signal data only.
If the autoencoder cannot accurately reconstruct an incoming waveform, the system flags it as out-of-distribution, indicating a potentially unknown or hostile signal.
Hostile Signal Feature Analysis
Unknown signals are further analyzed using RF features including:
- Peak-to-average power ratio (PAPR)
- Spectral flatness
- Carrier prominence
- Duty cycle estimation
- Bandwidth fraction
These features help differentiate between signal types such as jammers, pulsed radar, and civilian broadcasts.
Geolocation Engine
To determine emitter locations, we implemented a TDOA multilateration solver. The system:
- Collects signal arrival timestamps from multiple receivers
- Computes the difference in arrival times
- Solves a nonlinear least squares optimization problem
- Produces an estimated transmitter position
This method allows accurate positioning even when signal strength measurements are unreliable.
Backend
The system is served through a Flask API that processes observations from the simulated receiver network and outputs a structured operational picture including:
- Signal classification
- Confidence score
- Affiliation (friendly / hostile / civilian)
- Geographic location
- Signal strength and SNR
- Number of receivers detecting the signal
Challenges we ran into
This was our first time doing a hackathon and we had to learn a lot while doing it.
Accomplishments that we're proud of
The web UI looks decent and the AI decently classifies signals.
What we learned
Working on this project taught us how closely machine learning and classical signal processing complement each other.
While deep learning excels at recognizing patterns in waveform data, traditional RF analysis techniques like spectral analysis and power statistics are still extremely valuable for interpreting signals and identifying unknown emitters.
We also learned how difficult it is to build systems that operate under uncertainty - especially when dealing with noisy measurements, incomplete observations, and signals that may not resemble anything seen during training.
Built With
- cnn
- scikit-learn
- torch

Log in or sign up for Devpost to join the conversation.