SO-100クラスのアームで記録されたLeRobotデータセットを示すAY-Robots公開データセットディレクトリ
データセットOpen X-EmbodimentDROIDSO-100LeRobot

SO-100でDROID、BridgeData V2、Open Xを使用する

AY-Robots ResearchAugust 23, 202618 分で読めます

DROID、BridgeData V2、Open X-Embodimentは、6自由度および7自由度アーム上で7次元のエンドエフェクタアクションに変換されます。SO-100は6つの関節位置を取ります。何が転送され、何が転送されず、代わりに何をすべきか。

概要

  • これら3つのLeRobotビルドは共通の規約を共有しています。それは7次元のエンドエフェクタアクション [x, y, z, roll, pitch, yaw, gripper] と、パディングスロット付きの8次元の状態です。SO-100は6つの絶対関節位置を取ります。
  • その7次元ベクトルはコンバーターの成果物です。DROID自身のRLDSアクションフィールドは、6つの関節速度とグリッパー位置であり、action_dictにはカルテシアンビューが含まれています。
  • 4つのクロック: DROID 15 fps、BridgeData V2 5 fps、google_robotスライス 3 fps、SO-100の記録は30 fpsです。
  • これらを自身のデータとマージすることはできません。validate_all_metadataは、fps、robot_type、またはfeaturesのいずれかに違いがあると、最初にエラーを発生させ、これら3つはすべて異なります。
  • 転送されるのは事前学習済み重みであり、エピソードではありません。オープンソースデータは、pi0の事前学習混合の9.1パーセントを占めます。
  • それらの最も安価な実際の用途はテストフィクスチャです。それは、週末に記録する前にパイプラインを検証する、既知の良好な2 GB、100エピソードのDROIDサンプルです。

Google Cloudバケットには100万軌跡の公開データセットがあり、机の上には部品代が110から150 EURのSO-100があります。なぜ前者が後者を教えることができないのでしょうか?部分的には可能ですが、人々が期待するような転送はほとんど起こらず、最も簡単に見える部分は全く機能しません。

以下では、DROIDBridgeData V2およびOpen X-Embodimentの内部がどうなっているか、それぞれが低コストの5自由度アームとどのように衝突するか、そして代わりに何をすべきかについて説明します。以下のすべての数値は、それぞれの論文、データセットカード、またはソースファイルから引用されています。

これら3つのデータセットが実際に含むもの

DROIDBridgeData V2Open X-Embodiment
ロボットFranka Panda、7自由度、Robotiq 2F-85WidowX 250、6自由度、約4,000 USDの装置22のエンボディメント、60のデータセット、34の研究室
規模7.6万の軌跡、350時間60,096の軌跡100万以上の軌跡、527のスキル
多様性564のシーン、84のタスク、50の収集者24の環境、13のスキル160,266のタスク、21の機関
構成すべて遠隔操作50,365が遠隔操作、9,731がスクリプト各ソース研究室ごと
制御レート15 Hz5 Hz様々、3 fps以上
カメラZED 2が2台(外部)、ZED Miniが1台(手首)最大4台、ほとんどのエピソードでは固定カメラのみ各研究室が使用したもの
生データダウンロード1.7 TBのRLDS、8.7 TBの生ステレオデータJPEGアーカイブデータセットごとのTFDSバケット
エントリーポイントはLeRobot変換であり、元のバケットではありません

1.7 TBものRLDS TFRecordsをダウンロードする人はほとんどいません。コミュニティ組織IPEC-COMMUNITYは、Open X-EmbodimentのほとんどをAV1ビデオ付きのLeRobot dataset形式で再公開しており、DROIDは392 GBになります。これがあなたが使用するバージョンであり、そのmeta/info.jsonを最初に読むべきです。

DROID

