Guides(으)로 돌아가기

로보미믹 튜토리얼: 설정, 벤치마크 & 트레이닝 당신의 첫 번째 정책

실제 로봇 데이터 수집을 위한 단계별로 로보미믹 가이드. 하드웨어 요구사항, 데이터셋 포맷 및 오픈아름 통합과 BC, DAgger, 그리고 MimicGen 작업 흐름을 비교하십시오.

← 가이드 / 이미테이션 학습

로봇 조작을 위한 최고의 오프라인 모방 학습 프레임워크인 RoboMimic의 완전한 소개. 설치부터 첫 번째 BC 정책 훈련까지 전체 벤치마크 스위트를 실행하는 것까지.

로보미믹 은 무엇 입니까?

로보미믹은 로봇 조작을 위한 오프라인 모방 학습 알고리즘을 연구하고 벤치마킹하는 오픈소스 프레임워크입니다. 스탠퍼드와 NVIDIA의 Ajay Mandlekar과 동료들이 개발한 이 프로그램은 처음으로 _"Robot 조작의 오프라인 인간 시연에서 배우는 것이 중요한 것" (CoRL 2021) 의 논문과 함께 발표되었습니다. 이 프로젝트는 이전에 통일된 패키지에 존재하지 않았던 세 가지 사항을 제공합니다. 로보시트 시뮬레이션에서 수집된 표준화된 시범 데이터 세트, 여섯 개의 모방 학습 알고리즘의 참조 구현 및 공정한 비교를 위한 재생 가능한 평가 프로토콜.

6개의 지원된 알고리즘은 오프라인 학습의 주요 가족들을 아우르는

  • **행동 복제 (BC) ** 관찰에서 행동으로의 감독 회귀. 가장 간단한 기본 라인 및 종종 놀랍게도 경쟁력있는.
  • BC-RNN BC는 관찰 역사에 대한 조건을 갖춘 LSTM 척추를 가지고 있습니다.
  • **BCQ (Batch Constrained Q-Learning) ** Q-값을 최적화하면서 정책이 시범 배포에 가깝게 유지하도록 제한하는 오프라인 RL 방법.
  • **CQL (Conservative Q-Learning) ** 오프라인 RL, 분배되지 않은 행위에 대한 Q-값을 처벌하여 과부평가 방지합니다.
  • **IQL (간접 Q-Learning) ** 는 예상적 회귀를 통해 값 함수를 학습함으로써 배포되지 않은 동작을 완전히 쿼리하는 것을 피합니다.
  • TD3-BC RL 개선을 허용하면서 정책이 데이터에 가깝게 유지되는 행동 복제 규칙화 용어를 가진 TD3.

로봇미믹은 실용적인 질문에 답하기 때문에 중요합니다. 인간의 시범의 고정된 데이터 세트를 고려하면 어떤 알고리즘이 가장 좋은 정책을 추출합니까? 또한 프레임워크는 [실적 로봇 데이터]T19) 를 동일한 HDF5 형식으로 지원하므로 연구 결과는 시뮬레이션 벤치마크에서 하드웨어 배포로 전송됩니다.

설치

로보미믹은 파이썬 3.8+가 필요하며 시뮬레이션 환경에서는 로보시트에 의존한다.

# Create and activate conda environment
conda create -n robomimic python=3.10
conda activate robomimic

# Install robomimic and robosuite
pip install robomimic
pip install robosuite

# For development (editable install with source)
git clone https://github.com/ARISE-Initiative/robomimic.git
cd robomimic
pip install -e .

# Verify installation
python -c "import robomimic; print(robomimic.__version__)"

GPU 가속화된 훈련 (사진 기반 정책에 필요한) 에 대해 먼저 CUDA 지원이 있는 PyTorch를 설치하십시오.

# PyTorch with CUDA 12.1 (adjust for your CUDA version)
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121

# Then install robomimic
pip install robomimic

계속하기 전에 GPU가 PyTorch에 가시적이라는 것을 확인하세요:

python -c "import torch; print(f'CUDA available: {torch.cuda.is_available()}, Device: {torch.cuda.get_device_name(0)}')"

데이터 세트

로보미믹은 4개의 로보수이트 조작 작업에 대한 사전 수집된 시범 데이터 세트를 제공합니다. 각 데이터 세트는 두 개의 운영자 품질 수준 (전문인 및 다인) 및 두 가지 관찰 유형 (하차적 상태 및 이미지) 으로 제공됩니다.

내장된 스크립트를 사용하여 데이터 세트를 다운로드하십시오:

