ロボットを接続するかシミュレーションを開く

実際のロボットを使用している場合は、記録コマンドを実行する前に、今すぐ接続してシステムによって認識されていることを確認してください。 シミュレーションで作業している場合は、record コマンドで仮想ロボットを駆動できます。 gym_pusht または gym_aloha 遠隔操作ソースとしてキーボードまたはスクリプト化されたポリシーを使用する環境。

# Real robot — verify connection (replace so100 with your robot type) python -m lerobot.scripts.control_robot \ --robot-path lerobot/configs/robot/so100.yaml \ --control-mode 遠隔操作 \ --teleop-time-s 5 # Simulation — no hardware needed python -m lerobot.scripts.control_robot \ --robot-path lerobot/configs/robot/so100_sim.yaml \ --control-mode 遠隔操作 \ --teleop-time-s 5

ジョイントの状態がターミナル出力にストリーミングされ、(実際のロボットの場合) アームが入力に応答しているのが確認できるはずです。 そうでない場合は、続行する前に接続の問題を解決してください。切断されたロボットで記録すると、警告なしに破損したデータが生成されます。

記録コマンド

コアの記録コマンド。 フラグを設定に合わせて調整します。

python -m lerobot.scripts.control_robot \ --robot-path lerobot/configs/robot/so100.yaml \ --control-mode レコード \ --dataset.repo-id $HF_USER/pick-place-v1 \ --dataset.num-エピソード 50 \ --dataset.single-task "赤い立方体を拾ってボウルに置きます" \ --dataset.fps 30 \ --dataset.push-to-hub 1 \ --ディスプレイカメラ 1 # $HF_USER is your HuggingFace username (set via: export HF_USER=your_username) # --dataset.push-to-hub 1 uploads automatically after each episode # --display-cameras 1 shows live camera feeds during recording
シミュレーション記録: 交換する --robot-path SIM設定で。 追加 --env-name gym_pusht/PushT-v0 そして --policy-path lerobot/act_pusht_keypoints ベースライン データセットのスクリプト化された (人間によるものではない) デモンストレーションを記録します。

デモンストレーションは何回ですか?

適切な番号は設定によって異なります。

  • シミュレーション: ベースライン ポリシーとしては、スクリプト化されたエピソードが 50 あれば十分です。 環境は決定論的であるため、分散は低く、ACT が収束するには 50 で十分です。
  • 本物のロボット、簡単なタスク: 50 ~ 80 人の人間によるデモンストレーション。 デモに一貫性がある場合、オブジェクトの位置を固定したピック アンド プレイスは、この範囲の下限で適切にトレーニングできます。
  • 実際のロボット、可変タスク: 100~200人のデモ。 オブジェクトの位置が異なる場合、またはタスクに複数のサブステップが必要な場合は、より多くの範囲をカバーする必要があります。

このパスのターゲットは、 最低 50 のデモンストレーション。 質は量に勝ります — 50 件の一貫したデモンストレーションは、150 件のずさんなデモンストレーションよりも常に優れています。

適切なデモンストレーションの実践

一貫したワークスペースのセットアップ

各エピソードの前にオブジェクトを同じ位置にリセットします。 テーブルにテープを貼って開始位置をマークします。 ポリシーはデモ内のポジションの分布から学習します。すべてが同じ場所にある場合、ポリシーはその場所に合わせて調整されます。

完全なエピソード

すべてのエピソードは同じホームポーズから始まり、タスクが完全に完了した状態で終了する必要があります。 タスクの途中で記録を停止しないでください。 グリッパーが把握の途中にある不完全なエピソードは、モデルに壊れた動作を教えます。

意図的でスムーズな動き

最高速度の 40 ~ 60% で移動します。 滑らかになるまで十分に遅く、ぎらぎらしないほど十分に速くなります。 モデルはデモンストレーションからタイミングを学習します。不安定な速度は不安定なポリシーを生み出します。

部分的なデモまたは中止されたデモ

オブジェクトを落とした場合、ワークスペースと衝突した場合、またはエラーが発生した場合は、 Ctrl+C エピソードを中止します。 エピソードは破棄されます。 中止されたエピソードをプッシュしないでください。データセットが汚染されてしまいます。

一貫性のない戦略

戦略を混合しないでください。一部のデモでは左から把握し、他のデモでは右から把握しないでください。 アプローチを 1 つ選択し、それをすべてのエピソードで使用します。 ACT の CVAE は単一の「スタイル」を学習します。一貫性がないため平均化が強制され、どちらの戦略も確実に生成されません。

HuggingFace ハブにプッシュする

設定しなかった場合 --dataset.push-to-hub 1 録音中、セッション後に手動で押します。

# Push your completed dataset to HuggingFace Hub python -m lerobot.scripts.push_dataset_to_hub \ --dataset-dir ~/lerobot-datasets/pick-place-v1 \ --repo-id $HF_USER/pick-place-v1 # Verify it is live at: # https://huggingface.co/datasets/$HF_USER/pick-place-v1
データセットの可視性: 新しいデータセットはデフォルトで HuggingFace Hub で公開されます。 ワークスペースまたはタスクが機密性の高いものである場合は、 --private 1 プッシュコマンドに。 公開データセットはロボット工学コミュニティに貢献しており、 SVRC データセット ライブラリ.

ユニット 3 が完了したら...

HuggingFace Hub の LeRobot データセットには、中断されていない完全なデモンストレーションが少なくとも 50 件あります。 データセットをロードするには、 LeRobotDataset("your-username/pick-place-v1") 予想されるエピソード数を確認します。 を使用して自分のエピソードを少なくとも 5 つ視覚化しました。 lerobot.scripts.visualize_dataset ジョイントの軌道が滑らかで、グリッパーの状態変化がきれいであることを確認しました。 ユニット 4 でトレーニングする準備ができました。