Self-Supervised Inertial Odometry

Yuheng Qiu1,2, Yutian Chen1,2, Carlton Cort2, Weison Huang2, Shibo Zhao1, Pieter Abbeel1,3, Rocky Duan1, Koushil Sreenath1,3, C. Karen Liu1,4, Carmelo Sferrazza1, Junyi Geng5, Sebastian Scherer2, Guanya Shi1,2
1Amazon FAR2Carnegie Mellon University3UC Berkeley4Stanford University5Penn State University

Abstract

Learning inertial odometry for a new platform usually requires labeled trajectories. We show that an IMU integration teacher can train a velocity model from scratch without velocity or position labels. The teacher is myopic: it integrates each short window independently. The student learns from these short-window targets yet predicts long-horizon velocity changes more accurately than its teacher. Integration self-supervision draws its training signal from the input itself: over each window, the calibrated IMU samples are integrated into a velocity change, and the student's predicted velocities at the window endpoints must reproduce it. Optional pose graph distillation (PGD) then refines the student: one pose graph over many windows is solved for sequence-consistent velocities, which become fine-tuning targets for the student. A new embodiment then requires no motion capture, RTK, or SLAM ground truth, only unlabeled IMU recorded on the platform during normal operation. Across six datasets spanning pedestrians, drones, quadrupeds, and a humanoid, the same recipe applied unchanged trains inertial odometry comparable to a supervised AirIO baseline.

Six Datasets, One Recipe

Trajectory reconstructions and average velocity errors on six datasets, comparing self-supervised SSIO with supervised AirIO.
The same training recipe spans six datasets. Trajectory reconstructions (left) and average velocity error in m/s (right; lower is better) compare self-supervised SSIO with supervised AirIO across pedestrians, drones, quadrupeds, and a humanoid.

Self-Supervised Inertial Odometry on Real Robots

All models are trained from scratch with self-supervision on unlabeled data, without velocity or position labels.

Humanoid · Unitree G1

Unitree G1. MAC-VO reference trajectory
Unitree G1. Super Odometry reference trajectory

GrandTour · ANYmal

MIPO · Unitree Go1

ANYmal. EIG-1
ANYmal. ETH-3
ANYmal. GRI-1
ANYmal. HEAP-1
ANYmal. SNOW-2
Unitree Go1. St. Mary

Introduction

Methods

The training signal comes from the IMU input itself, not from a recorded trajectory:

  1. Integration self-supervision. A frozen integration teacher turns each short IMU window into a velocity change; the network's predicted velocities at the window endpoints must reproduce it.
  2. Pose graph distillation (PGD). One full-sequence pose graph built from the teacher's IMU factors and the network's velocity factors is solved for sequence-consistent velocities, which then supervise the network.

Proprioceptive Input

On the three articulated platforms that log proprioception, feeding joint states to the student (and, on MIPO, the four calf-mounted IMUs) lowers both velocity and trajectory error, with the teacher and loss unchanged.

SSIO training pipeline with an IMU integration teacher, integration self-supervision, and pose graph distillation.
Figure 1. The IMU input provides the training signal. Integration self-supervision trains the motion network to match the body-frame velocity change predicted by the frozen integration teacher. Pose graph distillation builds a full-sequence pose graph from the teacher's IMU factors and the network's velocity factors; the graph posterior $\mathbf{v}^{\mathrm{opt}}$ then supervises the network through an L2 loss. Velocity regularization $\mathcal{L}^{\mathrm{reg}}$ is applied over detected static frames.
Proprioceptive inputs for the Go1, ANYmal, and G1 robots, with GrandTour trajectories for Eig-1 and SNOW-2.
Figure 2. Proprioceptive inputs complement the IMU. Top: proprioceptive input for Go1 (MIPO), ANYmal (GrandTour), and G1 (Humanoid). Bottom: GrandTour trajectories for the Eig-1 and SNOW-2 sequences.

Finding 1: Accuracy scales with unlabeled data

Held-out velocity error improves steadily as the unlabeled TLIO data grows from 15 minutes to 25.3 hours, approaching the supervised AirIO baseline at full scale. All eight data pools share the same step budget.

TLIO scaling: test average velocity error versus training steps for eight data pools, alongside their reconstructed trajectories and ground truth.
Eight data pools share the same training-step budget. Left: test average velocity error during training, with a supervised reference. Right: one held-out test trajectory using each pool's validation-selected model. Each data pool appears in turn.

Finding 2: Learning from a myopic teacher, the student surpasses it

The integration teacher integrates each short IMU window independently, so its error grows with the horizon. The student only ever sees these short-window targets.

  • Over short horizons the teacher is more accurate; the student's error grows far more slowly.
  • At a 20 s horizon the student reaches 0.141 m/s versus the teacher's 0.885 m/s, roughly a sixfold reduction.
  • Even a student supervised on 0.05 s windows beats the teacher from 5 s onward (0.285 vs 0.885 m/s at 20 s).

Note: This is an empirical observation on TLIO; the paper does not yet give a theoretical account of why the student generalizes beyond its teacher.

Velocity-change error of the integration teacher and of students trained with supervision horizons from 0.05 s to 3.65 s, across evaluation horizons from 0.05 s to 20 s on TLIO.
Velocity-change error [m/s] on TLIO. Top row: integration teacher. Other rows: students trained with supervision horizons from 0.05 s to 3.65 s. Parentheses give the difference to the teacher; red cells are worse and blue cells better than the teacher.

Citation

@article{qiu2026ssio,
      title={Self-Supervised Inertial Odometry},
      author={Yuheng Qiu and Yutian Chen and Carlton Cort and Weison Huang and Shibo Zhao and Pieter Abbeel and Rocky Duan and Koushil Sreenath and C. Karen Liu and Carmelo Sferrazza and Junyi Geng and Sebastian Scherer and Guanya Shi},
      journal={arXiv preprint arXiv:2610.25988},
      year={2026},
}