# Download the Lift task dataset (low-dim, proficient-human, 200 demos)
python robomimic/scripts/download_datasets.py --tasks lift

# Download all four tasks
python robomimic/scripts/download_datasets.py --tasks all

# Download image observation datasets (larger, ~10 GB per task)
python robomimic/scripts/download_datasets.py --tasks lift --dataset_type image

각 데이터 세트는 다음과 같은 구조를 가진 HDF5 파일로 저장됩니다.

  • 데이터/디모_0/obs/ 관찰 배열 (공동 위치, 최종 효과자 자세, 지갑 상태, 선택적 이미지)
  • 데이터/디모_0/행동 액션 배열 (공동 속도 또는 위치 목표)
  • 데이터/디모_0/상품 희귀한 보상 신호 (1번 성공, 0번 성공)
  • 데이터/디모_0/dones 에피소드 종료 플래그
  • 데이터/마스크/ 기차/정확성 분할 지표

저차원 관측은 로봇 관절 위치 (7D), 관절 속도는 (7D), 최종 효과자 위치 (3D), 최종 효과자 지향 (4D 사각형) 및 지갑 열 (1D) 를 포함한다. 교통과 같은 쌍방향 작업에서는 모든 매리 (팔당 한 개) 를 두 배로 증가시킵니다. 이미지 관측은 에이전트뷰와 로봇 카메라에서 84x84 또는 128x128 RGB 매리 (RGB array) 를 추가합니다.

첫 번째 정책 을 훈련 시키십시오

훈련된 정책으로 가장 빠른 길은 낮은 차원의 관측을 통해 리프트 작업에 BC입니다. 이것은 현대 CPU에서 30분 이내에 훈련되며 95% 이상의 성공률을 달성해야합니다.

단계 1: 훈련 구성을 생성합니다.

# Generate a default BC config for the Lift task
python robomimic/scripts/generate_config.py \
  --algo bc \
  --task lift \
  --dataset_path datasets/lift/ph/low_dim.hdf5 \
  --output_dir configs/

제2 단계: 구성 요소를 검토하고 수정합니다. 생성된 JSON 구성 요소는 모든 훈련 매개 변수를 제어합니다.

{
  "algo_name": "bc",
  "experiment": {
    "name": "bc_lift_lowdim",
    "epoch_every_n_steps": 500,
    "validation_epoch_every_n_steps": 50,
    "save.enabled": true
  },
  "train": {
    "data": "datasets/lift/ph/low_dim.hdf5",
    "batch_size": 100,
    "num_epochs": 2000,
    "seed": 1
  },
  "observation": {
    "modalities": {
      "obs": {
        "low_dim": ["robot0_eef_pos", "robot0_eef_quat", "robot0_gripper_qpos", "object"]
      }
    }
  }
}

단계 3: 훈련을 실행하세요.

python robomimic/scripts/train.py --config configs/bc_lift_lowdim.json

# Training logs to stdout and TensorBoard
# Monitor: tensorboard --logdir trained_models/

단계 4: 훈련된 정책을 평가하십시오.

# Run 50 evaluation rollouts
python robomimic/scripts/run_trained_agent.py \
  --agent trained_models/bc_lift_lowdim/models/model_best.pth \
  --n_rollouts 50 \
  --render

인력 데이터에 의해 95% 이상의 성공률을 볼 수 있습니다. 만약 당신의 성공률이 80% 이하라면, 올바른 데이터 세트 경로를 사용하고 있으며, 2000 시대 전체에 걸쳐 교육을 실시했는지 확인하세요.

알고리즘 비교

올바른 알고리즘을 선택하는 것은 데이터 예산, 컴퓨팅 예산, 작업 복잡성에 달려 있습니다. 이 표는 실용적인 타협점을 요약합니다.

Algorithm Type Data Efficiency Compute Cost Best For Key Limitation
BC Supervised High Low Simple tasks, good data Compounding errors on long horizons
BC-RNN Supervised High Medium Multi-step tasks, temporal reasoning Slower inference, harder to tune
BCQ 오프라인 강화학습 Medium High Suboptimal data, needs improvement Sensitive to hyperparameters
CQL 오프라인 강화학습 Medium High Conservative policies from noisy data Can be overly conservative
IQL 오프라인 강화학습 Medium Medium Mixed-quality datasets Requires careful expectile tuning
TD3-BC 오프라인 강화학습 Medium High Refining near-optimal demonstrations Unstable with small datasets