3つの中で最も標準化されています。どこでも同じ装置:Robotiq 2F-85グリッパーを備えたFranka Panda、2台の調整可能なZED 2ステレオカメラ、手首のZED Mini、Meta Quest 2コントローラーで遠隔操作され、Polymetisを介して15 Hzで関節空間とエンドエフェクタ空間の両方で記録されます。言語ラベルは後でtasq.aiを介して追加され、エピソードあたり最大3つです。

  • 76kの軌跡、350時間、564のシーン、84のタスク、3大陸にわたる50のコレクター。
  • 主要な結果は、単独トレーニングではなく共同トレーニングです。ドメイン内デモンストレーションと50/50で混合されたバッチは、次に優れた手法を、分布内での絶対成功率で22パーセント、分布外で17パーセント上回りました。
  • IPEC-COMMUNITY/droid_lerobot: 92,233エピソード、27,044,326フレーム、franka、15 fps、codebase_version v2.0、180x320のAV1ストリーム3本、392 GB。
  • 2 GB、100エピソードのデバッグサンプルがgs://gresearch/robotics/droid_100にあります。そこから始めてください。

BridgeData V2

ホビーセットアップに最も近いもの:WidowX 250 6自由度アーム、24の環境と13のスキルにわたる60,096の軌跡を5 Hzで。構成に注目してください:50,365の専門家による遠隔操作デモンストレーションと、ランダム化されたスクリプトによるピックアンドプレースポリシーからの9,731、つまり約16パーセントは人間によるデモンストレーションではありません。これは模倣学習の品質に影響します。通常のダウンロードであるIPEC-COMMUNITY/bridge_orig_lerobotは、53,192エピソードと1,893,026フレームを5 fpsで、robot_type widowxと報告しており、論文の60,096よりも少ないため、どちらかを引用するのではなく、meta/info.jsonからカウントを読み取ってください。

Open X-Embodiment

同じ意味でのデータセットではありません。34の研究室からの60の既存ロボットデータセットが1つのRLDSコレクションに集約され、22のエンボディメントと100万以上の軌跡をカバーしています。BridgeData V2はbridge_origとしてその中に含まれており、google_robotスライスであるfractal20220817_dataは、3 fpsで87,212エピソードに変換されます。

この集約には、論文が明示している注意点があります。RT-X実験では、著者らは各ソースを7自由度(DoF)のエンドエフェクタアクションに変換しますが、データセット間で座標系を整合させず、各ロボットの元の制御スキームに従って、アクション値が絶対位置または相対位置、あるいは速度のいずれかになることを許容しています。彼らの結論は、同じアクションベクトルが異なるロボットに対して非常に異なる動きを引き起こす可能性がある、というものです。

The AY-Robots dataset directory listing public LeRobot datasets with episode counts and task descriptions
The public dataset directory at /directory: datasets already in LeRobot form, already matching a supported arm.

4部構成のミスマッチ

エンボディメントの不一致は、通常、漠然とした一つの問題として扱われます。しかし、実際には4つの異なる問題であり、それぞれ異なる形で失敗し、そのうち2つはスクリプトでは修正できません。

1. 自由度

SO-100は5つのアーム関節とグリッパーを備えています。モーターとして数えると6-DoFアームであり、SmolVLAの論文ではそのように呼ばれています。位置決め機構として数えると5-DoFであり、LeRobotはその逆運動学のドキュメント文字列でそのように呼んでいます。このドキュメント文字列は、手首が部分的にしか向きを追跡しない5-DOF SO-101におけるソフトオリエンテーションIKについて記述しています。Frankaは7つの位置決め関節を持っています。このギャップが、どのような姿勢が存在するかを決定します。5-DoFアームは一般的に、任意の姿勢と向きを同時に達成することはできないため、ソルバーは可能な限り近い姿勢を返します。これはデモンストレーションされた動きとは異なる動きです。背景: 自由度.

python
# src/lerobot/robots/so_follower/so_follower.py
motors = {
    "shoulder_pan":  Motor(1, "sts3215", norm_mode_body),
    "shoulder_lift": Motor(2, "sts3215", norm_mode_body),
    "elbow_flex":    Motor(3, "sts3215", norm_mode_body),
    "wrist_flex":    Motor(4, "sts3215", norm_mode_body),
    "wrist_roll":    Motor(5, "sts3215", norm_mode_body),
    "gripper":       Motor(6, "sts3215", MotorNormMode.RANGE_0_100),
}
# action keys are "<motor>.pos"; send_action sync_writes them to
# "Goal_Position"  ->  a 6-D ABSOLUTE JOINT POSITION command


