跳转至

VR 采集(Pico)

🎮 本页对应 OpenArmX + Pico4 Ultra 的 LeRobot 数据采集流程。

安全距离示意

🧩 硬件清单

  • 1 台 OpenArmX 双臂机器人
  • 2 个 RealSense D405(左右手)
  • 1 个 RealSense D435(头部)
  • 1 台 遥操设备:Pico4 Ultra(VR 遥操作)
  • 1 个 usb 3.0 高速拓展坞(至少3个usb接口)
  • 1 个 千兆路由器
  • 2 条 千兆网线
  • 2 台 电脑:一台用来数据采集(我们配备的白色小工控机,需要的 usb 带宽比较高,数据发送端),一台用来训练和推理(高性能GPU,数据接收端) 如果您的工控机性能足够,可只用一台主机进行数据采集、训练和推理的所有任务!!采用分布式数据采集是因为部分主机的 usb 带宽不够不能使用三个相机

⚠️ 采集前安全检查

  • 启动双臂前,确认 CAN 板已启动(蓝灯)
  • 轻晃机械臂,确认电机有阻力(使能成功)
  • 远离易燃、易爆、腐蚀性危险物
  • 采集过程中与机器人保持安全距离

采集端(白色工控机)

1. 终端 1:启动双臂机器人

cd ~/openarmx_ws/
source install/setup.bash
ros2 launch openarm_bringup openarm.bimanual.launch.py \
  control_mode:=mit \
  robot_controller:=forward_position_controller \
  use_fake_hardware:=false

2. 终端 2:启动 Pico 桥接

cd ~/openarmx_ws/
source install/setup.bash
ros2 run openarmx_teleop_bridge_vr_pico openarmx_teleop_bridge_vr_pico_node

3. 终端 3:启动 IK 逆解

cd ~/openarmx_ws/
source install/setup.bash
ros2 launch openarmx_teleop_vr_pico teleop_vr_pico.launch.py

4. 终端 4:启动相机发布

cd ~/openarmx_ws/
source install/setup.bash
ros2 launch openarmx_lerobot camera_publisher.launch.py \
  width:=424 height:=240 fps:=15 \
  cam_left_serial:=序列号 cam_left_type:=型号 \
  cam_right_serial:=序列号 cam_right_type:=型号 \
  cam_head_serial:=序列号 cam_head_type:=型号

示例:

ros2 launch openarmx_lerobot camera_publisher.launch.py \
  width:=424 height:=240 fps:=15 \
  cam_left_serial:=218622270388 cam_left_type:=D405 \
  cam_right_serial:=218622274446 cam_right_type:=D405 \
  cam_head_serial:=335522070220 cam_head_type:=D435

接收端(训练和推理的高性能主机)

5. 终端 5:启动 LeRobot 采集

lerobot-env

HF_HUB_OFFLINE=1 lerobot-record \
  --robot.type=openarmx_follower_ros2 \
  --teleop.type=openarmx_leader_ros2 \
  --dataset.repo_id=local/你的数据名称 \
  --dataset.single_task="你执行的任务名称" \
  --dataset.num_episodes=采集的总组数 \
  --dataset.episode_time_s=每组时长秒数 \
  --dataset.reset_time_s=组间重置时长秒数 \
  --dataset.push_to_hub=false \
  --display_data=true

实例:

lerobot-env
HF_HUB_OFFLINE=1 lerobot-record \
      --robot.type=openarmx_follower_ros2 \
      --teleop.type=openarmx_leader_ros2 \
      --dataset.repo_id=local/openarmx_dataset \
      --dataset.single_task="Teleop OpenArmX robot" \
      --dataset.num_episodes=100 \
      --dataset.episode_time_s=60 \
      --dataset.reset_time_s=5 \
      --dataset.push_to_hub=false \
      --display_data=true \
      --dataset.vcodec=h264
      # 编码器名称['h264', 'hevc', 'libsvtav1']

建议:采集不少于 50 组,效果更好。

默认保存路径:~/.cache/huggingface/lerobot/local

⌨️ 采集快捷键

  • :结束并保存当前 episode
  • :丢弃当前 episode
  • Esc:停止录制并退出

🔍 常用参数速查

  • --dataset.repo_id:数据集名(如 local/openarmx_dataset
  • --dataset.single_task:任务描述
  • --dataset.num_episodes:总回合数
  • --dataset.episode_time_s:每回合时长
  • --dataset.reset_time_s:重置时长
  • --display_data:可视化调试开关
  • --dataset.root:自定义数据保存目录

🧠 经验建议

  • 先小批量(10~20 组)验证链路,再长时采集
  • 保持相机曝光和机位一致,减少训练分布漂移
  • 每个任务单独建 repo_id,便于后续训练与复现