Guidesに戻る

ロボミミック・チュートリアル:設定,ベンチマーク &トレーニング あなたの最初のポリシー

リアルロボットデータ収集のためのステップバイ・ステップロボミックガイド. ハードウェア要件,データセットフォーマット,OpenArm統合とのBC,DAgger,MimicGenワークフローを比較します.

←ガイド / 模倣学習

ロボット操作のための主要なオフライン模倣学習フレームワークである RoboMimicの完全なウォークスルー. インストールから最初のBCポリシーを訓練し,完全なベンチマーク・スイートを実行するまでの間.

ロボミミックは 何ですか?

ロボミミックはロボット操作のためのオフライン模倣学習アルゴリズムを研究し,ベンチマークするためのオープンソースのフレームワークです.Ajay MandlekarとスタンフォードとNVIDIAの同僚によって開発され,最初に論文 _"Robot マニピュレーションのためのオフライン人示範から学ぶことには何が重要か" (CoRL 2021) と一緒にリリースされました. プロジェクトでは,以前統一パッケージには存在しなかった3つのものがあります. ロボスイートシミュレーションで収集された標準化示例データセット,6つの模倣学習アルゴリズムの参照実装,そして公正な比較のための再現可能な評価プロトコル.

オフライン学習の主要な家族をカバーする 6つのサポートアルゴリズムです

  • **行動クローン (BC) ** 観察から行動へと逆転を監視した.最も単純なベースラインで,しばしば驚くほど競争力がある.
  • BC-RNN BCは,観測の歴史を条件とする LSTMの脊椎を持つ. 進BCが欠けている時間依存性を捕捉する.
  • **BCQ (Batch Constrained Q-Learning) ** 政策を Q-値の最適化中に示範配分に近い状態に留めるオフライン RL方法.
  • **CQL(Conservative Q-Learning) (保守的なQ学習) ** オフラインRLでQ値が配布外の行動に対して罰せられ,過度評価を防ぐ.
  • **IQL (暗黙のQ学習) ** は,期待の逆転を通じて値関数を学習することによって,分散外でのアクションを完全に查询することを避けます.
  • TD3-BC RL改善を可能にする行動クローン規則化用語を持つ TD3.

ロボミミックは重要な理由は,実用的な質問に答えているからです. 人間のデモの固定データセットを考慮すると,どのアルゴリズムは最良のポリシーを抽出するのでしょうか. ロボミミック以前,各論文は異なる環境,異なるデータ,異なる評価を使用していました. このフレームワークは,同じHDF5フォーマットで [実用ロボットデータ]T19]もサポートしているため,シミュレーション基準からハードウェア展開に結果が転送されます.

設置

RoboMimic は Python 3.8+ を必要とし,シミュレーション環境のために robosuite を依存している.推奨するアプローチは,依存関係を隔離するための専用コンダ環境である.

# 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)}')"

データのセット

RoboMimicは,ロボスイート操作の4つの作業のための,事前に収集されたデモデータセットを提供しています.各データセットは,操作者の品質レベル (熟練した人間と多人) と観察タイプ (低次元状態と画像) の2つに分類されます.

組み込み脚本を使用してデータセットをダウンロードします

# 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) が含まれる.輸送のような双手作業では,すべてのマレイを倍増する (腕あたり1枚).画像観測は,エージェントビューとロボットカメラから84x84または128x128 RGBマレイを追加する.

初め の 政策 を 訓練 する

訓練された政策への最も速い道は,低次元観測によるリフト作業の 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 オフラインRL Medium High Suboptimal data, needs improvement Sensitive to hyperparameters
CQL(Conservative Q-Learning) オフラインRL Medium High Conservative policies from noisy data Can be overly conservative
IQL オフラインRL Medium Medium Mixed-quality datasets Requires careful expectile tuning
TD3-BC オフラインRL Medium High Refining near-optimal demonstrations Unstable with small datasets

一般ガイド: BCから始めましょう.長視線複合エラーにより BC が失敗した場合,BC-RNN を試してみてください.データが混合質である場合 (一部の示示例は最適ではない) IQL を試してみてください.データ分布に対するオフライン RL の改善が必要かつ達成可能であると信じる具体的な理由がある場合のみ,BCQ/CQL/TD3-BC を使用してください. 実践的には,BC-RNNは,ロボミミックベンチマークタスクにおいて最も信頼性の高いアルゴリズムである.