# openpi/src/openpi/policies/droid_policy.py
def make_droid_example() -> dict:
    return {
        "observation/exterior_image_1_left": np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
        "observation/wrist_image_left":      np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
        "observation/joint_position":        np.random.rand(7),   # seven Franka joints
        "observation/gripper_position":      np.random.rand(1),
        "prompt": "do something",
    }
# state = concat(joint_position, gripper_pos)  ->  8-D
左: LeRobotのSOフォロワー (src/lerobot/robots/so_follower/so_follower.pyより)。右: openpiのDROIDポリシー入力。6対8。

既製のDROIDチェックポイントは近道ではありません。Physical Intelligenceはpi05_droidをgs://openpi-assets/checkpoints/pi05_droidで提供しており、その広範な能力を称賛する同じREADMEには、これらのエキスパートチェックポイントがあなたのセットアップに一般化しない可能性があると警告されています。その状態は8つのFrankaジョイント番号であり、画像キーはexterior_image_1_leftとwrist_image_leftです。その状態を6モーターのSO-100コマンドに変換するフラグはありません。

2. アクションベクトルが実際に示すもの

次元性よりも深い問題です。LeRobotの変換では、3つすべてがグリッパーがデカルト空間のどこに行くべきかを示します。SO-100は6つのサーボがどこに行くべきかを示します。変換には、リシェイプではなく、運動学モデルとソルバーが必要です。

プロパティLeRobot形式のOXE、DROID、BridgeLeRobotにおけるSO-100
アクションベクトル7次元: x, y, z, ロール, ピッチ, ヨー, グリッパー6次元: モーターごとの目標位置
状態ベクトル8次元、パディングスロット付き (google_robotはクォータニオンを使用)6次元、モーターごとに1つ
フレームデカルト空間、データセット間で不整合ジョイント空間、アームごとのキャリブレーション
絶対値または相対値どちらか、ソースラボによって決定絶対目標位置
単位データセットごとに正規化され、その後離散化デフォルトは度 (use_degrees=True)、それ以外は-100から100
サイレント障害絶対値として読み取られるデルタ未キャリブレーションのアーム
7次元のCartesianベクトルはコンバーターの慣例であり、DROIDのものではない

openx2lerobotのREADMEには、変換するすべてのデータセットに対して統一された8次元の状態と7次元のアクションが記述されており、`pad`スロットはそこから来ています。DROID独自のRLDSスキーマは異なります。そのトップレベルの`action`は、*6つの関節速度と1つのグリッパー位置*からなる7次元ベクトルであり、`action_dict`の下に`cartesian_position`、`cartesian_velocity`、`joint_position`、`joint_velocity`があります。openpiは関節空間ビューを読み取り、LeRobotビルドはCartesianビューを提供します。どちらも6つの絶対サーボ角度ではありません。

LeRobotは不足している部分を提供しています。SOフォロワーには、InverseKinematicsEEToJointsとForwardKinematicsJointsToEEのステップを持つ運動学プロセッサがあります。そのキーはee.x、ee.y、ee.zに加えて回転ベクトルee.wx、ee.wy、ee.wz、そしてee.gripper_posであり、ファイル内のロール・ピッチ・ヨーとは向きのエンコーディングも異なります。IKステップはorientation_weight(デフォルト0.01)を取り、そのドキュメント文字列には、低駆動アームでの位置のみのIKには0.0を設定するよう記載されています。ブリッジを構築することはできますが、借用されたすべてのアクションの向きの半分は近似されたままになります。

3. 制御レート

DROIDは15 Hz、BridgeData V2は5 Hz、google_robotスライスは3 fpsです。pi0の著者らは、彼らの混合物のオープンソース部分を2 Hzから10 Hzの低周波制御と説明しています。LeRobotのDatasetRecordConfigは、fps 30、episode_time_s 60、reset_time_s 60、num_episodes 50がデフォルトです。 5 Hzのデータで学習されたポリシーは、1つのアクションが200 msをカバーすることを学びました。これを30 Hzで再生するとアームはゆっくりと動き、安易にリサンプリングするとグリッパーが閉じるフレームがぼやけてしまいます。これは とも相性が悪いです。100ステップのチャンクは5 Hzでは20秒、30 Hzでは3.3秒になります。

