Data

Downloads

Dataset Schema

Each trajectory is a .npz file organized as {split}/{platform}/{platform}_{split}_{i}.npz. The task is to predict the mean body-frame velocity (v_x, v_y, v_z) in m/s for each 1.0 s window (200 samples @ 200 Hz) of IMU data.

KeyShapeDescription
imu(N, 6)6-axis IMU in body frame, SI units: columns [acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z]. Accelerometer retains gravity (‖accel‖ ≈ 9.8 m/s² at rest). Gyroscope in rad/s.
ts(N,)Timestamps in seconds at 200 Hz.
pos(N, 3)Ground-truth position in metres (world frame).
quat(N, 4)Ground-truth orientation as quaternion [x, y, z, w].
vel_body(N, 3)Body-frame velocity target [v_x, v_y, v_z] in m/s, derived from pos/quat. This is the prediction target.
platform_idscalarPlatform label: 0=car, 1=dog (quadruped), 2=drone, 3=human (handheld). Present in train/val only — test windows are anonymized with no platform label, so a single model must handle all four without being told which one it's looking at.
fsscalarSample rate — always 200 Hz.

Window indices and per-window targets are in index/: train_windows.csv / val_windows.csv (window_id → trajectory + start sample) and train_targets.csv / val_targets.csv (window_id → vx, vy, vz). The Kaggle Data tab additionally provides index/test_windows.csv and sample_submission.csv for the held-out test set.

At competition scale, the dataset totals 136,289 one-second windows across all platforms — 81,931 train / 23,714 val / 30,644 held-out test — for about 37.9 hours of recorded motion in total, ranging from about 5.2 hours (drone) to 13.4 hours (human) of motion per platform across all three splits.

Metric — macro-averaged Absolute Trajectory Error (ATE), lower is better: you submit one body-frame velocity per test window. The organizers rotate each prediction into the world frame using the ground-truth orientation (used only for scoring, never as model input), accumulate the per-window displacements into a path, align that path to ground truth with an SE(3) Umeyama alignment (rotation + translation, no scale), and compute ATE as the RMS position error between the aligned estimate and ground truth. Per-platform ATE is the mean over that platform’s test trajectories; the final score is the equal-weight mean of the four per-platform ATEs, so no platform dominates.

Splits are deduplicated at the trajectory level (SHA-256 of raw IMU content); train / val / public-test / private-test share no recording. The public leaderboard is scored on the Public test trajectories; final standings use the held-out Private trajectories. The Public/Private split is at the whole-trajectory level, never per window.

Sensors Used

Recordings across the four platforms come from two IMU models: the Xsens MTi-100 and the Epson M-G365. Expand for full specs.

Show IMU sensor specs
Xsens MTi-100 Movella / Xsens
Gyro range±450 °/s
Gyro bias instability10 °/h
Accel range±20 g
Accel bias instability15 µg
Output rateup to 2 kHz
InterfaceUSB, RS232, RS422, UART
Dimensions57 × 41.9 × 23.6 mm
Weight55 g
Operating temp.−40 to 85°C
Source: Movella MTi-100 datasheet (now EOL, replaced by Xsens Sirius)
Epson M-G365 Seiko Epson
Gyro range±450 °/s
Gyro bias instability1.2 °/h
Accel range±4 g (PDC1) / ±10 g (PDF1)
Accel bias instability14–16 µg
Output rateup to 2k Sps
InterfaceSPI, UART
Dimensions24 × 24 × 10 mm
Weight10 g
Operating temp.−40 to 85°C
Source: Epson M-G365PDC1/PDF1 datasheet

Split Counts

Platform Train Val
Car 44 12
Quadruped 36 13
Drone 289 48
Handheld 26 7
Total 395 80

Data Explorer

Browse every trajectory in the dataset — filter by platform or split, sort any column, and open a live model preview.

Open the Data Explorer →