JessicaSanson/wird_gest_wifi_gesture_monostatic_intel
WIRD-GEST Dataset Gesture recognition dataset collected via monostatic full-duplex Wi-Fi sensing on commercial off-the-shelf (COTS) laptops — no external sensors, no dedicated transmitter, no hardware modification of any kind. Accompanying paper: "WIRD-GEST: Gesture Recognition in the Real World Using Active Range-Doppler Wi-Fi Sensing on COTS Hardware" (Sanson et al., 2025). Key Innovation: Monostatic Sensing Most Wi-Fi sensing datasets use a bistatic setup: a… See the full description on the dataset page: https://huggingface.co/datasets/JessicaSanson/wird_gest_wifi_gesture_monostatic_intel.
WIRD-GEST Dataset
Gesture recognition dataset collected via monostatic full-duplex Wi-Fi sensing on commercial off-the-shelf (COTS) laptops — no external sensors, no dedicated transmitter, no hardware modification of any kind.
Accompanying paper: "WIRD-GEST: Gesture Recognition in the Real World Using Active Range-Doppler Wi-Fi Sensing on COTS Hardware" (Sanson et al., 2025).
Key Innovation: Monostatic Sensing
Most Wi-Fi sensing datasets use a bistatic setup: a separate transmitter (e.g., a router) and a receiver capture CSI between two devices. This requires coordinating two pieces of hardware and a line-of-sight path between them.
This dataset uses a monostatic setup instead. A single unmodified laptop simultaneously transmits and receives by sharing its Local Oscillator and baseband processing — the device's own self-interference becomes the sensing signal. CSI is read directly from the built-in NIC. No second device, no external transmitter, no hardware modification of any kind is required.
Hardware & Capture Parameters
Dataset Overview
Sessions are pre-split into train (25 folders, 5 users × 5 gestures) and val (25 lab + 5 café = 30 folders) sets. The café subset (user 1 only) provides an out-of-environment evaluation split for cross-location generalisation.
Gesture Classes
Folder Structure
gesture_wifi_monostatic_dataset/
├── dataset_metadata.json # aggregate statistics for the full dataset
├── lenovo_user1_clock_train/
│ ├── csi.csv
│ ├── metadata.yaml
│ └── range_doppler_data_32/
│ └── range_doppler_frames_1.pkl
├── lenovo_user1_clock_val/
│ └── ...
├── lenovo_user{1-5}_{clock,front,pulse,side,up}_{train,val}/
│ └── ... # one folder per user × gesture × split (50 total)
└── cafe/
└── lenovo_user1_public_space_{clock,front,pulse,side,up}_val/
└── ... # cross-location evaluation subset (5 folders)Naming convention: lenovo_user<ID>_<gesture>_<split>
Each session folder contains:
csi.csv— calibrated CSI measurements with per-frame gesture labelsmetadata.yaml— session-level metadata (participant, gesture, date, frame statistics)range_doppler_data_32/range_doppler_frames_1.pkl— pre-processed range-Doppler frames
Data Files
csi.csv — Raw CSI
Each row is one measurement frame (~25 ms interval at 40 Hz).
Calibration State
The CSI samples are frequency-domain measurements that have already been pre-processed:
- Pilot subcarriers removed — only the 512 data subcarriers are retained.
- Phase and delay calibrated — carrier frequency offset and timing offset compensation has been applied.
- Two LTF frames averaged per measurement frame —
csi1andcsi2columns hold the two averaged LTF measurements.
The data is ready for direct 2D DFT processing to produce range-Doppler maps. No additional calibration or pilot removal is required.
CSV Columns
`start_end` semantics: Each gesture instance is bracketed by a start marker at the first frame of the motion and an end marker at the last frame. Frames outside any gesture instance are marked none. This allows precise extraction of complete gesture instances from the continuous recording.
range_doppler_data_32/range_doppler_frames_1.pkl — Pre-processed Radar Frames
A Python pickle file containing a list of frame dictionaries, one entry per measurement frame (~40 Hz), in temporal order.
Per-frame dictionary keys
Processing pipeline applied
- The two LTF measurements (
csi1,csi2) fromcsi.csvare averaged per frame. - A 2D DFT is applied across the subcarrier (range) and time (Doppler) axes.
- Range and Doppler axes are interpolated to the cell sizes listed below.
- SNR is computed in dB and clipped to [5, 40] dB, then normalised to [0, 1].
- The heatmap is resized to 64 × 64 and stored as
range_doppler_snr.
Range-Doppler map properties
metadata.yaml — Session Metadata
A small YAML file present in every session folder summarising that session's recording.
dataset_metadata.json — Aggregate Statistics
A top-level JSON file with aggregate counts across all sessions.
Complete gesture instances per class:
Citation
@article{sanson2025wirdgest,
title = {WIRD-GEST: Gesture Recognition in the Real World Using Active
Range-Doppler Wi-Fi Sensing on COTS Hardware},
author = {Sanson, Jessica Barthold and Shah, Rahul C. and Zhu, Yazhou
and Rosales, Rafael and Frascolla, Valerio},
year = {2026},
note = {IEEE ICC 2026 Workshop},
}