4. カメラ

BridgeData V2は50軌道ごとに2つのカメラポーズをランダム化し、そのプロジェクトページでは、ほとんどのデータが固定ビューのみを保持していると述べられています。DROIDは調整可能なZED 2マウントと手首のZED Miniを使用しました。あなたは2つのUSBウェブカメラを目測で配置しています。カメラポーズはビジョン言語アクションモデルにとって邪魔な変数ではありません。それはビジュアルエンコーダが注目したものの多くであり、ファイル形式にはポーズが異なることを示すものは何もありません。

一日を食い潰す罠

各要素は十分に連携して動作します。データセットがロードされ、学習が開始され、損失が減少し、チェックポイントが出現し、エラーは発生しません。しかし、ポリシーはアーム上で認識できる動作を何もせず、あなたは学習スクリプトのバグを探して一日を費やします。バグはありません。モデルはあなたの部屋に存在しないロボットのカルテシアンアクション分布を学習したのです。ハイパーパラメータではなく、損失は減少するが、ポリシーは何も動作しないから始めてください。

それでもデータをマージしようとするとどうなるか

明白な計画は、数千のDROIDエピソードとあなたの50エピソードを連結することです。LeRobotはこれを拒否し、その拒否は異なる3つの点を挙げています。

  1. 1
    全体の1.7TBではなく、100エピソードのサンプルをプルする

    構造を確認するには2GBで十分です。

    bash
    pip install gsutil tensorflow tensorflow-datasets
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  2. 2
    RLDSをLeRobot形式に変換する

    openx2lerobotはOXE標準の変換をラップし、ロボットタイプと制御周波数をアノテーションします。READMEにはこれがconvert.shに記載されています。

    bash
    git clone https://github.com/Tavish9/any4lerobot.git
    cd any4lerobot/openx2lerobot
    
    python openx_rlds.py \
        --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \
        --local-dir ~/lerobot_droid100 \
        --repo-id you/droid100_lerobot \
        --use-videos
  3. 3
    他の何よりも先にmeta/info.jsonを読み込む

    このファイルが、その後の作業がうまくいくかどうかを決定します。

    bash
    python -c "import json;d=json.load(open('meta/info.json'));\
    print(d['codebase_version'], d['robot_type'], d['fps']);\
    print(d['features']['action']['shape'], d['features']['observation.state']['shape'])"
  4. 4
    マージを試してエラーを読む

    mergeはすべてのデータセットをロードし、validate_all_metadataはリストの最初のデータセットに対してfps、robot_type、およびfeaturesをチェックし、最初の一致しない箇所でエラーを発生させます。

    bash
    lerobot-edit-dataset \
        --new_repo_id you/mixed \
        --operation.type merge \
        --operation.repo_ids "['you/droid100_lerobot', 'you/my_so100_task']"
    
    # ValueError: Same fps is expected, but got fps=30 instead of 15.

参照値は、最初にリストしたデータセットから取得されます。そのため、メッセージはDROIDの15fpsではなく、あなたの30fpsについて不平を言います。fpsを修正するとrobot_typeチェックに引っかかり、それを修正するとアクションの7対6のfeatureチェックに引っかかります。どの順序でも通過せず、sanity_check_dataset_robot_compatibilityを介して記録時にも同じガードが実行されます。

チェックを回避するためにrobot_typeをハードコードしないでください

現在のLeRobotメインでは、so100_followerso101_followerは両方とも1つの共有SOFollowerRobotConfigに登録されているため、実際の記録からの文字列は必ずしもあなたが期待するものではありません。自身のmeta/info.jsonからそれを読み取り、無効にしなければならなかったチェックは、何かを教えてくれていたチェックとして扱ってください。

では、実際に何が転移するのか?

