Skip to main content
Replays one episode of a LeRobot-format dataset on Axol. The episode’s recorded action column is sent to the arms frame by frame, then the robot returns to its rest pose. It’s the reverse of collect-data: instead of recording actions, it plays recorded ones back on the hardware. Replay drives only the arms. It uses no cameras, teleop or policy server.
  1. The arms move to the rest pose along the same collision-aware path run-policy uses. This first move goes through zero. Episodes are recorded from rest, so playback starts without a jump.
  2. Each frame is sent at the dataset’s recorded fps, so the motion keeps its original timing.
  3. At the end the arms park: rest pose, then, with --park_to_zero (on by default), the all-zero pose, holding their grasp.
With --interpolate true, the recorded actions are spread over commands at about 120 Hz for smoother motion. The episode’s timing doesn’t change. Replay refuses to start while any arm joint is more than 25° from zero, and names each joint that is out. See Starting needs the arms near zero. Pass --loop true to replay the episode over and over, returning to rest between takes, until you press Ctrl+C or Stop in the control panel. Either way, the arms return to rest before the command exits.
From the control panel, --repo_id must name a dataset under the configured dataset root. Passing a dataset folder path works only from the CLI.
Replay only datasets you created or obtained from a trusted source. Loading a dataset is not sandboxed.
This command is configured through draccus. The robot settings (CAN channels, per-joint gains) live in the nested robot_config. Set them with dotted flags or a whole-config file. See Command configuration for the syntax and Replay Dataset Config Parameters for every field with its default. If a joint pushes hard against something during a return to rest, or during playback with --teleop_torque_threshold set, the arms stop and go limp in a gravity-compensation hold. Replay can’t retry, so free the arms and stop the run with Ctrl+C or Stop.
Replay drives the arms from the recorded actions without watching the scene. Only the optional --teleop_torque_threshold stops it if a joint hits something. Before you start, clear the workspace and set it up roughly as it was when the episode was recorded. Keep the Stop control or Ctrl+C within reach.