LeRobot documentation

LaWAM

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

LaWAM

lawam is the LeRobot adapter for LaWAM, a latent world action model for dynamics-aware robot policies. It combines a Qwen3-VL backbone, a latent action/world model, and a flow-matching action head while exposing the standard LeRobot policy, training, and evaluation interfaces.

Resources:

ResourceLinkUsed for
Project pagerlinf.github.io/LaWAMMethod overview
PaperarXiv:2606.15768Citation and method details
CodeRLinf/LaWAMOriginal training and evaluation code
Native pretraininglawam-pretrain-lerobotLeRobot fine-tuning initialization
Native LIBERO SFTlawam-libero-sft-lerobotLIBERO evaluation
Source checkpointslawam-checkpointsOriginal LaWAM release artifacts
LIBERO datasetjialei02/libero_merged_no_noops_20hzLIBERO SFT

Installation

Install LeRobot with the LaWAM extra:

pip install -e ".[lawam]"

Install the LIBERO benchmark dependencies and pin MuJoCo to 3.3.2 when reproducing the released LaWAM LIBERO evaluation:

pip install -e ".[lawam,libero]" "mujoco==3.3.2"

LIBERO benchmark success rates are sensitive to the MuJoCo simulator version. Newer MuJoCo releases can materially reduce measured LIBERO success rates, including for policies beyond LaWAM. This is an evaluation-environment compatibility issue rather than a LaWAM adapter issue. Use mujoco==3.3.2 to reproduce the released LaWAM LIBERO and paper results exactly.

LaWAM checkpoints use LeRobot’s native model.safetensors format. The complete LAM, VLM adapter, and flow-head state is restored through policy.path; original LaWAM .pt files are not loaded by the adapter. The LAM and DINOv3 architectures are represented directly by LaWAMConfig and do not require separate checkpoint downloads.

Keep policy.base_vlm set to the portable Hub model ID. Hugging Face’s standard cache settings, such as HF_HOME, control where the Qwen files are stored locally without adding machine-specific paths to the policy or processor configuration.

Fine-Tuning

Fine-tune from the native pretrained LaWAM policy:

lerobot-train \
  --policy.path=jialei02/lawam-pretrain-lerobot \
  --dataset.repo_id=jialei02/libero_merged_no_noops_20hz \
  --dataset.image_transforms.enable=false \
  --rename_map='{"observation.images.wrist_image":"observation.images.image2"}' \
  --policy.action_horizon=8 \
  --policy.n_action_steps=8 \
  --policy.clip_normalized_actions=true \
  --policy.pre_snap_gripper_action=true \
  --policy.binarize_gripper_action=true \
  --policy.repo_id=your_org/lawam_sft

The adapter uses LeRobot dataset statistics for action and state normalization before building LaWAM train batches. Pose actions use min-max normalization, while the LIBERO recipe explicitly snaps the gripper channel to binary 0/1 values to match the native LaWAM training contract. This maps both the -1/+1 and 0/1 dataset conventions to the same model targets. The pretrained checkpoint retains its pretraining values of action_horizon=24 and n_action_steps=24; the LIBERO SFT recipe overrides both to 8 while preserving chunk_size=50 as the padded Flow sequence length. Training uses the current dataset FPS for LaWAM’s natural-time encoding, and the processor persists that frequency as an evaluation fallback. policy.num_video_frames controls the observation frame window.

The released LaWAM pretraining and LIBERO SFT recipes do not use random image augmentation. The policy processor applies only the deterministic resize and ImageNet normalization required by the Qwen and LAM backbones. LeRobot’s dataset-level image transforms remain available for separately designed training recipes.

Released LaWAM checkpoints use a 32-dimensional padded action/state space internally. Keep policy.flow_action_dim=32 and policy.flow_state_dim=32 unless you trained a checkpoint with different flow dimensions.

Evaluation

Evaluate the native LIBERO SFT checkpoint through the standard evaluator:

lerobot-eval \
  --policy.path=jialei02/lawam-libero-sft-lerobot \
  --env.type=libero \
  --env.task=libero_object \
  --eval.n_episodes=10

The Hub repository includes the policy config and the complete preprocessor and postprocessor pipelines, including normalization tensors and LIBERO gripper processing.

For a reproducible LIBERO benchmark run with the released LIBERO SFT checkpoint, evaluate all suites and task IDs in one invocation:

lerobot-eval \
  --policy.path=jialei02/lawam-libero-sft-lerobot \
  --policy.device=cuda \
  --env.type=libero \
  --env.task=libero_spatial,libero_object,libero_goal,libero_10 \
  --env.task_ids=[0,1,2,3,4,5,6,7,8,9] \
  --eval.n_episodes=50 \
  --output_dir=outputs/lawam_libero

Report success rates over all 10 tasks in each suite. Use at least 50 episodes per task when reporting benchmark numbers.

Reference results for the released LIBERO SFT checkpoint with 50 episodes per task. These numbers were produced with MuJoCo 3.3.2. As an environment check, libero_spatial task 5 improved from 18/50 successes with MuJoCo 3.8.1 to 47/50 successes with MuJoCo 3.3.2.

SuiteSuccessesEpisodesSuccess rate
libero_spatial49250098.4%
libero_object49850099.6%
libero_goal49050098.0%
libero_1049050098.0%
overall1970200098.5%

Camera Selection

LaWAM checkpoints store primary and wrist camera roles explicitly instead of inferring semantics from names such as image2. When constructing a new multi-camera LaWAM policy, configure both roles:

--policy.primary_image_features='["observation.images.front"]' \
--policy.wrist_image_features='["observation.images.wrist"]'

policy.lam_image_feature selects the primary camera whose temporal frames are consumed by the latent action model. It defaults to the first configured primary camera and is written explicitly when the policy config is saved.

Runtime Fields

Common LaWAM-specific policy fields:

FieldDescription
base_vlmPortable Qwen/Qwen3-VL Hub model ID stored in the published policy config.
action_horizonNumber of actions predicted per chunk, up to chunk_size.
flow_action_dimInternal padded action dimension used by the LaWAM flow head.
flow_state_dimInternal padded state dimension used by the LaWAM flow head.
embodiment_idLaWAM embodiment ID used when the LeRobot dataset does not provide one.

Citation

@misc{chen2026lawam,
  title = {LaWAM: Latent World Action Models for Efficient Dynamics-Aware Robot Policies},
  author = {Chen, Jialei and Wang, Kai and Chen, Kang and Chen, Shuaihang and Gao, Feng and Tang, Wenhao and Li, Zhiyuan and Liu, Weilin and Yao, Zhuyu and Li, Boxun and Xu, Yuanbo and Yu, Chao},
  journal = {arXiv preprint arXiv:2606.15768},
  year = {2026},
  archiveprefix = {arXiv},
  primaryclass = {cs.RO},
}
Update on GitHub