転移するのはエピソードではなく、重みです。現代の汎用ポリシーはすべて、事前学習でその一部を吸収しており、を公開されたから行うと、適切に処理する計算能力を持つ人々によって既に調整されたものを継承することになります。pi0の論文では、その割合について率直に述べられています。タイムステップで数えると、事前学習混合の9.1%がOXE、Bridge v2、DROIDを含むオープンソースデータです。この数値はpi0のものであり、各ベンダーの混合は異なります。

SO-100プロジェクトにおける公開クロスエンボディメントデータ
利点
  • 視覚と言語の事前知識:エンコーダは何千ものキッチンやマグカップを見ており、「赤いブロック」が何を指すかを知っている。
  • 操作構造に関する事前知識:接近、閉じる、持ち上げる、運ぶ、解放する、数値がそうでない場合でもエンボディメントに依存しない。
  • テスト用の既知の良好なデータセット。もしあなたのジョブが100のDROIDエピソードに過学習できないなら、問題はあなたのセットアップにある。
  • 参照点:小規模データセットのドメインでは、RT-1-Xは元の手法またはRT-1よりも平均成功率が50%高く、RT-2-Xは創発的スキルにおいてRT-2を約3倍上回った。
トレードオフ
  • 利用可能な行動教師信号がない。7次元のカルテシアン目標は6次元の関節コマンドではない。
  • カメラ姿勢の転移がなく、データには姿勢が異なることを示すものがない。
  • タイミングの転移がない。30 fpsのレコーダーに対して、3、5、15 fpsのソース。
  • グリッパーの転移がない。Robotiq 2F-85とSTS3215上のプリントされたジョーでは、力、ストローク、ダイナミクスが異なる。
  • 規模だけでは著者にとっても不十分だった。大規模データセットのドメインでは、RT-1-Xは単独でそのデータセットで学習されたRT-1に勝てなかった。
  • 必要な独自エピソード数の削減がない。
モデルの層転移するか?理由
Vision encoderはい、強くオブジェクトとシーンはエンボディメントに依存しない
Language groundingはい指示はテキストであり、ジオメトリではない
Cross-modal fusionほとんどプロンプトで指定されたオブジェクトに注意を払う
Proprioception encoderいいえ入力次元と関節のセマンティクスが異なる
Action headいいえあなたがいない7次元のカルテシアン空間で学習されている
Normalisation statisticsいいえ、そして危険外部の統計がすべてのコマンドをシフトさせる

これが、SmolVLAが低コストアームで異なる動作をする理由です。その論文では、Hugging Faceから481のコミュニティデータセットが選択され、エンボディメントタイプ、エピソード数、データ品質、フレームカバレッジでフィルタリングされています。22.9Kエピソード、10.6Mフレームが、実際のSO-100およびSO-101アームで評価されました。小規模で一致したものが、大規模で不一致なものよりも優れています。比較はACTとSmolVLAの比較で。

取るべき3つのパス

パスA: データを既に学習済みのチェックポイントからファインチューニングする

ほとんどの人はこのパスを選ぶべきです。DROIDやOpen X-Embodimentには決して触れません。プレトレーニングで既にクロスエンボディメントデータを吸収したポリシーを選択し、独自のエピソードを記録してファインチューニングします。

ポリシーパラメータ最小エピソード数データセット形式GPUティア推論ベースチェックポイント
GR00T N1.7~3 B、ファインチューニングで学習済み ~40 M50LeRobot v2.0 or v2.1A100 or H100 80 GB1ステップあたり152 msnvidia/GR00T-N1.7-3B
GR00T N1.5~3 B50LeRobot v2.0 or v2.1A100 or H100 80 GB165 msnvidia/GR00T-N1.5-3B
Pi0.5~3 B、PaliGemmaバックボーン50LeRobot v3.0A100 or H100 80 GB485 mslerobot/pi05_base
SmolVLA~450 M30LeRobot v3.0RTX 4090 or any 24 GB245 mslerobot/smolvla_base
ACT~80 M50LeRobot v3.0RTX 4090 or any 24 GB20 msなし、ゼロから

