AERPAW helikite spectrum measurements at Packapalooza Festival in Aug 2026
Data files
Sep 11, 2026 version files 1.01 GB
-
dataset.zip
1.01 GB
-
README.md
8.50 KB
Abstract
We conducted a spectrum-monitoring experiment using a Helikite in an urban environment during NC State’s Packapalooza Festival in August 2026. The Helikite carried a software-defined radio and GPS receiver and was flown for approximately eight hours, reaching a peak altitude of about 180 meters. The spectrum was continuously swept up to 6 GHz, with each sweep taking approximately 15 seconds.
Overview
This dataset (dataset.zip) contains wideband spectrum measurements and synchronized Helikite
telemetry collected by the Aerial Experimentation and Research Platform for Advanced Wireless (AERPAW) during the Packapalooza Festival in August 2026. The measurements characterize the sub-6-GHz radio-frequency environment from an airborne Helikite platform in an urban setting.
The distributed dataset uses SigMF v1.2 metadata and binary data pairs. Python scripts are included to recover MATLAB spectrum files, UAV telemetry CSV files, and spectrum-monitoring timestamp CSV files from the SigMF representation. The original MATLAB files and raw text logs are not distributed separately because their contents can be reconstructed from the uploaded SigMF files.
A MATLAB example is included for visualizing the wideband measurements, LTE Band 13 downlink measurements, altitude history, and three-dimensional flight trajectory.
Dataset structure
dataset/
├── SigMF/
│ ├── pow_spec/
│ │ ├── <measurement-name>.sigmf-data
│ │ └── <measurement-name>.sigmf-meta
│ └── logs/
│ ├── <vehicleOut-name>.sigmf-data
│ ├── <vehicleOut-name>.sigmf-meta
│ ├── <spectrum-log-name>.sigmf-data
│ └── <spectrum-log-name>.sigmf-meta
├── code/
│ ├── sigmf_blocks.py
│ ├── convert_sigmf_to_mat.py
│ ├── convert_sigmf_to_csv.py
│ ├── plot_helikite_dataset.m
│ └── requirements.txt
└── README.md
Each SigMF object consists of a binary .sigmf-data file and its corresponding
JSON .sigmf-meta file. Keep both files together and do not rename only one
member of a pair.
Data contents and variables
Power-spectrum measurements
The SigMF/pow_spec/ directory contains one SigMF pair for each original
MATLAB measurement file. Each pair contains two annotated arrays:
| Field | Unit | Description |
|---|---|---|
freqs |
MHz | Frequency values for the spectrum sweep |
powers |
dBm | Measured power values corresponding to freqs |
The array lengths are equal within each measurement. Measurement filenames
preserve the original names and identify the acquisition records.
Helikite telemetry
The Helikite telemetry SigMF pair is located in SigMF/logs/. It contains the
following annotated arrays, with one value per telemetry record:
| Field | Unit or format | Description |
|---|---|---|
num |
integer | Sequential telemetry record number |
Longitude |
decimal degrees | Geographic longitude |
Latitude |
decimal degrees | Geographic latitude |
Altitude |
m | Reported Helikite altitude |
Pitch |
rad | Platform pitch angle |
Yaw |
rad | Platform yaw angle |
Roll |
rad | Platform roll angle |
VelocityX |
m/s | Velocity along the x-axis |
VelocityY |
m/s | Velocity along the y-axis |
VelocityZ |
m/s | Velocity along the z-axis |
BatteryVolts |
V | Vehicle battery voltage |
timestamp |
POSIX seconds | Timestamp stored as seconds since the Unix epoch |
GPSFix |
integer | GPS fix indicator reported by the vehicle |
NumberOfSatellites |
integer | Number of satellites reported by the vehicle |
The reverse converter produces two UAV CSV representations:
*_vehicleOut.csv, which reproduces the original 10-column physical layout.
Pitch/yaw/roll and VelocityX/Y/Z are stored as two quoted tuple columns.*_expanded.csv, which contains a header and the 14 logical fields listed
above as separate columns.
Spectrum-monitoring timestamps
The spectrum-monitoring log SigMF pair is also located in SigMF/logs/. Its
annotated timestamp array contains POSIX timestamps for the k=0 measurement
records used to align spectrum measurements with the Helikite telemetry.
The reverse converter creates a *_timestamps.csv file containing both
human-readable timestamps and POSIX timestamps.
Software requirements
The Python conversion tools require Python 3.10 or newer and the packages
listed in requirements.txt:
numpy>=1.24
scipy>=1.10
Create an isolated environment and install the dependencies:
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -r requirements.txt
On Windows, activate the environment with:
.venv\Scripts\activate
Quick start after downloading from Dryad
Only the SigMF files are distributed. From the dataset's code/ directory,
run the following commands in order:
python3 convert_sigmf_to_mat.py \
--input "../SigMF/pow_spec" \
--output "../matfiles_converted"
python3 convert_sigmf_to_csv.py \
--input "../SigMF/logs" \
--output "../csv_converted"
After these commands finish, the dataset directory will contain:
dataset/
├── SigMF/
├── code/
├── matfiles_converted/
└── csv_converted/
Open MATLAB, change the current folder to dataset/code/, and run:
plot_helikite_dataset
The MATLAB example reads only the files generated in matfiles_converted/ and
csv_converted/. It does not require the undistributed original MAT files or
raw experiment logs.
Recovering MATLAB files
Convert the SigMF power-spectrum pairs back to MATLAB files:
python3 convert_sigmf_to_mat.py \
--input "../SigMF/pow_spec" \
--output "../matfiles_converted"
Each recovered .mat file contains freqs and powers as MATLAB row vectors.
Recovering CSV files
Convert the telemetry and spectrum-monitoring SigMF pairs to CSV:
python3 convert_sigmf_to_csv.py \
--input "../SigMF/logs" \
--output "../csv_converted"
The reverse conversion verifies the SHA-512 hash stored in each SigMF metadata
file. The --skip-hash option is provided only for intentionally reading an
older SigMF pair without a stored hash.
MATLAB visualization
Keep plot_helikite_dataset.m in the dataset's code/ directory. First create
matfiles_converted/ and csv_converted/ using the reverse converters above.
Then run:
plot_helikite_dataset
The script generates:
- A two-dimensional frequency-versus-altitude heatmap for the measured
sub-6-GHz spectrum, with power in dBm represented by color. - A two-dimensional frequency-versus-altitude heatmap for LTE Band 13
downlink (746-756 MHz), with power in dBm represented by color. - Helikite altitude versus elapsed experiment time.
- The three-dimensional Helikite trajectory using longitude, latitude, and
altitude.
The wideband heatmap uses configurable decimation to control memory use and
rendering time. The underlying SigMF measurements are not decimated.
SigMF format
The metadata and binary data pairs follow the SigMF v1.2 structure. Named data
arrays are stored as consecutive real-valued blocks and identified through
SigMF annotations. More information is available from the
SigMF documentation.
Integrity and reproducibility
Each generated metadata file records the SHA-512 digest of its paired binary
data file. The reverse-conversion tools verify this digest before recovering
MATLAB or CSV files. Conversion stops with an explicit error when required
fields are missing, field lengths differ, or a data file fails its integrity
check.
Access information
The dataset is also available through the AERPAW dataset catalog:
