跳转至

数据采集#

下文安装步骤对应的工具包,请在更新日志页面获取下载

环境配置#

系统要求#

  • 操作系统 :Ubuntu AMD64 (x86_64)
  • Python 版本 :>= 3.10
  • 依赖管理工具 :Anaconda(推荐 Miniconda)

环境安装#

创建Conda环境

conda create -n airbot_data python=3.10 && conda activate airbot_data

软件安装#

操作环境要求

所有命令需在 airbot_data 虚拟环境中执行!

安装SDK#

conda activate airbot_data
cd mmk2_sdk_v1.1.3/airbot_py
bash install.sh

安装数据采集包#

cd data-collection
bash install.sh

版本校验说明

  • SDK 安装完成后执行下方指令校验,预期正常版本为 4.0.6
    pip list | grep airbot_py
    
  • 数据采集安装完成后执行下方指令校验,预期正常版本为 0.6.4
    pip list | grep airbot-data-collection
    

安装结束后终端可能有红色报错提示部分依赖问题,一般可忽略,进行后续操作即可。

采集数据#

启动MMK2#

  1. 开启底盘电源
  2. 开启本体电源
  3. 开启机械臂电源
  4. 进入遥控模式:待自检通过(白灯)后,按手柄 Start 键进入遥控模式(绿灯)
  5. 进入背包示教模式:按手柄 X 键进入背包示教模式(身体浅蓝灯,头白灯)
  6. 开始示教同步
    • 打开示教背包电源
    • 穿戴背包
    • 等待30秒后按手柄 LB + RB 开始示教同步(头灯由白变浅蓝)

连接MMK2#

参考"软件配置"部分中的"有线连接"章节进行操作。

机器人配置文件#

MMK2配置文件#

机器人配置文件路径:airbot_data_collection/airbot/configs/robots/airbot_mmk.yaml

    _target_: airbot_data_collection.airbot.robots.airbot_mmk.AIRBOTMMK

    ip: 192.168.11.200
    components: [left_arm, left_arm_eef, right_arm, right_arm_eef, head, spine]
    cameras:
      head_camera:
        camera_type: REALSENSE
        rgb_camera.color_profile: 640,480,30
        enable_depth: "false"
        align_depth.enable: "false"
        # serial_no: '123456'  # multiple rs-cameras case
      # left_camera:
      #     camera_type: USB
      #     video_device: /dev/left_camera
      #     image_width: "640"
      #     image_height: "480"
      #     framerate: "25"
      # right_camera:
      #   video_device: /dev/right_camera
      #   camera_type: USB
      #   image_width: "640"
      #   image_height: "480"
      #   framerate: "25"
    default_action: [
        # arms will not move when demonstrating
        -0.233,-0.73, 1.088, 1.774, -1.1475, -0.1606,    # left_arm (6 joints)
        1.0,                             # left_arm_eef (1 joint)
        0.2258, -0.6518, 0.9543, -1.777, 1.0615, 0.3588,  # right_arm (6 joints)
        1.0,                             # right_arm_eef (1 joint)
        0.0, -0.0,                       # head (2 joints)
        0.0,                             # spine (1 joint)
      ]

参数解释

  • ip:机器人的ip地址,建议尽量使用有线连接以提高数据采集频率,保证数据质量
  • components:需要使用的机器人的部件
  • cameras: 需要使用的相机的配置参数,根据实际情况调整
  • default_action:机器人的初始关节角,注意顺序与components一一对应

主配置文件#

数据采集主配置文件位于:airbot_data_collection/airbot/configs/mains/mmk.yaml

通常需进行如下修改:

  • 任务信息(task_info)。如果训练 pi0 等VLA模型,对文本描述有要求,需要尽量准确,示例如下:
    task_info:
      operator: xxx
      station: mmk-MK11QWZ025170023
      task_name: pick wooden blocks and place and stack
      task_description: pick the wooden blocks from the bowl with the gripper, and place all wooden blocks on the desktop,and stack the wooden blocks one by one
      task_description_zh: 用夹爪从碗中拾取木制积木,将木制积木放置在桌面上,将木制积木逐个堆叠
      task_id: 120
      # 单个技能配置
      # skill: grasp
      # 多个技能配置示例 (取消注释并注释上面的单行配置):
      skill:
        - grasp
        - place
      object:
        - wooden blocks
        - bowl
      scene: desktop
      subtasks:
        - skill: grasp
          description: "pick the wooden blocks from the bowl with the gripper"
          description_zh: "用夹爪从碗中拾取木制积木"
        - skill: "place {A} on {B}"
          description: "place the wooden blocks on the desktop"
          description_zh: "将木制积木放置在桌面上"
        - skill: "stack {A} on {B}"
          description: "stack the wooden blocks one by one"
          description_zh: "将木制积木逐个堆叠"
  • 数据保存目录(dataset.directory):数据将默认保存在airbot_data_collection/data/路径下
  • 数据采集频率(update_rate):所有数据更新的频率,单位为Hz
  • 数据大小上限(sample_limit.size):数据采集的最大长度,即最多采集多少数据点,在到达该上限之前若未手动保存,则在到达时默认将自动保存

