Skip to content

feat(action): add RoboCasa mobile-manipulation action-policy dataset and config - #184

Open
hyzhou-nv wants to merge 4 commits into
NVIDIA:mainfrom
hyzhou-nv:pr/robocasa-action-policy
Open

feat(action): add RoboCasa mobile-manipulation action-policy dataset and config#184
hyzhou-nv wants to merge 4 commits into
NVIDIA:mainfrom
hyzhou-nv:pr/robocasa-action-policy

Conversation

@hyzhou-nv

Copy link
Copy Markdown

Adds RoboCasa support to the action-policy SFT path: a LeRobot dataset loader, the dataset factory, the Nano post-training config, and the embodiment registrations.

RoboCasa is a mobile-manipulation benchmark, so the base is not fixed. The loader exposes a 15-D raw action contract that passes the native base_motion through unchanged:

[base_motion(4), control_mode(1), eef_pos(3), eef_rot6d(6), gripper(1)]

Observations are the agentview_left | eye_in_hand composite at full resolution, with EEF proprioception as a prepended clean condition token.

All changes are additive; no existing line is modified.

@rickzw
rickzw requested review from fwd4, lfengad and mli0603 August 13, 2026 05:26
@fwd4

fwd4 commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

LGTM

hyzhou-nv and others added 2 commits August 14, 2026 09:03
…and config

Adds RoboCasa support to the action-policy SFT path: a LeRobot dataset
loader, the dataset factory, the Nano post-training config, and the
embodiment registrations.

RoboCasa is a mobile-manipulation benchmark, so the base is not fixed.
The loader exposes a 15-D raw action contract that passes the native
base_motion through unchanged:

    [base_motion(4), control_mode(1), eef_pos(3), eef_rot6d(6), gripper(1)]

Observations are the agentview_left | eye_in_hand composite at full
resolution, with EEF proprioception as a prepended clean condition token.

All changes are additive; no existing line is modified.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Moves the RoboCasa evaluator out of the cookbook and into the framework,
next to the LIBERO one, per review feedback: the DROID and LIBERO
cookbooks ship training code only.

  cosmos_framework/simulation/robocasa/
      closed_loop_eval.py   drives the simulator against the policy server
      eval_utils.py         action decoders, HTTP call, generated-video decode

Only the empty namespace packages are imported from cosmos_framework, so
PYTHONPATH=. suffices and the framework need not be installed in the
robosuite/robocasa venv -- the two cannot share one environment.

Three defects are fixed relative to the cookbook version:

* Camera observations are flipped upright before composing. MuJoCo renders
  bottom-up while the recorded LeRobot videos are upright, so the policy was
  being shown an inverted world.
* The language annotation is read after env.reset() rather than before.
  get_ep_meta() describes the scene currently loaded, so reading it first
  returned the previous episode's metadata, and nothing at all on the first
  rollout. For tasks whose prompt names the sampled object, every rollout
  was conditioned on the previous scene's object.
* Rollouts per task is a parameter rather than hardcoded at 50.

Verified end-to-end on GB200: imports resolve in the simulator venv without
pulling torch, and rollouts complete with each episode's prompt matching its
own scene.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@hyzhou-nv
hyzhou-nv force-pushed the pr/robocasa-action-policy branch from 270adab to 1892cac Compare August 14, 2026 16:09
The RoboCasa recipe trains with `use_state=True`: the current end-effector
pose is prepended to the action sequence as a clean conditioning frame at
index 0, so the sequence is `chunk_length + 1` long and the model plans
relative to where the arm actually is. The policy server had no counterpart,
so such a checkpoint was served with a `chunk_length`-long all-zero action
tensor and the `"state"` field in the request was silently ignored.

Measured on RoboCasa target/atomic at iter 16000, 18 tasks x 20 rollouts,
official-test protocol, same weights either way:

    without the state token   226/360 = 63%
    with the state token      287/360 = 80%

Requests that do not carry "state" are unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@hyzhou-nv
hyzhou-nv force-pushed the pr/robocasa-action-policy branch from 95a5868 to e0e4e6c Compare August 18, 2026 03:31
Moves the dataset preparation out of the cookbook, per review, so the recipe
folder holds only training files. Sits alongside the other convert_* scripts.

RoboCasa publishes LeRobot v2.1 while the pinned lerobot is v3.0-only and
rejects that layout, so this is a prerequisite for training rather than
optional setup. It works on copies, is idempotent, and converts every task it
finds under SRC_ROOT, so one script covers target/atomic, pretrain/atomic and
pretrain/composite.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants