This dataset contains the processed data associated with the paper "OWL: Enabling Orientation-Diverse Wireless Localization Research".
We present a comprehensive set of orientation-diverse wireless ranging measurements collected across multiple indoor and outdoor environments. The dataset includes phase and amplitude (IQ) samples, tone quality indicators, and RSSI metrics for Bluetooth Channel Sounding (BLE-CS), alongside corresponding distance estimates, diagnostics, and Channel Impulse Response (CIR) data for Ultra-Wideband (UWB) technology. All measurements were acquired under controlled continuous antenna rotation (0 to 360°) to capture orientation diversity, facilitating research in multi-technology wireless localization and orientation-aware algorithms.
If you use this dataset in your research, please cite our paper:
@inproceedings{sedlak2026owl,
author = {Sedlak, Michael and Pestana, Jesús and Boano, Carlo Alberto},
title = {{OWL: Enabling Orientation-Diverse Wireless Localization Research}},
booktitle = {Proceedings of the 22nd International Conference on Wireless and Mobile Computing, Networking and Communications (WiMob)},
year = {2026},
organization = {IEEE}
}
The processed data is split into three Parquet files:
owl-indoor.parquet: Contains measurements taken in indoor environments (lecture-hall).owl-outdoor.parquet: Contains measurements taken in outdoor environments (park, street, yard).owl-all.parquet: A concatenated dataset containing all measurements from both indoor and outdoor environments.For a detailed description of the available environments, refer to the Environments section below.
The datasets are stored in the Apache Parquet format and can be loaded directly into a Python environment. Both pandas and pyarrow are required to read the files (and can be installed via pip install pandas pyarrow):
import pandas as pd
# Load the complete combined dataset
df_all = pd.read_parquet("owl-all.parquet")
# Or load specific subsets
df_indoor = pd.read_parquet("owl-indoor.parquet")
df_outdoor = pd.read_parquet("owl-outdoor.parquet")
This section outlines the primary dimensions and context of the measurements provided in these datasets.
env)The dataset contains measurements performed in multiple environments:
owl-outdoor.parquet):park: Park area with trees and open grass.street: Flat street area.yard: Flat grass area next to greenhouses.owl-indoor.parquet):lecture-hall: Indoor 88m² lecture hall at TU Graz.setup, technology)Note: For detailed information on the antenna positioning, hardware configurations, and firmware setups, please refer to the associated paper.
setup): Measurements in the outdoor dataset were recorded with both vertical and horizontal orientations. The indoor dataset contains only vertical orientation.technology): The measurements were performed for two different ranging technologies: ble-cs and uwb.ble-cs (Bluetooth Channel Sounding): Used in all environments. Recorded using Nordic Semiconductor's nRF54L15-DK boards running a modified version of the channel_sounding_ras_initiator and channel_sounding_ras_reflector applications.uwb (Ultra-Wideband): Used exclusively in the indoor environment for comparison. Recorded using Qorvo's DWM3001CDK boards running a custom firmware performing Double-Sided Two-Way Ranging (DS-TWR).angle, measured_angle, raw_angle, angle_idx, sample_idx)angle: The recommended column to get the angle. It represents the target angle the OWL controller is trying to maintain and remains exactly the same for all samples at a given angular step.angle_idx: Incremented sequentially each time the target angle changes.measured_angle & raw_angle: The currently measured position after and before digital low-pass filtering, and angle unwrapping.sample_idx: Incremented for each measurement taken within a specific angular position.run_idx)Multiple measurement runs were performed to introduce diversity and mitigate transient environmental effects.
run_idx = 0 or 1).lecture-hall environment, three repeated runs were performed (run_idx = 0, 1, or 2).To minimize transient interference, measurements were recorded in an interleaved manner across different distances/positions (e.g., cycling sequentially through 10m, 20m, and 25m before repeating the sequence for the second run).
position_idx)For the indoor lecture-hall environment, measurements were taken across 4 anchor positions arranged in a rectangle. The coordinates of these anchors (in meters) are:
[-4.1220, -7.2614][-0.0290, -7.6704][-4.1949, 0.0008][0.0, 0.0]The true tag position is located at [-1.9510, -3.6483].
iq, local_iq, remote_iq, tone_RSSI, remote_tone_RSSI, tqi)All tone-level telemetry columns (iq, local_iq, remote_iq, tone_RSSI, remote_tone_RSSI, tqi) are represented as arrays of length 75 instead of 79 due to the BLE advertising channel overlap. To map the array index to the corresponding physical channel:
i maps to physical channel channel_idx = i + 2.NaN for RSSI) due to advertising channel overlap. Resulting in up to 72 measured channels.The complex IQ values in the dataset (such as those in local_iq and remote_iq) are raw integer readings from the hardware's signed 12-bit analog-to-digital converter (ADC). The radio uses Automatic Gain Control (AGC), so the values are relative to the Reference Power Level (RPL).
According to the Bluetooth Core 6.0 spec, the absolute physical RSSI (in dBm) for a given tone can be reconstructed from the raw I and Q values as follows: $$\text{RSSI}{\text{tone}} = 20 \log{10}\left(\frac{\sqrt{I^2 + Q^2}}{2048}\right) + \text{RPL}$$
While most columns are shared across the datasets, the indoor dataset (owl-indoor.parquet) contains several additional columns that are not present in the outdoor dataset (owl-outdoor.parquet):
position_idx are unique to indoor measurements where specific receiver spatial positioning indices were used.distance, diag, cir, error, status_reg) are only present in the indoor dataset where UWB technology was employed.Below is a complete list of all columns found in the datasets.
| Column Name | Availability | Description |
|---|---|---|
angle |
All | The desired target OWL angle set in the OWL controller (in radians). See Angular Information. |
angle_idx |
All | Incremental index of the angular OWL position. See Angular Information. |
cir |
UWB Only | Struct (dictionary) containing UWB Channel Impulse Response (CIR) data. The struct has keys 'start' (-20), 'end' (40), and 'data' (an array of 122 integers representing 61 complex samples with interleaved real and imaginary components). It contains 20 samples before and 40 samples after the first peak. |
conn_evt |
BLE-CS Only | Event counter of the BLE-CS procedure. |
crc |
BLE-CS Only | Count of CRC errors encountered during the BLE-CS procedure. |
de_quality |
BLE-CS Only | Quality level of the distance estimate reported by the device ('OK' or 'DO_NOT_USE'). |
diag |
UWB Only | Struct (dictionary) containing diagnostic metrics reported by the UWB transceiver (such as IPATOV power levels, noise stats, and timestamps). |
distance |
UWB Only | Distance estimate in meters recorded by UWB measurements. |
env |
All | The environment where the measurement took place. See Environments for details on 'park', 'street', 'yard', and 'lecture-hall'. |
error |
UWB Only | Status or error message description for failed UWB measurements. |
ifft |
BLE-CS Only | Distance estimate in meters calculated using the Inverse Fast Fourier Transform (iFFT). |
iq |
BLE-CS Only | Array of 75 complex values (real, imag) representing the combined (local * remote) IQ samples. See Tone-Level Data. |
local_iq |
BLE-CS Only | Array of 75 complex values (real, imag) representing the raw local IQ samples. See Tone-Level Data. |
local_rpl |
BLE-CS Only | Reference Power Level (RPL) at the local device/initiator (in dBm). |
local_tx |
BLE-CS Only | Transmission power at the local device (in dBm; typically 0.0). |
measured_angle |
All | The filtered measured OWL angle (in radians). See Angular Information. |
median_RSSI |
BLE-CS Only | The median of the local tone RSSI array for the current measurement (in dBm). |
nak |
BLE-CS Only | Count of Negative Acknowledgments (NAK) during the BLE-CS procedure. |
phase_slope |
BLE-CS Only | Distance estimate in meters calculated using the Phase Slope method. |
position_idx |
Indoor Only | Index representing the specific receiver spatial positioning setup. See Receiver Positions for anchor coordinates. |
raw_angle |
All | Raw measured OWL angle from the sensor (in radians, before low-pass filtering). See Angular Information. |
raw_response |
All | Raw serialized text response directly from the hardware application. |
remote_iq |
BLE-CS Only | Array of 75 complex values (real, imag) representing the raw remote IQ samples. See Tone-Level Data. |
remote_rpl |
BLE-CS Only | Reference Power Level (RPL) at the remote device/reflector (in dBm). |
remote_tone_RSSI |
BLE-CS Only | Array of length 75 containing the per-tone RSSI values (in dBm) measured at the remote device. See Tone-Level Data. |
remote_tx |
BLE-CS Only | Transmission power at the remote device (in dBm; typically 0.0). |
rtt |
BLE-CS Only | Distance estimate in meters calculated using Round-Trip-Time (RTT). |
run_idx |
All | Numeric index representing the repeated measurement run (e.g., 0, 1, 2). See Repeated Measurements. |
rx_to |
BLE-CS Only | Read timeout count of the BLE-CS procedure. |
sample_idx |
All | Index of the sample acquired within a specific OWL angular position. See Angular Information. |
setup |
All | Antenna orientation setup ('vertical' or 'horizontal'). See Setup and Technology. |
status |
All | Indicates success ('success') or specific failure modes during data acquisition. |
status_reg |
UWB Only | Hexadecimal string representation of the raw transceiver status register for UWB measurements. |
step_idx |
All | Index representing the step position of the OWL rotation. |
technology |
All | Technology used for the measurement ('ble-cs' or 'uwb'). See Setup and Technology. |
timestamp |
All | ISO 8601 formatted timestamp of when the measurement was taken. |
tone_RSSI |
BLE-CS Only | Array of length 75 containing the per-tone RSSI values (in dBm) measured at the local device. See Tone-Level Data. |
tqi |
BLE-CS Only | Array of length 75 containing the tone quality indicators for each sub-channel ('HIGH', 'MEDIUM', 'LOW', or 'UNAVAILABLE'). See Tone-Level Data. |
true_dist |
All | The actual physical distance between initiator and reflector (in meters). |
This dataset is licensed under a Creative Commons Attribution 4.0 International License (CC BY 4.0). You are free to share, copy, and adapt the material for any purpose, even commercially, provided you give appropriate credit.