Skip to main content
A reference motion is a joint trajectory for both arms, stored on the robot in ~/.almond/motions/. Replay it with tune.motion as often as you like and compare the tracking results run to run. Build one from a recording here, or generate one with motion.chirp or scripts/creep_motions.py. A few motions are built in and the same on every robot:
  • slow_osc: the slow-motion acceptance test. slow_osc_left is its mirror.
  • fast_swing: large, fast swings. fast_swing_left is its mirror.
  • hold: 40 s of holding still.
A file of the same name in ~/.almond/motions/ replaces a built-in. motion.build turns a recording into a motion. It reads either kind:
  • Teleop (axol teleop --teleop.record PREFIX): the commands sent to the arms (_cmd), trimmed to the time tracking was engaged.
  • Gravity comp (axol gravity-comp --record PREFIX): the measured joint positions while you guided the arms (_gc). The still time at the start and end is trimmed, so start and end the demonstration with the arms briefly at rest.
The recording is resampled at an even rate and smoothed to remove hand tremor and network jitter. Each point is then checked with the same collision-aware solver the teleop return to rest uses. The stored motion stays within joint limits and never collides with the robot itself.
Every build also saves a before-and-after comparison in ~/.almond/diagnostics/tuning/. It shows the recording and the built motion side by side for each joint, with how much each changed and the peak velocities. Open it in the diagnostics dashboard like any other tuning run to check the motion before you replay it.