** 일반 지침:** BC를 시작하십시오. BC가 장평선 복합 오류로 실패하면 BC-RNN를 시도하십시오. 데이터가 혼합 품질이있는 경우 (어떤 시범은 최저가) IQL를 시도하십시오. 데이터 배포에 대한 오프라인 RL 개선이 필요하고 달성 가능한 것이라고 믿는 구체적인 이유가있는 경우에만 BCQ/CQL/TD3-BC를 사용합니다. 실제적으로, BC-RNN는 RoboMimic 벤치마크 작업에서 가장 신뢰할 수 있는 알고리즘입니다.

벤치마크 를 실행 하는 것

로보미믹은 점점 더 어려운 네 개의 조작 작업을 정의하고 있으며, 모두 로보시트에서 구현됩니다.

  • ** Lift** 테이블에서 큐브를 가져오십시오. 단일 팔, 1 개체. 가장 쉬운 작업, 훈련 파이프라인의 작동을 확인하는 데 유용합니다. BC 성공: 95-100%.
  • **** 캔을 들고 목표물 캔에 넣는다. 정확한 포착과 배치가 필요하다. BC 성공: 80-95%. BC-RNN 성공: 90-98%.
  • 평방 평방 견과류를 가져가 에 올려 놓아야 한다. 정확한 조렬과 삽입이 필요하다. BC 성공: 40-70%. BC-RNN 성공: 60-85%.
  • 교통 양동력 작업: 한 팔이 쓰레기통에서 물체를 선택하고 다른 팔에게 넘겨서 목표 위치에 배치합니다. 가장 어려운 작업은 두 팔의 조화를 필요로합니다. BC-RNN 성공: 30-60%.

전체 기준을 실행하기 위해:

# Generate configs for all tasks and algorithms
python robomimic/scripts/generate_paper_configs.py --output_dir benchmark_configs/

# Run all experiments (use a cluster or run overnight)
python robomimic/scripts/train.py --config benchmark_configs/lift/bc.json
python robomimic/scripts/train.py --config benchmark_configs/can/bc.json
python robomimic/scripts/train.py --config benchmark_configs/square/bc_rnn.json
python robomimic/scripts/train.py --config benchmark_configs/transport/bc_rnn.json

# Evaluate all trained models
python robomimic/scripts/run_trained_agent.py \
  --agent trained_models/lift/bc/models/model_best.pth \
  --n_rollouts 100

모든 알고리즘과 작업에서 전체 벤치마크를 실행하는 것은 하나의 RTX 3090에서 약 3-5 일입니다. 이미지 기반 실험에 대해서는 2-3x 더 긴 훈련 시간을 기대하십시오.

이미지 관찰 을 이용 함

이미지 기반 정책 훈련은 로보미믹이 실제 세계 전송에 가장 가치있는 분야가 되는 곳입니다. 실제 로봇은 지상 진실 객체 위치에 액세스 할 수 없습니다. 그들은 카메라를 가지고 있습니다. 시뮬레이션에서 시각적 정책을 훈련하고 실제 하드웨어로 전송하는 것은 [이미레이션 학습] (T20) 배포의 주요 파이프라인입니다.

BC 시각 정책을 훈련하려면, 당신의 구성에서 관찰 모달을 변경하십시오:

{
  "observation": {
    "modalities": {
      "obs": {
        "low_dim": ["robot0_eef_pos", "robot0_gripper_qpos"],
        "rgb": ["agentview_image", "robot0_eye_in_hand_image"]
      }
    },
    "encoder": {
      "rgb": {
        "core_class": "VisualCore",
        "core_kwargs": {
          "backbone_class": "ResNet18Conv",
          "pool_class": "SpatialSoftmax"
        }
      }
    }
  }
}

더 나은 시각적 표현을 위해 처음부터 훈련하는 대신 R3M (Nair et al., 2022) 같은 사전 훈련된 코더를 사용하십시오.

# Install R3M
pip install r3m

# In your config, set the encoder to use R3M
"backbone_class": "R3MConv",
"backbone_kwargs": {"r3m_model_class": "resnet18"}

GPU 요구 사항: ResNet18의 이미지 기반 훈련은 최소 8 GB의 VRAM가 필요합니다. R3M 및 배치 크기가 16인 경우 10-12 GB의 사용량을 기대하십시오. RTX 3080 (10 GB) 또는 RTX 4090 (24 GB) 는 권장됩니다. 훈련 시간은 ~30 분 (저매) 에서 4-8 시간 ( 이미지 기반) 으로 증가합니다.

자기 자신 의 자료 를 수집 하는 것

RoboMimic는 HDF5 데이터 세트를 그 형식을 따라 받아들이고, 즉, 로보수이트 또는 실제 하드웨어에서 시범을 수집하고 동일한 알고리즘을 사용하여 훈련 할 수 있습니다.

