Beverage Multi-Task DiT: stirring, inference normalization repair

LeRobot 0.6.1 multi_task_dit checkpoint, trained for 10,000 steps on the stirring task only. The architecture supports multiple tasks; this checkpoint was trained only for Stir the mixture in the cup with the muddler.

Repair

The original training observation for left gripper (state index 5) was constant at 0.8541793823242188. Its MIN_MAX range was zero, causing the original normalizer to divide a live input deviation by 1e-8.

This export increases only that observation state's normalization span to 100, matching the scale of the SO101 gripper percentage input. The original training value still maps to -1. Model weights, other observation dimensions, and action unnormalization are unchanged. No additional training was performed.

In an offline single-observation test with the same sampling seed, a gripper input perturbation of 0.001 changed one original arm command by about 179.77 degrees. With the repair, the maximum command change was below 0.00001 degrees. This test establishes a numerical improvement, not successful robot deployment. Existing policy tracking errors remain; hardware execution has not been verified.

Loading

Load both the policy and its saved processors from this repository. Recreating processors from the original dataset statistics would discard the repair.

from lerobot.policies.multi_task_dit.modeling_multi_task_dit import MultiTaskDiTPolicy
from lerobot.policies.factory import make_pre_post_processors

repo_id = "2chan/beverage-multi-task-dit-20261105-10k"
policy = MultiTaskDiTPolicy.from_pretrained(repo_id).eval()
preprocessor, postprocessor = make_pre_post_processors(
    policy.config, pretrained_path=repo_id
)
policy.reset()
# For each live observation:
# batch = preprocessor(observation)
# action = postprocessor(policy.select_action(batch))

Requires LeRobot 0.6.1 with multi_task_dit dependencies and the configured CLIP encoders/tokenizer (openai/clip-vit-base-patch16).

Input and output contract

  • State and action: 12 dimensions, left arm followed by right arm.
  • Per arm: shoulder_pan, shoulder_lift, elbow_flex, wrist_flex, wrist_roll, gripper.
  • Body joints use degrees; gripper uses its percentage scale. Match the recording calibration and coordinate conventions when deploying.
  • Action values are absolute joint position targets.
  • RGB cameras: observation.images.left_wrist, observation.images.right_wrist, observation.images.top, each 3x480x640.
  • Observation history: 2 frames; action horizon: 32; queued action steps: 24.
  • This is an inference export, not a resumable training checkpoint.
Downloads last month
47
Safetensors
Model size
0.3B params
Tensor type
F32
ยท
Video Preview
loading