データ収集
ヒューマノイドのデータ収集は、アームのみのワークフローとは根本的に異なります。 K1 は 22 以上の自由度を持ち、遠隔操作中にバランスを維持する必要があり、同期されたマルチモーダル キャプチャが必要です。 このページでは、課題、手法、データセット形式、安全プロトコルについて説明します。
ヒューマノイドのデータ収集の課題
フルサイズのヒューマノイドで高品質のデモンストレーションを収集するには、デスクトップ アームには存在しない課題に対処する必要があります。
遠隔操作中のバランス
K1 は、オペレーターが腕を制御している間、全身のバランスを維持する必要があります。 腕の動きにより重心が移動するため、移動コントローラーが継続的に補正する必要があります。 アームコマンドを急速に使用すると、ロボットが不安定になる可能性があります。
高次元状態
全身の関節状態には、22 DOF と IMU、頭のポーズ、およびオプションの手の状態が含まれており、タイムステップごとに 30 以上の次元が含まれます。 データセット ファイルは、arm のみのデータセットよりも大幅に大きくなります。 ストレージ計画は不可欠です。
マルチカメラ同期
ヒューマノイドのタスクには通常、自己中心性 (頭部装着型) カメラと外中心性 (外部) カメラが必要です。 複数のビデオ ストリームを 50 Hz 以上のジョイント テレメトリと同期するには、慎重なパイプライン設計が必要です。
オペレータの疲労
VR ベースの全身遠隔操作は肉体的に負担がかかります。 オペレーターあたり 30 分を超えるセッションは、デモンストレーションの品質を大幅に低下させます。 長期にわたる回収キャンペーンではオペレーターのローテーションを計画します。
ヒューマノイドの遠隔操作方法
上半身の遠隔操作では 2 つの主な方法がサポートされています。 移動は常にゲームパッドからの速度コマンドによって、または自律的に制御されます。
VR全身遠隔操作 推奨
Meta Quest 3 または同様の VR ヘッドセットを使用して、オペレーターの頭と手のポーズを追跡します。 K1 の頭と腕のジョイントは、オペレーターの動きをリアルタイムで反映します。 最も自然で表現力豊かなデモンストレーションを提供します。
設定: Quest 3 + SteamVR、k1_vr_teleop ROS2 ノード、オペレーターはハンド トラッキングのために手袋を着用します。
レイテンシ: ヘッドは最大 20 ミリ秒、アームはエンドツーエンドで最大 40 ミリ秒。
以下に最適: マニピュレーションタスク、ピックアンドプレイス、全身のロコマニピュレーション。
リーダー・フォロワーの上半身 高度な
2 番目の人間スケールの外骨格またはリーダー アーム システムは、フォロワー K1 の上半身を反映しています。 ジョイント角度は、リーダーからフォロワーに直接マッピングされます。 VR ハードウェアは必要ありません。
設定: 互換性のあるリーダー アーム システム (OpenArm 両手キットやカスタム外骨格など) が必要です。 パートナー構成については SVRC にお問い合わせください。
以下に最適: 追跡精度が重要な場合の正確な両手操作。
遠隔操作中の移動
上半身の遠隔操作は通常、ゲームパッドで制御される移動と組み合わせられます。 オペレーターはワイヤレス ゲームパッドを使用して歩行速度を指示し、VR システムは腕と頭を制御します。
# Launch combined teleop: VR for upper body + gamepad for locomotion
ros2 launch k1_teleop k1_combined_teleop.launch.py \
vr_device:=quest3 \
gamepad:=xbox \
robot_ip:=192.168.10.102
全身データセット形式 (30+ DoF)
各エピソードは、同期された関節状態、カメラ フレーム、メタデータを記録します。 この形式は LeRobot および HuggingFace データセットと互換性があります。
エピソードの構成
episode_000001/
joint_states.npy # [T, 44] — positions, velocities, torques for 22 joints
imu.npy # [T, 6] — accel (3) + gyro (3) from torso IMU
head_pose.npy # [T, 2] — yaw and pitch in radians
head_cam.mp4 # 1280x720 @ 30 fps, head-mounted egocentric
left_cam.mp4 # 1280x720 @ 30 fps, left wrist
right_cam.mp4 # 1280x720 @ 30 fps, right wrist
external_cam.mp4 # 1920x1080 @ 30 fps, fixed external view
timestamps.npy # [T] unix timestamps for joint_states
metadata.json # task name, operator, duration, success label
ジョイント状態スキーマ (22 ジョイント × それぞれ 2 つの値)
# joint_states.npy shape: [timesteps, 44]
# Columns: [q0_pos, q0_vel, q1_pos, q1_vel, ..., q21_pos, q21_vel]
# Joint index mapping:
# 0-5: Left leg (hip_pitch, hip_roll, hip_yaw, knee, ankle_pitch, ankle_roll)
# 6-11: Right leg (same order)
# 12: Waist (yaw)
# 13: Head yaw
# 14: Head pitch
# 15-21: Left arm (shoulder_pitch, shoulder_roll, shoulder_yaw,
# elbow_pitch, wrist_pitch, wrist_roll, wrist_yaw)
# 22-28: Right arm (same order)
# Note: total 29 joints in extended K1 config; base K1 has 22
k1_agent.py を使用したセッションの記録
# Start the platform agent (streams telemetry to RoboticsCenter)
python k1_agent.py \
--robot-ip 192.168.10.102 \
--platform-url https://fearless-backend-533466225971.us-central1.run.app \
--record \
--task "pick up red block" \
--cameras head_cam,left_wrist,right_wrist,external
# Episodes auto-numbered and saved to ./recordings/
LeRobot形式に変換する
python convert_k1_to_lerobot.py \
--input-dir ./recordings/ \
--output-dir ./dataset/ \
--repo-id your-username/k1-pick-place
データ収集中の安全プロトコル
- ✓スポッターは常に必要です — 1 人の専任担当者がロボットを監視し、非常停止を保持します。 遠隔操作者は安全性を同時に監視することはできません。
- ✓3 m × 3 m の透明な周囲 — ライブセッション中は、運用エリアに傍観者、ケーブル、機器が存在しません。
- ✓エピソードの長さ制限: 60 秒 — エピソードは短くしてください。 エピソードが短いほど、品質のフィルタリングが容易になり、長時間の操作によるリスクが軽減されます。
- ✓30分間のオペレーターローテーション — VR セッションで遠隔オペレーターを 30 分ごとに交代させます。 疲労によりデモンストレーションの品質が低下し、エラー率が増加します。
- ✓不安定な場合は直ちに中止して DAMP に入ります — K1 が予期せぬ発振やドリフトを示した場合は、非常停止を押して DAMP から再起動してください。 手動で安定させようとしないでください。
- ✓すべてのインシデントを記録する — 転倒、転倒寸前、または中止されたエピソードを記録します。 このデータは、データセットの品質フィルタリングや安全手順の改善に役立ちます。
エピソードの品質チェックリスト
トレーニング データセットに追加する前に、各エピソードを確認してください。 質の悪いデモは政策の価値を低下させます。
- ✓タスクはエンドツーエンドで正常に完了しました (トレーニング データに部分的な完了はありません)
- ✓ロボットは全体を通して安定したバランスを維持し、つまずき、振動、代償的なジャークはありませんでした
- ✓すべてのカメラ ストリームには、セグメントが欠落していない完全なフレームが含まれています
- ✓ジョイント状態のタイムスタンプは連続的です (40 Hz 記録で 25 ミリ秒を超えるギャップはありません)
- ✓デモンストレーションはスムーズかつ慎重に行われ、急かされたり、過度に修正されたりすることはありません
- ✓オブジェクトとタスク シーンは、全体を通じて少なくとも 2 つのカメラ ストリームで表示されます。