# WaviTrack Dataset

## Dataset summary

| Dataset | Participants | Sequences | Duration |
| --- | ---: | ---: | ---: |
| Main Dataset (`p01`–`p15`) | 15 | 46 | Approximately 3.04 hours |
| Supplementary IMU-only Dataset (`p91`–`p97`) | 7 | 14 | Approximately 1.52 hours |

The supplementary dataset is provided for IMU-only use because its UWB availability is very poor, while its IMU measurements remain usable.

## Data structure

Each sequence contains a **sensor NPZ file**, a **SMPL-X motion NPZ file** and a **calibration JSON file**. Calibration files accompany the sensor data. The two collections use the same structure.

Matching `pXX_sYY` identifiers associate the three files; `pXX` identifies the participant and `sYY` the sequence, each with two digits. For example: `p01_s01_sensors.npz`, `p01_s01_smplx_stageii.npz` and `p01_s01_calibration.json`.

Sensor node order is **Head, Left_Wrist, Right_Wrist, Left_Knee, Right_Knee, Hip**, as recorded in `sensor_order`. `T` denotes sensor samples.

### Sensor NPZ: key fields

| Field | Shape | Description |
| --- | --- | --- |
| `accel`, `gyro` | `[T,6,3]` | Sensor-local acceleration and angular velocity |
| `quat` | `[T,6,4]` | Sensor-to-IMU-world orientation quaternion |
| `ranging` | `[T,15]` | Measured UWB distances |
| `cir` | `[T,15,96]` | Real-valued CIR amplitudes, 96 taps per link; not complex I/Q |
| `cir_valid` | `[T,15]` | Observed CIR validity mask |
| `accel_world_input`, `gyro_world_input` | `[T,6,3]` | Prepared world-vector inputs for the calibration formulas below |
| `quat_world_input` | `[T,6,4]` | Prepared orientation input for calibration |
| `time_seconds` | `[T]` | Sequence-relative timestamps |
| `sensor_order`, `pair_nodes` | `[6]`, `[15,2]` | Node names and zero-based node-pair mapping for the UWB/CIR arrays |

### Calibration JSON and metadata

The calibration JSON contains `sequence_id`, `sensor_order`, `quaternion_order` and per-node 3×3 matrices at `sensors[<node name>]["L"]` and `sensors[<node name>]["B"]`.

Each collection also includes `dataset_metadata.json`, describing the dataset, participant and sequence identifiers, sequence durations and data fields.

## Units and sampling rates

Acceleration is in **m/s²**; the measured local `accel` field includes gravity. Angular velocity is in **rad/s**, distances and translations in **metres**, and timestamps in **seconds**. Sensors are sampled at a nominal **60 Hz** and SMPL-X motion at **120 Hz**.

## Motion processing

Motion-capture C3D recordings are converted to SMPL-X motion parameters using our [Torch OptiTrack to AMASS converter](https://github.com/FranklinTaoTao/torch-optitrack-to-amass).

Use the [SMPL-X Python library](https://github.com/vchoutas/smplx) with the SMPL-X model. Model files can be obtained from the [official SMPL-X website](https://smpl-x.is.tue.mpg.de/) under their separate licence.

## Coordinate conventions and calibration

Sensor quaternions use **xyzw** ordering; SMPL-X rotations use axis-angle vectors in radians. The calibration matrices act on column vectors: `L` maps prepared world-frame inputs to the motion coordinate frame, while `B` corrects the orientation's mounting/frame convention.

Use the calibration file with the **same sequence identifier**, and apply each node's own matrices:

```text
R_cal   = L @ Rotation(quat_world_input) @ B
acc_cal = L @ accel_world_input
gyro_cal = L @ gyro_world_input
```

Here, `Rotation(q)` denotes the 3×3 rotation matrix represented by quaternion `q`. Apply `B` only to orientation, not acceleration or angular velocity. The prepared world-vector inputs already include the required offsets; do not repeat their world conversion or subtract those offsets again.

## Data quality

The SMPL-X motion is a fitted estimate rather than error-free ground truth. Sensor quality and UWB/CIR availability can vary; the supplementary collection is intended for IMU-only use, not UWB/CIR training or evaluation. CIR validity indicates an available observation, not a guarantee of ranging accuracy.

## Visualisation tools

Motion and sensor visualisation tools will be published in [`WaviTrack-RF-Motion/simulation/tools`](https://github.com/FranklinTaoTao/WaviTrack-RF-Motion/tree/main/simulation/tools). Usage details will be provided in that repository.

## Licence and participant protection

Use is restricted to your approved **non-commercial academic research or educational purpose**. Commercial or industrial use—including analysis, model training, evaluation and product development—is prohibited.

Do not redistribute the dataset or record-level derived data, share accounts or credentials, or attempt to identify, re-identify or contact participants. Necessary secure working and backup copies for approved use are governed by the licence.

Read `LICENSE.txt`, `USER_AGREEMENT.txt` and the [full licence and access agreement](https://wavitrack.com/dataset/terms/) for all conditions, including publication requirements. This summary does not replace them.

## Acknowledgements and contact

We thank all volunteers who participated in data collection and everyone who supported the collection process.

For dataset questions, permission enquiries or privacy requests, contact [admin@wavitrack.com](mailto:admin@wavitrack.com).