开始采集#

采集指令#

重要提醒

  • 必须进入背包示教模式后才能运行数据采集! 否则会报错
  • 数据将保存为 MCAP 格式
cd airbot_data_collection
python3 main.py --path airbot/configs/mains/mmk.yaml

按键#

注意

避免连续按键以防止重复行为

执行上述命令后,您可以使用键盘来控制操作。键盘按键的功能说明如下:

按键 功能说明
空格键 开始录制一段数据。录制完所有帧后,数据将自动保存。
s键 在当前录制尚未完成所有帧时停止录制并保存数据。这会导致录制的数据长度不同。
q键 放弃当前录制或重新录制上一段数据。
r键 删除最新采集的数据文件。
p键 在终端打印当前机器人的状态信息。
i键 再次显示这些操作说明。
z/Esc键 退出采集程序。

操作步骤#

  1. 启动程序:每个摄像头的实时窗口将会出现。
  2. 开始录制:按下空格键开始录制数据并遥操MMK2完成目标任务。
  3. 放弃录制:如果示教操作不可接受,请按 q 键以放弃当前录制过程。
  4. 任务完成

    • 等待收集到指定数量的帧或按 s 键立即保存数据(实际任务所花费的帧数应尽可能接近最大收集帧数)
    • 帧数达到设定的最大值后,数据将自动保存。
  5. 数据保存:数据将默认保存到当前目录下的 data/<task_name> 文件夹中。

附加建议#

  1. 任务时长:尽量确保在达到最大帧数限制之前完成任务,即不要过早结束动作。
  2. 移动速度:机械臂的移动速度不应过快,否则收集到的信息将会变得稀疏,且图像质量也会不高。
  3. 数据备份:建议将收集到的任务数据文件夹保存在便携式硬盘上的相同目录结构中,以作为备份。

数据检查(一般可跳过该步)#

  • 图像质量:图像数据不能存在破损
  • 话题格式:话题格式需要满足要求

运行如下脚本:

python3 tests/check_mmk_mcap_dataset.py --dir data/<dir_name>

参数解释

  • dirmcap数据集存放在的文件夹
  • print_details:打印每个数据文件的详细信息

程序输出示例如下:

=== Summary Report ===
INFO:__main__:Total files: 55
INFO:__main__:Normal files: 53
INFO:__main__:Abnormal files: 2
INFO:__main__:Abnormal files and issues:
INFO:__main__:  data/mcap/mmk2_pick_and_place_wooden_blocks_0731/13.mcap:
INFO:__main__:    - Mismatch: Message len=492 > Min video frames=491
INFO:__main__:  data/mcap/mmk2_pick_and_place_wooden_blocks_0731/44.mcap:
INFO:__main__:    - Mismatch: Message len=507 > Min video frames=506
实际训练时建议剔除不满足要求的文件进行训练,否则可能会导致出错。

注意:

该检查默认会检查3个相机(左右手和头部),并将缺少相机的数据列为不正常数据。如果实际仅使用了部分相机,请忽略该提示。

如果需要继续采集数据,请先删除status文件避免采集数据序号不连续:

rm -f data/<dir_name>/*.status

数据可视化#

使用方法#

双击打开 data_viewer 文件夹下的 index.html 文件,即可通过浏览器进入数据可视化页面:

进入页面后,点击左上角蓝色浏览图标:

在弹出的文件选择窗口中,选中需要查看的 mcap 格式数据文件,点击 OK 确认导入:

文件导入成功后,在右侧数据列表中单击目标数据文件(底色变蓝即为选中):

点击页面左侧 + 号按钮,按需选择需要可视化的数据类型(图表、视频等):

选择对应数据类型后,页面右侧会新增可视化窗口,右键该窗口:

点击蓝色设置按钮,在 Topic 选项栏中筛选需要展示的数据名称,完成后点击 OK

配置完成后,点击窗口上方的播放控制按钮,即可动态可视化采集的数据:

最终数据可视化效果如下:

真机数据回放#

注意:

回放前请将退出背包示教模式(建议在绿灯的Start模式)

python3 tests/replay_mcap_mmk.py data/0606/0.mcap -f 20 -ip 192.168.11.200

参数解释

  • f:数据回放的频率,一般可设置与原始数据频率一致
  • ip:机器人的ip地址