OWL: Enabling Orientation-Diverse Wireless Localization Research - Dataset

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}
}

Datasets Overview

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.

Loading the Dataset

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")

Types of Data

This section outlines the primary dimensions and context of the measurements provided in these datasets.

Environments (env)

The dataset contains measurements performed in multiple environments:

  • Outdoor (owl-outdoor.parquet):
    • park: Park area with trees and open grass.
    • street: Flat street area.
    • yard: Flat grass area next to greenhouses.
  • Indoor (owl-indoor.parquet):
    • lecture-hall: Indoor 88m² lecture hall at TU Graz.

Setup and Technology (setup, technology)

Note: For detailed information on the antenna positioning, hardware configurations, and firmware setups, please refer to the associated paper.

  • Antenna Orientation (setup): Measurements in the outdoor dataset were recorded with both vertical and horizontal orientations. The indoor dataset contains only vertical orientation.
  • Technology (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).

Angular Information (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.

Repeated Measurements (run_idx)

Multiple measurement runs were performed to introduce diversity and mitigate transient environmental effects.

  • For outdoor environments, each setup was recorded twice (run_idx = 0 or 1).
  • For the indoor 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).

Receiver Positions (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:

  • Anchor 1: [-4.1220, -7.2614]
  • Anchor 2: [-0.0290, -7.6704]
  • Anchor 3: [-4.1949, 0.0008]
  • Anchor 4: [0.0, 0.0]

The true tag position is located at [-1.9510, -3.6483].

Tone-Level Data (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:

  • Start Index Shift: Physical channels 0 and 1 are never used. The array index i maps to physical channel channel_idx = i + 2.
  • Truncated Channels: The last two theoretical channels (77 and 78) are excluded, reducing the total channels from 79 to 75.
  • Missing Intermediate Channels: Physical channels 23, 24, and 25 (array indices 21, 22, 23) are also excluded (set to 0 or 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}$$

Dataset Specific Columns

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):

  • Spatial indices like position_idx are unique to indoor measurements where specific receiver spatial positioning indices were used.
  • UWB-specific columns (distance, diag, cir, error, status_reg) are only present in the indoor dataset where UWB technology was employed.

Schema Summary Table

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).

License

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.