標準フォーマットが重要な理由
ロボット学習はこれまで、ラボごとに異なるデータ形式を使用してきたため、データセットの共有、異なるロボットからのデータの結合、システム間での事前トレーニングされたポリシーの使用が不可能になってきました。 LeRobot データセット形式は、サポートされているすべてのハードウェアで機能する単一のスキーマを定義することでこの問題を解決します。 SO-100 に記録されたデータセットは、アクション スペースの寸法が一致している限り、変換せずに OpenArm のポリシーをトレーニングするために使用できます。
記録する前に形式を理解しておけば、トレーニング中にデータの構造的な問題が発見されなくなります。 また、デバッグも非常に簡単になります。トレーニングが失敗した場合、最初に調べるのはデータセットです。
データセット構造: 寄木細工 + MP4
各 LeRobot データセットは、次の構造のディレクトリに存在します。
Parquet (数値時系列用) と MP4 (ビデオ用) の分割は意図的に行われています。 Parquet はジョイントの状態とアクションを効率的に圧縮し、エピソード インデックスによる高速ランダム アクセスをサポートします。 MP4 は、イメージ シーケンス用に設計されたビデオ コーデックを使用し、生のイメージをテンソルとして保存する場合に比べて 10 ~ 30 倍小さいファイルを生成します。
各エピソードの主要なフィールド
| 分野 | 形 | 説明 |
|---|---|---|
| 観察・状態 | [た、だ] | 各タイムステップでのジョイントの位置 (およびオプションで速度)。 D はジョイントの数です (例: SO-100 の場合は 7: 6 ジョイント + 1 グリッパー)。 |
| アクション | [た、だ] | 各タイムステップで指令されるターゲット関節位置。 Observation.state と同じ次元。 |
| タイムスタンプ | [た] | デフォルトでは 50Hz でのエピソードの開始からの時間 (ステップあたり 0.02 秒)。 |
| エピソードインデックス | スカラー | データセット内のこのエピソードの整数インデックス。 タイムステップをエピソードにグループ化するためにデータローダーによって使用されます。 |
| フレームインデックス | [た] | エピソード内のフレーム番号 (0 ~ T-1)。 対応する MP4 のフレーム番号と一致します。 |
| 次へ。完了 | [た] | ブール フラグ — エピソードの最後のタイムステップで True。 トレーニング中にエピソードの境界を知らせるために使用されます。 |
| タスクインデックス | スカラー | task.jsonl にインデックスを付けます。 異なるエピソードが異なる指示に対応するマルチタスク データセットを有効にします。 |
observation.images.cam_high 生のピクセル データではなく、パス参照 (フレーム インデックス + エピソード インデックス) として。 LeRobot データローダーは、デコードと同期を透過的に処理します。
既存のデータセットをロードして視覚化する
をロードします lerobot-raw/aloha_sim_insertion_scripted HuggingFace Hub からのデータセットを取得し、3 つのエピソードを視覚化します。 このデータセットには、ペグを挿入する両手ロボットのスクリプトによるデモンストレーションが含まれています。これは、適切に構造化されたデータセットがどのようなものかを示す明確な例です。
ビジュアライザーは、同期された関節状態プロットとともに各エピソードのビデオ再生を含む HTML ページを生成します。 探す:
- スムーズな関節軌道 — 鋭いスパイクは、録音アーティファクトまたはアームクラッシュを示します
- 一貫したエピソードの長さ — エピソードの長さが大幅に異なる場合 (例: 50 フレームと 400 フレーム)、一部のデモンストレーションが部分的なモーションまたは中断されたモーションをキャプチャしたことを示すことがよくあります。
- グリッパーの状態変化 — 最後のジョイント次元は、操作タスクの明確なバイナリ遷移 (開→閉→開) を示す必要があります。
SVRC データセット コレクションを探索する
SVRC データセット ライブラリには、LeRobot 形式で厳選されたロボット学習データセットが含まれています。 自分のタスクやハードウェアを記録する前に、それらを参照して、さまざまなタスクやハードウェアがどのようなものかを理解してください。 データセットを参照する →
ユニット 2 が完了したら...
~の 3 つのエピソードを視覚化することに成功しました。 lerobot-raw/aloha_sim_insertion_scripted HTML 出力がブラウザで開きます。 Python でロードされた Parquet ファイル内の観察.state、action、および timestamp フィールドを識別できます。 Parquet と MP4 に保存されているものの違いが理解できました。 ユニット 3 で独自のデータセットを記録する準備ができました。