ACTは正直なエッジケースです。ベースモデルがないため、公開データがそれに到達することはありません。1アクションステップあたり20 msであるため、高速ループを閉じることができる5つのうち唯一のものであるため、自動的に不利になるわけではありません。ACTページで説明されています。タスクに応じて選択するには、5つすべてを比較GR00T N1.7とPi0.5の比較、および85モデルにわたる332のベンチマーク結果はアリーナで確認できます。

パスB:DROIDをテストフィクスチャとして使用する

100エピソードのサンプルは、今月ダウンロードする2 GBのデータの中で最高のものであり、トレーニング用ではありません。これは、正しいとわかっているデータセットです。これに対してコンバーター、ローダー、および短いGPUジョブを実行してください。失敗したものは、安価なうちに発見されたインフラストラクチャのバグです。NVIDIAも同様に大規模でこれを行っています。GR00T N1.7カードには、SimplerEnvのBridgeとFractal、DROID、およびLIBERO用に、4つの後処理済みバリアントがリストされています。

パス C: 意図的に自分で記録する

30から50という数は、76,000という数字の隣では少なく聞こえますが、あなた自身の腕、カメラ、テーブルを使ったデータはそれだけであることを思い出してください。LeRobotのデフォルト設定では、50エピソードは実時間で100分です。参照:、、および.

AY-Robotsの記録チュートリアルページで、テレイグゼキューションセッションからLeRobotデータセットをキャプチャする手順を示しています。
「/learn/record-your-first-dataset」での記録ウォークスルー:公開データでは代替できないステップ。

公開データから実用的なポリシーを得る2つの方法

All of this runs on your own machine plus a rented GPU. Knowing the manual path matters because when something breaks you will know which layer broke.

  1. 1
    Install LeRobot with the extras the scripts need

    The record and train entry points each declare their own extra.

    bash
    pip install 'lerobot[core_scripts]'   # lerobot-record
    pip install 'lerobot[training]'      # lerobot-train
    pip install gsutil tensorflow tensorflow-datasets
  2. 2
    Get a small, known-good slice

    100 DROID episodes, 2 GB.

    bash
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  3. 3
    Convert to LeRobot form

    Writes the unified 8-D state and 7-D action, annotating robot type and control frequency.

    bash
    python openx_rlds.py \
        --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \
        --local-dir ~/lerobot_droid100 \
        --repo-id you/droid100_lerobot \
        --use-videos
  4. 4
    Check the version against your trainer

    The converter README documents v3.0 output; the published IPEC-COMMUNITY datasets report v2.0. GR00T wants v2.0 or v2.1 and crashes on v3.0; Pi0.5, SmolVLA and ACT want v3.0. Mind the gap: the only conversion script on LeRobot main goes 2.1 to 3.0.

    bash
    python src/lerobot/scripts/convert_dataset_v21_to_v30.py \
        --repo-id=you/droid100_lerobot
  5. 5
    Record your own episodes

    Defaults: 30 fps, 60 s per episode, 60 s reset, 50 episodes. The teleoperator type is so100_leader.

    bash
    lerobot-record \
      --robot.type=so100_follower \
      --robot.port=/dev/ttyACM0 \
      --robot.cameras="{front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
      --teleop.type=so100_leader \
      --teleop.port=/dev/ttyACM1 \
      --dataset.repo_id=you/so100_pick_block \
      --dataset.num_episodes=50 \
      --dataset.single_task="Pick up the red block and put it in the bowl"
  6. 6
    Fine-tune on your data only

    Weights from public data, actions from your own. Do not mix the datasets.

    bash
    lerobot-train \
      --policy.path=lerobot/smolvla_base \
      --dataset.repo_id=you/so100_pick_block \
      --policy.device=cuda \
      --batch_size=4 \
      --steps=20000
Where the time actually goes

Not in training; the GPU job is hours. The conversion, the version mismatch and the moment you find your dataset is v2.0 and your trainer wants v3.0 are days. Read dataset rejected as v3 first.

The AY-Robots desktop client download page, the client that records LeRobot-format datasets from a teleoperation session
The desktop client at /download writes LeRobot datasets directly from a teleop session, sidestepping RLDS conversion.

各パスのコスト