基準を実行する

RoboMimicは,ロボスイートで実装される,ますます困難になる4つの操作作業を定義しています.

  • テーブルからキューブを拾い上げます. 単腕, 1つのオブジェクト. 最も簡単なタスク,あなたのトレーニングパイプラインの動作を確認するのに役立ちます. BC 成功: 95-100%.
  • Can 缶を拾い,ターゲット箱に入れておく.正確な把握と配置が必要です.BC成功:80-95%.BC-RNN成功:90-98%.
  • ** 平方** 平方ノットを取り上げて,ピッグに置く.正確な配列と挿入が必要です. BC成功:4070%. BC-RNN成功:6085%.
  • 輸送 双手作業:一腕がゴミ箱から物体を拾い,他の腕に渡し,目標位置に配置する.最も難しい作業は,両腕の連携を必要とする.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で約35日かかります. イメージベースの実験では,トレーニング時間が23倍長くなることを期待してください.

画像 の 観察 を 用い て

画像ベースの政策訓練は,ロボットミミックは現実世界での転送にとって最も価値のあるものとなる.実際のロボットは,地面の真実物体の位置にアクセスできない.彼らはカメラを持っている.シミュレーションにおける視覚的政策のトレーニングと実際のハードウェアへの移行は, [模倣学習] (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で画像ベースのトレーニングには少なくとも8GBのVRAMが必要です.R3Mと16のバッチサイズでは,10〜12GBの使用を期待します.RTX 3080 (10GB) またはRTX 4090 (24GB) が推奨されます.トレーニング時間は1つのGPUで~30分 (低暗さ) から4〜8時間 (画像ベースの) に増加します.

自分 の データを 収集 する

ロボミミックはそのフォーマットに従う HDF5 データセットをすべて受け入れます つまり,ロボスイートや実際のハードウェアでデモを収集し,同じアルゴリズムでトレーニングすることができます.

遠隔操作によるロボット・スイートでの収集:

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

サポートされる入力デバイスにはキーボード,SpaceMouse (3Dconnexion) とデバイス橋を通じたVRコントローラーが含まれます.大規模な収集のために,SpaceMouseはデータ品質とオペレーター疲労の間の最良の妥協を提供します.

カスタムデータをロボミミックフォーマットに変換する: あなたのデータは 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))

リアルなハードウェアに移行

ロボミミックで訓練された政策でシムからリアルへの移行は 3つの重要な欠陥に注意を払う必要があります

  • 観察空間の: 実写カメラ画像はシミュレーションレンダーのと異なります.訓練中にロボットスペクトル (テクストル,照明,カメラポーズ) でドメインランダム化または実写映像の少数の精細調整 (通常10〜50エピソードが十分) を使用します.
  • アクションスペースギャップ: リアルロボットコントローラがトレーニング環境と同じ制御周波数 (RoboMimicでは通常20 Hz) で同じアクションタイプ (関数速度対 OSC位置) を受け入れることを確認します.
  • ダイナミックギャップ: 対象の摩擦,ロボット関節動力,グリッパー行動はシミュレーションと現実の間には異なります.実用的な解決策は,実際のデモの小さなデータセットを収集し,シム訓練のポリシーを細かく調整するか,実際のデータに直接訓練することです.

本物のフランカ・パンダ (デフォルトのロボミックロボット) に部署するには,robosuite と同じ OSC_POSE アクションスペースを提供する T13 コントローラーインターフェースを使用します.他のロボット腕では,ロボミック操作をロボット コントローラーにマッピングするアクションラッパーを実装する必要があります.

