数据收集
人形数据收集与纯手臂工作流程有着根本的不同。 K1 具有 22 个以上的自由度,在遥控操作期间必须保持平衡,并且需要同步多模式捕获。 本页介绍了挑战、方法、数据集格式和安全协议。
人形数据收集挑战
收集全尺寸人形机器人的高质量演示需要解决桌面手臂上不存在的挑战。
远程操作期间的平衡
当操作员控制手臂时,K1 必须保持全身平衡。 手臂运动会改变质心,需要运动控制器进行连续补偿。 快速的手臂命令可能会破坏机器人的稳定性。
高维态
全身关节状态包括 22 DOF 加上 IMU、头部姿势和可选的手部状态 - 每个时间步长超过 30 个维度。 数据集文件比仅适用于arm的数据集大得多。 存储规划至关重要。
多机同步
人形任务通常需要自我中心(头戴式)和外心(外部)相机。 通过 50 Hz 以上的联合遥测来同步多个视频流需要仔细的管道设计。
操作员疲劳
基于 VR 的全身远程操作对体力要求很高。 每个操作员的会话时间超过 30 分钟会显着降低演示质量。 计划在扩展收集活动中操作员轮换。
人形机器人的远程操作方法
上半身远程操作支持两种主要方法。 运动始终通过游戏手柄的速度命令或自主控制。
VR全身远程操作 受到推崇的
使用 Meta Quest 3 或类似的 VR 耳机来跟踪操作员的头部和手部姿势。 K1 的头部和手臂关节实时反映操作员的动作。 提供最自然、最具表现力的演示。
设置: Quest 3 + SteamVR,k1_vr_teleop ROS2 节点,操作员戴手套进行手部追踪。
延迟: 头部约 20 毫秒,手臂端到端约 40 毫秒。
最适合: 操纵任务、拾放、全身局部操纵。
领导者-跟随者上半身 先进的
第二个人体规模的外骨骼或引导臂系统反映了跟随者 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/
转换为乐机器人格式
python convert_k1_to_lerobot.py \
--input-dir ./recordings/ \
--output-dir ./dataset/ \
--repo-id your-username/k1-pick-place
数据收集期间的安全协议
- ✓任何时候都需要观察员 — 一名专人监视机器人并按住急停按钮。 远程操作员无法同时监控安全。
- ✓3 m × 3 m 净周界 — 在任何现场会议期间,操作区域内没有旁观者、没有电缆、没有设备。
- ✓剧集时长限制:60 秒 - 保持剧集简短。 较短的事件更容易进行质量过滤并降低长时间操作的风险。
- ✓30 分钟操作员轮换 — 在 VR 会话中每 30 分钟轮换一次远程操作员。 疲劳会降低演示质量并增加错误率。
- ✓出现任何不稳定情况时立即中止并进入 DAMP — 如果 K1 显示出任何意外的振荡或漂移,请按下急停按钮并从 DAMP 重新启动。 不要尝试手动稳定。
- ✓记录所有事件 — 记录任何跌倒、险些跌倒或中止的事件。 该数据对于数据集质量过滤和改进安全程序很有用。
剧集质量检查表
在将每个片段添加到训练数据集之前先查看它。 低质量的示威活动会降低你的政策。
- ✓任务已成功端到端完成(训练数据中没有部分完成)
- ✓机器人始终保持稳定的平衡——没有绊倒、振荡或代偿性急动
- ✓所有摄像机流都有完整的帧,没有丢失的片段
- ✓联合状态时间戳是连续的(40 Hz 记录时没有> 25 ms 的间隙)
- ✓演示顺利且深思熟虑——不仓促,不过度纠正
- ✓对象和任务场景在至少两个摄像机流中可见