전용전화로 로보수이트에서 수집:

# Launch robosuite teleoperation data collection
python robosuite/scripts/collect_human_demonstrations.py \
  --environment Lift \
  --robots Panda \
  --controller OSC_POSE \
  --device keyboard

지원되는 입력 장치에는 키보드, 스페이스마우스 (3D 커넥션) 및 장치 브리지를 통해 VR 컨트롤러가 포함되어 있습니다. 대규모 수집을 위해 스페이스마우스는 데이터 품질과 운영자 피로 사이의 최고의 타협을 제공합니다.

** 사용자 지정 데이터를 RoboMimic 형식으로 변환:** 데이터 는 HDF5 파일 에피소드 로 조직 해야 합니다. 각 에피소드 는: 관찰 (열의 다이크트), 액션 (열), 보너스 (열), 그리고 도네스 (열) 를 필요로 합니다. 변환 유틸리티 를 사용:

import h5py
import numpy as np

with h5py.File("my_dataset.hdf5", "w") as f:
    grp = f.create_group("data")
    for i, episode in enumerate(episodes):
        demo = grp.create_group(f"demo_{i}")
        obs = demo.create_group("obs")
        obs.create_dataset("robot0_eef_pos", data=episode["eef_positions"])
        obs.create_dataset("robot0_gripper_qpos", data=episode["gripper_states"])
        demo.create_dataset("actions", data=episode["actions"])
        demo.create_dataset("rewards", data=episode["rewards"])
        demo.create_dataset("dones", data=episode["dones"])

    # Create train/val split
    mask = grp.create_group("mask")
    n = len(episodes)
    mask.create_dataset("train", data=np.arange(int(n * 0.9)))
    mask.create_dataset("valid", data=np.arange(int(n * 0.9), n))

실제 하드웨어로 전송

로봇미믹으로 훈련된 정책으로 시프-실천 전송은 세 가지 중요한 격차에 주목해야 합니다.

  • ** 관찰 격차:** 실제 카메라 이미지는 시뮬레이션 렌더링과 다르다. 훈련 중에 로보수이트 (조직, 조명, 카메라 포즈) 에서 도메인 무작위로 분류하거나 소수의 실제 디스플레이 (10-50 에피소드가 종종 충분하다) 를 통해 정교하게 조정하십시오.
  • 행동 공간 격차: 실제 로봇 컨트롤러가 훈련 환경과 같은 제어 주파수 (로보미믹에서 일반적으로 20 Hz) 에서 동일한 동작 유형 (공동 속도와 OSC 위치) 을 받아들이도록 한다.
  • 역학 격차: 객체 마찰, 로봇 관절 역학, 그리고 집착 동작은 시뮬레이션과 현실 사이에 차이가 있다. 실제 시범의 작은 데이터 세트를 수집하고 실제 데이터에 직접 훈련하거나 sim 훈련된 정책을 정밀하게 조정하는 것이 실용적인 해결책이다.

실제 프랭카 파ண்டா (전설 로보미믹 로봇) 에 배치하려면, 로보미믹 동작을 로봇의 컨트롤러에 매핑하는 액션 래퍼를 구현해야 합니다.

일반적인 오류 및 수정

  • "KeyError: 'robot0_eef_pos'"를 훈련 데이터 세트는 구성에서 예상되는 관찰 키를 포함하지 않습니다. 사용 가능한 키를 보기 위해 T14를 실행하고, 구성에 맞게 업데이트하십시오.
  • ** 훈련 손실은 감소하지만 평가 성공은 0%** 정책은 훈련 데이터에 과잉 적합합니다. 배트 크기를 줄이고, 중단 (0.1-0.3) 를 추가하거나 데이터 세트 크기를 증가시킵니다. 또한 평가 환경이 훈련과 동일한 관찰 정상화를 사용하는지 확인합니다.
  • ** 이미지 훈련 중 "CUDA Memory Out"** 대량 크기를 줄이거나 (이미지 정책에 대해 8 또는 16으로 시작) gradient 축적을 사용한다. R3M를 사용하면, 코더 척추를 얼어붙여서 메모리 40%를 줄이십시오.
  • **BC-RNN 훈련은 불안정 (손실 스피크) ** 학습 속도를 1e-4로 줄이고, 기하급수 절단 (max_norm=1.0) 을 사용하며, 순서 길이를 점진적으로 증가시킨다.
  • ** MuJoCo가 오픈소스 (v2.1.2+) 로 변경된 후 import** 에서 "MuJoCo는 발견되지 않았다" 오류를 T15을 통해 설치합니다. 충돌하는 모든 오래된 mujoco-py 설치를 제거합니다: T16.
  • ** 훈련된 정책은 sim에서 작동하지만 실제 로봇에서 실패합니다** 동작 공간 부합 (공동 속도와 OSC 위치), 제어 주파수 부합 및 관찰 정상화를 확인합니다. 위의 sim-to-real 섹션 참조하십시오.