常見な誤りと修正

  • "KeyError: 'robot0_eef_pos'"の訓練中に データベースには設定が期待する観測キーが含まれていません. T14を実行して利用可能なキーを見,設定を一致するように更新します.
  • トレーニングの損失は減少しますが,評価の成功率は0% 政策はトレーニングデータに過度に適合しています. バッチサイズを減らしたり,ドロップアウト (0.1-0.3) を追加したり,データセットサイズを増やしたりしてください.また,評価環境はトレーニングと同じ観察正常化を使用していることを確認してください.
  • 画像訓練中に"CUDA のメモリ 抜き" 画像のトレーニング中に,パッチサイズを減らす (画像ポリシーでは 8 または 16 で開始) または gradient 蓄積を使用する. R3M を使用する場合,コード器の背骨を凍結して,メモリを ~ 40% 減少させる.
  • **BC-RNNトレーニングは不安定 (損失のピーク) ** 学習速度は1e-4に低下し,梯度カット (max_norm=1.0) を使用し,シーケンスの長さを徐々に増加します.訓練が安定すると,seq_length=10から開始し,20に増加します.
  • MuJoCo がオープンソースになったので 輸入の際に"MuJoCo が見つかりませんでした"のエラーを T15 でインストールします. T16 に衝突する古い mujoco-py インストールを削除します.
  • 訓練されたポリシーが sim で動作しますが,実際のロボットでは失敗します 動作空間不一致 (関節速度対 OSC 位置),制御周波数不一致,観測正常化を確認します.上記の sim-to-real セクションを参照してください.

RCSV ハードウェアへの統合

RCSVは,RoboMimicのワークフローと互換性のある,先設定のロボットセットアップを提供し,ハードウェア統合の負担をなくす.

  • **OpenArm ** RCSVのオープンソースの6DOFロボットアーム.我々は,OSC_POSEアクションをOpenArmの共同コントローラに20HzでマップするRoboMimic対応のアクションラッパーを提供している.データセット収集は同じHDF5フォーマットを使用しているので,フォーマット変換なしでRoboMimicアルゴリズムで直接トレーニングすることができます.
  • Franka Panda 標準的な RoboMimic ロボット. RCSVは,RoboMimic対応のデータ収集とポリシー展開のために,デオキシスコントローラをプリコンフィギュレーションしたFrankaシステムを使用しています.
  • **実用ハードウェアでの輸送作業のために,RCSVは50 Hzで同期データ収集を可能にする双臂ALOHA型システムを提供します.データフォーマットは,Robomimicの双手構造に直接一致します.

RCSVで収集されたすべてのデータセットは,配送前に RoboMimic HDF5 計画に基づいて検証され,変更なしに訓練パイプラインに直接読み込まれるようにします.

よく 聞かれる 質問

  • **RoboMimicはロボット操作のためのオフライン模倣学習アルゴリズムをベンチマークおよび開発するためのフレームワークです.研究者が同じ作業でBC,BC-RNN,BCQ,IQLなどのアルゴリズムを公平に比較できるように標準化されたデータセット,トレーニングパイプライン,評価プロトコルを提供しています.
  • ** RoboMimic はどのアルゴリズムをサポートしているか?** BC, BC-RNN, BCQ, CQL(Conservative Q-Learning), IQL, TD3-BC の6つのアルゴリズム.ユーザーはモジュール化構成システムを通じてカスタムアルゴリズムを追加することもできます.
  • ** RoboMimic の ポリシー を 訓練 する ため に GPU が 必要 かかっ て い ます か.** 低次元 の 観測 ポリシー に は,現代 の CPU が 動作 する が,遅い が あり ます. イメージ に 基づく ポリシー に は,少なくとも 8 GB の VRAM を 備える NVIDIA GPU が 必要 です. RTX 3080 または より 良い が 推奨 さ れ ます.
  • 私は本物のロボットデータでRoboMimicを使用できますか? はい.RoboMimicは,そのフォーマット仕様に従ってすべてのHDF5データセットを受け入れます.実際のロボットでデモを収集し,RoboMimic HDF5フォーマットに変換し,同じアルゴリズムでトレーニングします.
  • ロボミックは,ローボ・サイト (Robosuite) でオフラインの模倣学習基準に焦点を当てています.レロボット (Hugging Face) はより広い範囲で,データ収集,複数のシミュレーションバックエンド,リアルロボット展開をカバーしています.多くの研究者はレロボットパイプライン内でロボミックのアルゴリズムを使用しています.
  • ベンチマークの課題でどのような成功率を期待すべきか 上げ:95-1% (BC) できます:80-95% (BC) 平方:60-85% (BC-RNN) 輸送:30-60% (BC-RNN) データは品質とハイパーパラメータによって異なります

ロボット訓練データが必要か?

RCSVは,実際のハードウェアのRoboMimic対応デモデータセットを収集します フランカ,OpenArm,および双手的なALOHAシステム.ハードウェア設定をスキップして,直接トレーニングに進みます.

[データサービスを見る]