データ収集
LinkerBot O6 の完全な記録ワークフロー。 リーダーとフォロワーの遠隔操作、LeRobot データセット形式、エピソード品質チェックリスト、および広範なデータ収集パイプラインへのリンク。
O6 の録音ワークフロー
ハードウェアの準備が完了してから最初のデータセット エピソードまでの完全なプロセス。 手順を順番に実行してください。
ハードウェアとCANインターフェースを検証する
O6 が取り付けられ、電源が入っており、CAN インターフェイスが起動していることを確認します。 走る candump can0 続行する前に、モーターのハートビート パケットが表示されることを確認します。
タスクとカメラのレイアウトを構成する
タスクの説明を定義し、カメラを正しい角度に設定し、タスク オブジェクトをワークスペースに配置します。 ポリシーを一般化するには、エピソード全体で一貫したシーン設定が重要です。
録音セッションを開始する
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"
遠隔操作してエピソードを記録する
O6 を遠隔操作するには、リーダー アーム (または簡単なテストの場合はキーボード) を使用します。 スタート/ストップ キーを押して各エピソードをまとめます。 一貫性を保つためにエピソード間のシーンをリセットします。
エピソードのレビューとフィルタリング
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
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セッション中のエラー フレームのログ。