データ収集

LinkerBot O6 の完全な記録ワークフロー。 リーダーとフォロワーの遠隔操作、LeRobot データセット形式、エピソード品質チェックリスト、および広範なデータ収集パイプラインへのリンク。

O6 の録音ワークフロー

ハードウェアの準備が完了してから最初のデータセット エピソードまでの完全なプロセス。 手順を順番に実行してください。

1

ハードウェアとCANインターフェースを検証する

O6 が取り付けられ、電源が入っており、CAN インターフェイスが起動していることを確認します。 走る candump can0 続行する前に、モーターのハートビート パケットが表示されることを確認します。

2

タスクとカメラのレイアウトを構成する

タスクの説明を定義し、カメラを正しい角度に設定し、タスク オブジェクトをワークスペースに配置します。 ポリシーを一般化するには、エピソード全体で一貫したシーン設定が重要です。

3

録音セッションを開始する

LeRobot 制御スクリプトを次のように起動します。 record モード。 これにより、システムがエピソードを記録できるようになります。 セッションはキャプチャする前に開始トリガーを待ちます。

python -m lerobot.scripts.control_robot \
  --robot.type=linkerbot_o6 \
  --control.type=record \
  --control.fps=30 \
  --control.repo_id=your-username/o6-task-name \
  --control.num_episodes=50 \
  --control.single_task="Pick up the blue block"
4

遠隔操作してエピソードを記録する

O6 を遠隔操作するには、リーダー アーム (または簡単なテストの場合はキーボード) を使用します。 スタート/ストップ キーを押して各エピソードをまとめます。 一貫性を保つためにエピソード間のシーンをリセットします。

5

エピソードのレビューとフィルタリング

LeRobot リプレイ ツールを使用して、各エピソードを視覚的に確認します。 以下の品質チェックリストに合格しないものは廃棄してください。 量より質: 30 の優れたエピソードは 100 の平凡なエピソードに勝ります。

python -m lerobot.scripts.control_robot \
  --robot.type=linkerbot_o6 \
  --control.type=replay \
  --control.repo_id=your-username/o6-task-name \
  --control.episode=0
6

HuggingFace Hub にアップロードする

フィルタリングされたデータセットを HuggingFace Hub にプッシュして、共有とトレーニングを行います。 データセットは、LeRobot でのポリシー トレーニングにすぐに利用できます。

huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
  --repo_id=your-username/o6-task-name

O6 用 LeRobot データセット形式

記録された各エピソードは、標準の LeRobot HuggingFace データセット形式で保存されます。 この形式は、ACT、Diffusion Policy、および LeRobot がサポートする他のすべてのトレーニング アルゴリズムと直接互換性があります。

エピソードの構成

dataset/
  data/
    episode_000000/
      observation.state.npy     # [T, 12] — 6 joint positions + 6 velocities
      action.npy                # [T, 6]  — 6 target joint positions
      observation.images.wrist_cam/
        frame_000000.png        # 640x480 @ 30 fps
        ...
      observation.images.overhead_cam/
        frame_000000.png
        ...
      episode.json              # {task, success, duration_s, num_frames}
  meta_data/
    info.json                   # dataset schema version, robot type, fps
    stats.json                  # per-channel mean, std, min, max

状態とアクションの次元

# observation.state: [T, 12]
# Columns: [j0_pos, j1_pos, j2_pos, j3_pos, j4_pos, j5_pos,
#            j0_vel, j1_vel, j2_vel, j3_vel, j4_vel, j5_vel]
# Units: radians and radians/second

# action: [T, 6]
# Columns: [j0_target, j1_target, j2_target, j3_target, j4_target, j5_target]
# Units: radians

O6 データセットからポリシーをトレーニングする

python -m lerobot.scripts.train \
  --dataset_repo_id=your-username/o6-task-name \
  --policy.type=act \
  --output_dir=./checkpoints/o6-act-v1 \
  --training.num_epochs=100

エピソードの品質チェックリスト

トレーニング データセットに含める前に、このチェックリストをすべてのエピソードに適用します。 データが不良であることは、データが少ないことよりも悪いことです。

  • タスクは正常に完了しました — アームは人間の介入なしに目標状態に到達しました。 部分的な完了はありません。
  • 動きはスムーズで意図的です — ぎくしゃくした修正、オーバーシュート、または突然の方向変更はありません。 スムーズなデモンストレーションは、よりスムーズな政策を訓練します。
  • すべてのカメラ フレームが存在します — フレームのドロップやタスク関連のワークスペース領域の遮蔽はありません。
  • 結合状態は連続的です — 状態ログに 40 ミリ秒を超えるタイムステップ ギャップがない。
  • エピソードの長さは一貫している — 3 秒より短いエピソード、または 30 秒より長いエピソードは通常、外れ値です。 含める前に確認してください。
  • シーンも同様にリセットされました — タスク オブジェクトは、エピソードが始まる前に同じ開始位置に戻されました。
  • 記録中にCANエラーが発生しない - チェック candump can0 セッション中のエラー フレームのログ。
データ収集パイプラインの概要 →

トレーニングの準備はできましたか?

セットアップからトレーニングまでの完全なワークフローについては、LinkerBot O6 学習パスに従ってください。