データの量よりも質が重要な理由

ロボット学習におけるよくある誤解は、より多くのデモンストレーションを行うと、より良いポリシーが自動的に生成されるということです。 これは誤りです。 ニューラルネットワークは模倣することを学習します 分布 データセット内の動作の変化。 デモンストレーションに一貫性がない場合、つまり経路が異なる、速度が異なる、物体の位置が異なる場合、ネットワークは実際に成功した戦略に対応しない不鮮明な平均を学習します。

アームが同じクリーンなパスをたどり、同じ位置でオブジェクトを掴み、同じホームポジションに戻る 50 回のデモン​​ストレーションでは、分散が大きい 500 回のデモン​​ストレーションよりも適切に一般化するポリシーが生成されます。 最初の収集セッションは、その一貫性を確立するチャンスです。 ゆっくりしてください。 間違っていると感じたデモを削除して再録音します。

パイプライン設計の基礎をより深く理解するには、以下をお読みください。 データ収集パイプラインの概要 ロボティクスライブラリにあります。

LeRobot データセット形式

録音は次の場所に保存されます ルロボット形式 — Hugging Face の LeRobot ライブラリで使用される標準であり、Unit 5 で使用する ACT および Diffusion Policy トレーナーと互換性があります。

何が記録されるか

ジョイントの位置 (6 DOF + グリッパー)、ジョイントの速度、エンドエフェクターのポーズ、カメラ フレーム (RGB + オプションの深さ)、タイムスタンプ、およびタスクのメタデータ。

ファイル構造

エピソードごとに 1 つのフォルダー。 各エピソードには、 data.parquet 状態/アクション配列と video/ カメラストリームを含むサブフォルダー。

サンプリングレート

デフォルトでは50Hz。 遠隔操作の 1 秒ごとに 50 のタイムステップが生成されます。 10 秒間のピックアンドプレイスでは、500 個の (状態、アクション) ペアが生成されます。

互換性

LeRobot 形式は直接ロードされます lerobot.common.datasets。 TF-Agents パイプラインの RLDS にも変換できます。 参照データセットを参照する →

あなたのレコーディングセッション

タスク名とターゲットのエピソード数を指定して録画スクリプトを起動します。 スクリプトはエピソード管理、ファイル命名、品質フラグ付けを自動的に処理します。

# Activate your environment first ソース ~/openarm-env/bin/activate # Launch recording — saves to ~/openarm-datasets/pick-and-place/ python -m openarm.collect \ --タスクのピックアンドプレイス \ -- エピソード 50 \ --fps 50 \ --output ~/openarm-datasets/ピックアンドプレイス # Press ENTER to start a new episode, BACKSPACE to discard the last one # The script prints a summary after every 10 episodes

すべてのエピソードで同じ開始位置に同じオブジェクトを配置してワークスペースを設定します。 テーブル上のテープマークを使用して、オブジェクトの位置を一定に保ちます。 各エピソードが開始される前に、腕はまったく同じホーム ポーズに戻る必要があります。録画スクリプトはホーミング チェックによってこれを強制します。

実践的なヒント: それぞれのエピソードが 8 ~ 15 秒であることを目指します。 短すぎる (5 秒未満) と、政策にスムーズな軌道を計画する時間がありません。 長すぎる(20 秒を超える)と小さな変化がさらに複雑になります。 標準的なピックアンドプレイスの場合、エピソードあたり 10 秒が目標です。

データ品質チェックリスト

ユニット 5 に進む前に、データセットがこれら 5 つのチェックすべてに合格していることを確認してください。 いずれかの項目が失敗したエピソードを破棄して再録画します。

  • 1 掴みに失敗することはありません。 すべてのエピソードは、オブジェクトがターゲットの場所に正常に配置されることで終了します。 腕が物体を掴み損ねたり、物体を落としたりするエピソードは削除する必要があります。これらのエピソードはモデルに失敗を教えます。
  • 2 一貫したスタートポーズ。 腕はどのエピソードでもホームポジションから始まります。 データセット ビューアで、タイムステップ 0 での関節角度が 50 エピソードすべてにわたって相互に ±2° 以内であることを確認します。
  • 3 突然のジャンプやけいれんはありません。 3 ~ 5 つのランダムなエピソードを視覚化します。 python -m lerobot.visualize_dataset --dataset ~/openarm-datasets/pick-and-place。 アクション シーケンスは、スパイクではなく、滑らかな連続曲線である必要があります。
  • 4 カメラのフレームは鮮明で焦点が合っています。 ワークスペースのカメラが遮られておらず、直射光によって白飛びしていないか、各エピソードを通してオブジェクトがはっきりと見えることを確認してください。 ビデオがぼやけたり暗いと、ポリシーのパフォーマンスが低下します。
  • 5 50 の完全なエピソードが保存されています。 走る python -m lerobot.inspect ~/openarm-datasets/pick-and-place エピソードがちょうど 50 個あり、破損したファイルがないことを確認します。 スクリプトは、フレームが欠落しているエピソードやアクション シーケンスが切り詰められているエピソードにフラグを立てます。

比較のために参照データセットを参照する

SVRC データセット ライブラリには、品質リファレンスとして使用できるピック アンド プレイス記録のサンプルが含まれています。 データが大きく異なっているように見える場合は、トレーニング前に調査してください。 SVRC データセットを開く →

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

LeRobot 形式で 50 のクリーンなエピソードが保存されています。 ~/openarm-datasets/pick-and-place。 品質チェックリストの 5 つの項目すべてに合格します。 ランニング lerobot.inspect 50 のエピソードが表示されますが、エラーはありません。 このデータセットをユニット 5 のトレーニング パイプラインに渡す準備ができました。