AERPAW air-to-ground channel sounding and path loss measurement with a UAV at 3.4GHz
Data files
Aug 28, 2026 version files 17.27 GB
-
data.tar.gz
17.27 GB
-
README.md
5.39 KB
Abstract
Uncrewed aerial vehicles (UAVs) have emerged as critical for various use cases, both military and civilian. This paradigm shift is poised to revolutionize various industries and aspects of modern life, from logistics and emergency services to environmental monitoring and entertainment. However, the safety of these UAVs hinges on the availability of a reliable wireless link between the UAV and the ground infrastructure for real-time communication. To effectively harness the vast potential of UAVs with a safe and reliable wireless link, it is essential to model the complex air-to-ground (A2G) channel accurately. In this dataset, we use our open-source channel sounder built with software-defined radios (SDRs), which enables real-time measurement and characterization of the A2G channel in scenarios with mobility. Our measurement campaign conducted in a rural area provides valuable insights into the A2G channel’s characteristics, multipath effects, and channel impairments. This dataset extends our previous work with additional trajectories.
This dataset extends the existing AERPAW air-to-ground dataset with four UAV flights measured at the Lake Wheeler testbed. The measurements include two repeated linear flights and two repeated zigzag flights. A fixed LW1 tower transmitted at 3.4 GHz while a UAV-mounted receiver followed the trajectories at approximately 60 m above ground level.
data.tar.gz has the following files:
| File | Contents |
|---|---|
f10.csv through f13.csv |
Processed measurements stored separately for each flight. |
f10.npz through f13.npz |
Processed arrays and transmitted reference waveform for each flight. |
f10.sigmf-data through f13.sigmf-data |
Raw I/Q samples stored separately for each flight. |
f10.sigmf-meta through f13.sigmf-meta |
SigMF metadata for each raw I/Q file. |
load_data.py |
Loader for CSV, NPZ, and SigMF data (Python code). |
See the USRP Channel Sounder repository for channel sounder and post processing code.
CSV columns
| Column | Description |
|---|---|
measurement_id |
Observation identifier. |
campaign_id |
measurement campaign id. |
timestamp_utc |
Measurement time in UTC. |
time_s |
Receiver time within the source flight, in seconds. |
rx_latitude, rx_longitude |
Receiver UAV latitude and longitude, in degrees. |
rx_altitude_agl_m |
Receiver UAV altitude above ground level, in meters. |
tx_latitude, tx_longitude |
Fixed transmitter latitude and longitude, in degrees. |
tx_altitude_agl_m |
Transmitter height above ground level, in meters. |
heading_deg |
Receiver UAV heading, in degrees. |
uav2ground_dist |
Direct 3D distance from the UAV to the ground transmitter, in meters. |
path_loss_db |
Path loss in dB. |
The NPZ contains these columns as same-named arrays plus reference, the transmitted reference waveform.
SigMF fields
Each flight has two corresponding Signal Metadata Format (SigMF) files:
.sigmf-datafiles – These contain raw signal data..sigmf-metafiles – These contain metadata describing the signal data, such as sampling rate, frequency, timestamp, and other relevant parameters.
Each .sigmf-data file contains consecutive raw captures from one UAV flight.
| Global metadata field | Description |
|---|---|
core:datatype |
cf32_le (complex 32-bit floating-point samples). |
core:sample_rate |
56 MHz. |
core:version |
SigMF specification version. |
core:dataset |
Associated .sigmf-data filename. |
core:description |
Dataset description. |
core:extensions |
a2g metadata namespace. |
a2g:campaigns |
Source campaign identifiers. |
a2g:waveform |
Sounding waveform type is Zadoff-Chu. |
a2g:zc_length, a2g:zc_root, a2g:zc_repeats |
Zadoff-Chu waveform parameters. |
a2g:reference_npz |
NPZ file containing the reference waveform. |
| Per-capture field | Description |
|---|---|
core:sample_start |
Sample start index |
core:frequency |
3.4 GHz. |
core:datetime |
Capture time in UTC. |
a2g:flight, a2g:campaign_id |
Flight label and source campaign. |
a2g:rx_time_s |
USRP receiver time tag, in seconds. |
a2g:receiver |
UAV telemetry within 0.2 seconds |
a2g:transmitter |
Fixed LW1 transmitter position. |
Receiver telemetry contains latitude, longitude, altitude_agl_m, and heading_deg. Transmitter metadata contains latitude, longitude, and altitude_agl_m.
Loading and using the data
Run Python from this directory.
from load_data import load_csv, load_npz, load_sigmf_capture
table = load_csv("f10")
print(table[["uav2ground_dist", "path_loss_db"]].describe())
arrays = load_npz("f10")
reference = arrays["reference"]
iq, capture = load_sigmf_capture("f10", 0)
print(iq.shape, capture["a2g:campaign_id"])
NPZ provides the same observations as NumPy arrays plus the reference waveform. load_sigmf_capture() reads one raw I/Q capture without loading a complete recording into the memory.
