LeRobot documentation

RoboMME

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

RoboMME

RoboMME는 ManiSkill(SAPIEN)을 기반으로 구축된 메모리 증강 조작 벤치마크입니다. 이 벤치마크는 에피소드 전반에 걸쳐 정보를 유지하고 활용하는 로봇의 능력을 평가하며, 구체적으로 카운팅, 객체 영속성, 참조, 모방을 측정합니다.

  • 4개의 메모리-스킬 스위트에 걸친 16개 작업
  • 1,600개의 학습 데모 (태스크당 100개, 검증 50개, 테스트 50개)
  • 데이터셋: lerobot/robomme — LeRobot v3.0, 10 fps 기준 768K 프레임
  • 시뮬레이터: ManiSkill / SAPIEN, Panda 암, Linux 전용

RoboMME benchmark tasks overview

작업

Suite작업
카운팅(시간 기억)BinFill, PickXtimes, SwingXtimes, StopCube
영속성(공간 기억)VideoUnmask, VideoUnmaskSwap, ButtonUnmask, ButtonUnmaskSwap
참고 (객체 메모리)PickHighlight, VideoRepick, VideoPlaceButton, VideoPlaceOrder
모방(절차적 기억)MoveCube, InsertPeg, PatternLock, RouteStick

설치

RoboMME에는 Linux가 필요합니다(ManiSkill/SAPIEN은 Vulkan 렌더링을 사용함). 의존성 충돌을 격리하기 위해 Docker 사용을 권장합니다.

네이티브(Linux)

uv pip install --override <(printf 'gymnasium==0.29.1\nnumpy==1.26.4\n') \
  -e '.[smolvla,av-dep]' \
  'robomme @ git+https://github.com/RoboMME/robomme_benchmark.git@main'

의존성 참고: robomme에 의해 가져오는 mani-skill은 gymnasium==0.29.1과 numpy<2.0.0을 고정(pins)하고 있어, lerobot의 기본 numpy>=2.0.0와 충돌합니다. 따라서 robomme은 pyproject extra가 아닙니다. 충돌을 완전히 피하려면 위의 override 설치 방법을 사용하거나, 아래 Docker 방식을 사용하세요.

Docker (권장)

# Build the RoboMME evaluation image from the repo root
docker build -f docker/Dockerfile.benchmark.robomme -t lerobot-benchmark-robomme .

벤치마크 Dockerfile은 공개된 huggingface/lerobot-gpu:latest 이미지를 확장한 후 gymnasium==0.29.1과 numpy==1.26.4를 오버라이드합니다. 두 버전 모두 lerobot의 실제 API 사용에 대해 런타임 안전합니다.

평가 실행

기본값 (단일 작업, 단일 에피소드)

lerobot-eval \
    --policy.path=<your_policy_repo> \
    --env.type=robomme \
    --env.task=PickXtimes \
    --env.dataset_split=test \
    --env.task_ids=[0] \
    --eval.batch_size=1 \
    --eval.n_episodes=1

멀티 태스크 평가

쉼표로 작업 이름을 구분하여 한 번의 실행에서 여러 작업을 평가합니다. task_ids를 사용하여 작업별로 평가할 에피소드를 제어합니다. 권장 사항: 테스트 분할의 경우 작업당 50개 에피소드.

lerobot-eval \
    --policy.path=<your_policy_repo> \
    --env.type=robomme \
    --env.task=PickXtimes,BinFill,StopCube,MoveCube,InsertPeg \
    --env.dataset_split=test \
    --env.task_ids=[0,1,2,3,4,5,6,7,8,9] \
    --eval.batch_size=1 \
    --eval.n_episodes=50

env.type=robomme의 주요 CLI 옵션

옵션기본값설명
env.taskPickXtimes위 16개 작업 이름 중 하나(쉼표로 구분)
env.dataset_splittesttrain, val 또는 test
env.action_spacejoint_anglejoint_angle(8차원) 또는 ee_pose(7차원)
env.episode_length300에피소드당 최대 스텝
env.task_idsnull평가할 에피소드 인덱스 목록 (null = [0])

데이터셋

데이터셋 lerobot/robomme는 LeRobot v3.0 형식이며 직접 로드할 수 있습니다:

from lerobot.datasets.lerobot_dataset import LeRobotDataset

dataset = LeRobotDataset("lerobot/robomme")

데이터셋 기능

기능Shape설명
image(256, 256, 3)전면 카메라 RGB
wrist_image(256, 256, 3)손목 카메라 RGB
actions(8,)관절 각도 + 그립퍼
state(8,)관절 위치 + 그립퍼 상태
simple_subgoalstr고수준 언어 어노테이션
grounded_subgoalstr근거 기반 언어 주석
episode_indexint에피소드 ID
frame_indexint에피소드 내 프레임

Feature key 정렬 (학습)

env 래퍼는 RoboMMEEnv.front_camera_name과 RoboMMEEnv.wrist_camera_name(기본값은 camera1과 camera2)로 명명된 카메라를 pixels/<camera_name> 아래에 노출합니다. RoboMMEEnv의 features_map는 policy를 위해 이들을 각각 observation.images.camera1과 observation.images.camera2에 매핑합니다. 상태는 agent_pos로 노출되며 observation.state에 매핑됩니다.

데이터셋의 원본 열이 해당 정책 키와 일치하지 않으므로, 파인튜닝 시 --rename_map을 전달하세요:

--rename_map='{"image": "observation.images.camera1", "wrist_image": "observation.images.camera2", "state": "observation.state", "actions": "action"}'

다른 키 이름으로 학습한 경우, 평가 시 관측값이 정책이 학습된 키와 일치하도록 --env.front_camera_name / --env.wrist_camera_name을(를) 오버라이드하세요.

액션 스페이스

유형차원설명
joint_angle87개의 관절 각도 + 1개의 그리퍼(−1: 닫힘, +1: 열림, 절대값)
ee_pose7xyz + roll/pitch/yaw + gripper

--env.action_space=joint_angle(기본값) 또는 --env.action_space=ee_pose로 설정합니다.

플랫폼 참고 사항

  • Linux 전용: ManiSkill은 SAPIEN/Vulkan이 필요합니다. macOS와 Windows는 지원되지 않습니다.
  • GPU 권장: 렌더링은 CPU에서도 가능하지만 느립니다. CUDA + Vulkan을 사용하면 전체 속도를 낼 수 있습니다.
  • gymnasium / numpy 충돌: 위 설치 참고 사항을 확인하세요. Docker 이미지가 이를 자동으로 처리합니다.
  • ManiSkill 포크: robomme는 robomme 패키지를 통해 자동으로 가져오는 특정 ManiSkill 포크(YinpeiDai/ManiSkill)에 의존합니다.
Update on GitHub