パスストレージ人的時間GPUコストアームを動かす可能性
変換済みDROID単体392 GB変換日数4 to 12 USD非常に低い、誤ったアクション空間
エピソードとマージされたDROID両方blocked by validate_all_metadatan/aなし、実行されない
SmolVLA、30〜50のエピソード数GB100 min recording1 to 3 USD高い
GR00T N1.7、50のエピソード数GB100 min recording4 to 12 USD高い
ACTをゼロから、50のエピソード数GB100 min recording1 to 3 USD高い、20 ms推論
テストフィクスチャとしてのDROIDサンプル2 GB午後1回の短い実行高い、検証として

非対称性が重要です。最も多くのデータを借用するパスは最もコストがかかり、アームを動かす可能性が最も低いです。2時間未満の自身のテレイグジスタンスは、他人のFrankaの1テラバイトに勝ります。まだアームがありませんか?/liveでは、サインアップなしで物理的なSO-100をストリーミングしています。その後、最初のポリシーをトレーニングし、特定のガイドについてはSO-100でのSmolVLAを参照してください。

妥当なデフォルト計画

2 GBのDROIDサンプルをダウンロードし、それを使ってパイプラインを検証してください。残りの1.7 TBは無視してください。固定カメラで1つのタスクの50エピソードを記録します。まずSmolVLAをファインチューニングしてください。24 GBカードで最低30エピソードから反復するのに最も安価だからです。その後、同じデータでGR00T N1.7を試してください。ベンチマークではなく、自身のタスクで比較してください。

あなたのアームにすでに一致するデータセットを記録する

デスクトップクライアントは、テレイグジスタンスセッションから直接LeRobot形式のデータセットを書き込みます。適切なアーム、適切なフレームレート、適切なアクション空間です。RLDS変換もリマッピングも不要です。

デスクトップクライアントを入手
DROIDでポリシーをトレーニングし、SO-100で実行できますか?

直接はできません。LeRobotビルドでは、DROIDのアクションは15 fpsのFranka Pandaに対する7-Dエンドエフェクタコマンドです。生のRLDSでは、6つの関節速度とグリッパー位置です。SO-100は6つの絶対関節位置を受け取ります。逆運動学レイヤーが必要となり、その場合でも5-DoFの手首では任意の6-DoFポーズを再現することはできません。

DROIDまたはBridgeのエピソードを自分のSO-100エピソードと混ぜることはできますか?

いいえ。validate_all_metadataは、同一のfps、robot_type、およびfeature schemaを要求し、最初の不一致でValueErrorを発生させます。これら3つはすべて異なります。15または5 fps対30、frankaまたはwidowx対あなたのアーム、アクション形状の7対6です。チェックを通過させるためにメタデータを書き換えても、セマンティクスは修正されません。

では、Open X-Embodimentは低コストアームには役に立たないのでしょうか?

いいえ、しかしその価値はエピソードではなく、事前学習済み重みを通じてあなたに届きます。OXE、Bridge v2、DROIDを含むオープンソースデータセットは、pi0の事前学習混合の9.1パーセントを占めており、NVIDIAはBridge、Fractal、DROID、LIBEROで事後学習されたGR00T N1.7のバリアントを出荷しています。できないのは、これらのエピソードを自分の記録に追加することです。

どのポリシーが公開されているクロスエンボディメントデータから最も恩恵を受けますか?

Pi0.5とGR00Tモデルは最も多くのクロスエンボディメント事前学習を行っていますが、SmolVLAは低コストアームで最も良い振る舞いをすることがよくあります。その事前学習セットは481のコミュニティデータセット、22.9Kエピソード、10.6Mフレームで構成され、実際のSO-100およびSO-101アームで評価されています。ACTはその逆で、ベースモデルがなく、アクションステップあたり20 msです。

実際に自分のエピソードはいくつ必要ですか?

SmolVLAの場合は30、GR00T N1.7、GR00T N1.5、Pi0.5、ACTの場合は50です。LeRobotのデフォルト設定である1エピソードあたり60秒、リセット60秒の場合、50エピソードは実時間で100分です。借用したクロスエンボディメントデータはこれらの数値を下げません。

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started