数据收集

使用 Orca Hand 记录灵巧的操作数据与简单的抓手数据收集有着根本的不同——17 个手指关节、可选的触觉流和手套远程操作都需要仔细的同步。 本指南涵盖了完整的工作流程。

录音前

用于灵巧数据收集的硬件设置

Orca Hand 录制设置比简单的夹臂具有更多的流 - 手指关节、可选的触觉、摄像头和手臂关节都需要同步。

🕐

Orca Hand(USB 串口)

频率高达 100 Hz 时的 17 自由度手指状态。 核实: python -c "from orca_core import OrcaHand; h=OrcaHand('/dev/ttyUSB0'); h.connect(); print(h.get_positions())"

🤸

遥控装置

聚桥手套(推荐)或VR手部追踪。 将操作员手指的姿势实时映射到 Orca Hand 关节目标。

📷

掌上/手腕相机

手掌内的小型 USB 摄像头指向指尖和物体。 对于接触丰富的任务至关重要,指尖物体的接触决定了抓取的成功。

📈

触觉传感器(可选)

Paxini 或兼容的指尖传感器。 独立的 USB 连接。 将接触力流添加到您的数据集中,以进行接触指导的政策培训。

录音工作流程

分步录制工作流程

1

举起手臂+手+手套

# Terminal 1: Arm (if using OpenArm)
source ~/openarm_ws/install/setup.bash
ros2 launch openarm_ros2 openarm.launch.py use_fake_hardware:=false can_interface:=can0

# Terminal 2: Orca Hand
source ~/orca_ws/install/setup.bash
ros2 launch orca_ros2 orca_hand.launch.py port:=/dev/ttyUSB0 handedness:=right

# Terminal 3: Juqiao Glove (see Juqiao Glove software page)
python -m juqiao_glove.stream --port /dev/ttyUSB1
2

验证所有流都是实时的

# Check finger joint states
ros2 topic hz /orca_hand/joint_states   # expect ~100 Hz

# Check glove stream
ros2 topic hz /juqiao_glove/finger_angles   # expect ~100 Hz

# Check camera
python -c "import cv2; cap=cv2.VideoCapture(0); print('Camera OK:', cap.isOpened())"
3

校准手套到手的映射

运行手套校准,将您的手指尺寸映射到 Orca Hand 的关节范围。 此步骤确保自然的远程操作 - 你张开的手 = Orca 张开,你的拳头 = Orca 拳头。

python -m orca_core.scripts.calibrate_teleop \
  --hand_port /dev/ttyUSB0 \
  --glove_port /dev/ttyUSB1 \
  --handedness right
4

设置任务场景

将物体放置在一致的起始位置。 灵巧的抓握对物体的姿势高度敏感——使用固定装置(胶带、油灰)来保持不同场景中物体位置的一致。

5

开始录制会话

python -m orca_core.scripts.record_episodes \
  --hand_port /dev/ttyUSB0 \
  --glove_port /dev/ttyUSB1 \
  --camera_id 0 \
  --fps 30 \
  --output_dir ~/datasets/orca-grasp-v1 \
  --num_episodes 50 \
  --task "Pick up the pen using a precision pinch grasp"

记录器将同步的手指关节位置、手套角度、相机框架和(如果已连接)触觉读数保存到 Parquet 数据集。

6

复习把握质量

重播每一集。 寻找:滑动事件(突然的位置跳跃)、不完整的抓握、肌腱饱和(抓握过程中关节处于硬限制)、不一致的接近路径。

python -m orca_core.scripts.visualize_episode \
  --dataset_dir ~/datasets/orca-grasp-v1 \
  --episode_index 0
7

推送至 HuggingFace Hub

python -m orca_core.scripts.push_dataset \
  --dataset_dir ~/datasets/orca-grasp-v1 \
  --repo_id your-username/orca-grasp-v1
数据集格式

Orca 手数据集架构

Orca Hand 数据集格式通过额外的手指特定和触觉流扩展了标准 LeRobot 模式。

每集 Parquet 文件中的字段
观察.hand_state 浮点数32[17] 所有 17 个手指关节位置(以度为单位)
观察.hand_velocity 浮点数32[17] 手指关节速度(度/秒)
观察.触觉 浮点数32[5] 每个指尖的接触力,单位为 N(如果连接了触觉传感器)
观察.图像.* 视频路径 相机框架 — 手掌视图、手腕视图、工作区视图
行动 浮点数32[17] 手套远程操作的目标手指关节位置
抓握类型 细绳 使用的抓取原语的标签(例如,“ precision_pinch”,“ power_grasp”)
时间戳 浮动64 Unix 时间戳(以秒为单位)
下一步完成 布尔值 每集最后一帧为真
品质保证

灵巧的数据质量检查表

灵巧的操纵数据比简单的取放有更多的故障模式。 在推送到集线器之前先运行一遍此操作。

  • 1
    在整个情节中,所有 17 个关节都有有效的位置读数 NaN 或卡住值表示伺服丢失。 检查 observation.hand_state 对于所有帧中任何关节的恒定值。
  • 2
    手套到手的延迟低于 20 毫秒 检查时间戳之间的对齐情况 action (来自手套)和 observation.hand_state。 高延迟导致策略从因果不一致的对中学习。
  • 3
    任务中的抓取类型是一致的 如果一些示威活动使用了权力抓握,那么精确捏捏的政策就不会普遍化。 将每个数据集保留为一种主要抓取策略,或按抓取类型进行标记。
  • 4
    接触事件在联合位置可见 当手与物体接触时,指关节应表现出明显的减速和顺应性偏转。 手指在没有接触变形的情况下卡入位置的情况可能会错过抓握。
  • 5
    掌上相机在整个操作阶段显示物体 从接近到释放,该物体必须在掌上相机中可见。 检查相机安装座是否未受到碰撞,并且 FOV 是否覆盖任务工作区。
  • 6
    触觉流在预期的地方有接触事件 在捏握过程中,拇指和食指的触觉应该显示出力量的增加。 确认接触期间缺少力信号表明传感器已断开或校准错误。

数据集准备好了吗? 开始训练。

将您灵巧的操作数据集推送到 HuggingFace 并探索兼容模型。