RCSV 하드웨어와 통합

RCSV는 RoboMimic 작업 흐름과 호환되는 미리 구성된 로봇 설정을 제공하여 하드웨어 통합 부담을 제거합니다.

  • OpenArm RCSV의 오픈소스 6-DOF 로봇 팔. 우리는 20 Hz에서 OpenArm의 공동 컨트롤러에 OSC_POSE 동작을 지도하는 RoboMimic 호환성 액션 랩퍼를 제공합니다. 데이터셋 수집은 동일한 HDF5 형식을 사용합니다. 따라서 형식을 변환하지 않고 RoboMimic 알고리즘으로 직접 훈련 할 수 있습니다.
  • Franka Panda 기본 로보미믹 로봇. RCSV는 로보미믹 호환 데이터 수집 및 정책 배포를 위해 미리 구성된 디옥시스 컨트롤러로 프랑카 시스템을 운영합니다.
  • 비매뉴얼 설정 실제 하드웨어에서 운송 작업을 위해, RCSV는 50 Hz에서 동기화된 데이터 수집을 하는 양 팔 ALOHA 스타일의 시스템을 제공합니다. 데이터 형식은 RoboMimic의 비매뉴얼 구조와 직접 일치합니다.

RCSV에서 수집된 모든 데이터 세트는 전달 전에 RoboMimic HDF5 스키마에 의해 검증되며, 이는 변경 없이 직접 훈련 파이프라인에 로드되도록 합니다.

자주 묻는 질문

  • **로보미믹은 로봇 조작을 위한 오프라인 모방 학습 알고리즘을 벤치마킹하고 개발하는 프레임워크입니다. 연구자들이 BC, BC-RNN, BCQ, IQL와 같은 작업에 대한 알고리즘을 비교할 수 있도록 표준화된 데이터 세트, 훈련 파이프라인 및 평가 프로토콜을 제공합니다.
  • ** RoboMimic는 어떤 알고리즘을 지원합니까?** BC, BC-RNN, BCQ, CQL, IQL, TD3-BC 등 여섯 개의 알고리즘을 지원합니다. 사용자는 모듈러 구성 시스템을 통해 사용자 지정 알고리즘을 추가할 수 있습니다.
  • ** RoboMimic 정책을 훈련시키기 위해 GPU가 필요합니까?** 저차원 관측 정책에 있어서, 현대적인 CPU는 작동하지만 느립니다. 이미지 기반 정책에 대해서는 최소 8 GB VRAM를 가진 NVIDIA GPU가 필요합니다. RTX 3080 또는 더 나은 것이 좋습니다.
  • ** 실제 로봇 데이터와 함께 로보미믹을 사용할 수 있습니까?** 네. 로보미믹은 형식 규정을 따르는 모든 HDF5 데이터 세트를 수용합니다. 실제 로봇에서 시범을 수집하고, 로보미믹 HDF5 형식으로 변환하고, 동일한 알고리즘을 사용하여 훈련합니다.
    • 로보미믹은 레로봇과 어떻게 비교되는가? * 로보미믹은 로보시이트와 오프라인 모방 학습 벤치마크에 초점을 맞추고 있다. 레로봇 (Hugging Face) 은 더 넓은 범위이며 데이터 수집, 여러 시뮬레이션 백그레드 및 실제 로봇 배포를 아우르는 영역이다. 많은 연구자들은 레로봇 파이프라인 내에서 로보미믹 알고리즘을 사용합니다.
  • ** 벤치마크 작업에서 어떤 성공률을 기대해야 합니까?** 리프트: 95-100% (BC) 이 가능: 80-95% (BC) 은 가능: 60-85% (BC-RNN) 은 가능. 교통: 30-60% (BC-RNN) 은 다양합니다.

실제 로봇 훈련 데이터가 필요하십니까?

RCSV는 실제 하드웨어 (Franka, OpenArm, 그리고 다동 ALOHA 시스템) 에 대한 RoboMimic 호환적인 디스플레이 데이터 세트를 수집합니다. 하드웨어 설정을 건너뛰고 바로 훈련에 가십시오.

[데이터 서비스를 참조]