データ収集

VLAI L1 は、大規模な遠隔操作データ収集用に構築されています。 ワンクリックの録画パイプライン、デュアルアーム同期、内蔵 VR テレオペにより、ロボットの配信からトレーニングの準備ができたデータセットまでの最速パスが実現します。

録音ワークフロー

双方向VR遠隔操作録画

1

すべてのシステムを接続して検証する

rc connect --device l1 --host 192.168.1.45
rc status   # check: arms, base, cameras, battery all green
2

L1を録音位置に移動

ブラウザ パネルの WASD を使用して、L1 をタスク ワークスペースに移動します。 タスクのリフト高さを設定します (例: テーブルトップ操作の場合は 130 cm)。 駐車して車輪をロックしてください。

rc teleop --device l1   # open browser panel
# Drive to position, then lock:
python -c "from roboticscenter import L1; r=L1('192.168.1.45'); r.connect(); r.base.lock_wheels(); r.disconnect()"
3

タスクシーンとカメラをセットアップする

タスク オブジェクトを一貫した開始位置に配置します。 ブラウザ パネルでカメラ ビューを確認します。リスト カメラ (Developer Max) と外部カメラの両方がタスク ワークスペースをカバーする必要があります。

4

CLI 経由でセッションの記録を開始する

rc record \
  --device l1 \
  --task "Pick up the bottle and pour into the glass" \
  --num_episodes 50 \
  --output ~/datasets/l1-pour-v1 \
  --teleop_mode vr   # or: browser, leader_arms
# Press ENTER in VR to start each episode, ENTER again to end
5

エピソードをレビューする

rc replay \
  --dataset ~/datasets/l1-pour-v1 \
  --episode 0

ビューアには、すべてのカメラ ストリームと同期されたジョイント状態の時系列が表示されます。 プッシュする前に、悪いエピソードを削除してください。

6

HuggingFace ハブにプッシュする

huggingface-cli login
rc push_dataset \
  --dataset ~/datasets/l1-pour-v1 \
  --repo_id your-username/l1-pour-v1
データセットの形式

L1 データセット スキーマ

L1 記録パイプラインは、両アーム、モバイル ベース、すべてのカメラ、およびオプションの言語注釈を含むマルチモーダル データセットを生成します。

各エピソードのフィールド Parquet ファイル
観察.left_arm_state float32[8] 左腕のジョイント位置 (ラジアン単位) (8 DOF)
観察.right_arm_state float32[8] 右腕のジョイント位置 (ラジアン単位) (8 DOF)
観察.base_state float32[3] モバイルベース x、y、メートルおよびラジアン単位の進行方向
観測値.リフト高さ float32 胴体リフト高さ (メートル)
観察画像* ビデオパス リストカメラ (左、右)、ヘッドカメラ、外部ワークスペースカメラ
アクション.左腕 float32[8] VR テロップから左腕の関節位置をターゲットにする
アクション.right_arm float32[8] VR テロップから右腕関節位置をターゲットにする
言語説明 VLA 条件付けのための自然言語タスクの説明
タイムスタンプ float64 Unix タイムスタンプ (秒単位)
次へ。完了 ブール 各エピソードの最後のフレームでは True
品質保証

品質チェックリスト

L1 の VR テレオペは、レイテンシや両手調整に関する固有のデータ品質の問題を引き起こす可能性があります。 ハブにプッシュする前に、これを実行してください。

  • 1
    録画中の VR 遅延は 50 ミリ秒未満でした 録画中にブラウザ パネルのレイテンシー モニターを確認してください。 50 ミリ秒を超えると、オペレーターの手の動きがロボットの動作よりも遅れ、データセットに因果的な不一致が生じます。 必要に応じて、低遅延の WiFi チャネルで再録音します。
  • 2
    両腕は意図したとおりに動きました(片腕のエピソードはありません) 両手作業の場合は、両方の腕が大きく動いていることを確認します。 observation.left_arm_state そして observation.right_arm_state。 片腕利きのエピソードは、オペレータが片手を好むことを示している可能性があります。
  • 3
    アーム操作中はモバイルベースが静止していました モバイル操作タスクを記録している場合を除き、 observation.base_state 各エピソード内でほぼ一定である必要があります。 操作中のベースの動きにより、ワークスペースがカメラに対して移動します。
  • 4
    エピソード全体に存在するすべてのカメラ ストリーム L1 の WiFi 帯域幅は、負荷がかかるとフレームをドロップする可能性があります。 走る rc validate_dataset --dataset ~/datasets/l1-pour-v1 すべてのカメラ ストリームにわたって欠落フレームがないか確認します。
  • 5
    言語指導はデモンストレーションされた内容と一致しています 言語指示は録音開始前に設定されます。 オペレーターが別のアプローチを即興で行った場合 (例: 2 本の腕の代わりに 1 本の腕を使用した)、指示を更新するか、エピソードを削除します。
次のステップ

データセットから VLA をトレーニングする

データセットが HuggingFace Hub に配置されたら、L1 アクション スペースを使用して VLA を微調整します。

L1 データの OpenVLA を微調整する

pip install roboticscenter[vla]

python -m roboticscenter.scripts.finetune_vla \
  --model openvla/openvla-7b \
  --dataset your-username/l1-pour-v1 \
  --action_space l1_bimanual \   # registers the 16-DOF bimanual action head
  --epochs 50 \
  --output_dir outputs/openvla-l1-pour

微調整された VLA をデバイス上に展開する (Developer Pro/Max)

rc デプロイ vla \ --model 出力/openvla-l1-pour \ --quantize int4 \ --デバイス l1 \ --ホスト 192.168.1.45 # ポリシーを実行します。 rc 実行ポリシー \ --タスク「ボトルを持ち上げてグラスに注ぐ」\ --max_steps 100

データセットの準備はできていますか? トレーニングを開始します。

HuggingFace Hub にプッシュし、両手操作データに基づいて VLA モデルを微調整します。