Skip to content

数据集定义

数据集

为了构建高质量的通用机器人数据集,我们基于专门设计的数据采集机器人及配套的数据采集软件平台进行数据采集,并可对采集中生成的数据进行高质量的校验。

RS数据采集机器人具备执行多种通用任务的能力,覆盖日常生活(如物品取放、清洁整理)、简化医疗程序(如模拟器械传递、环境消毒辅助)及基础工业操作(如零件搬运、简单装配)等场景。在执行这些任务时,机器人能够通过其搭载的多模态传感器阵列采集丰富的环境信息和自身状态数据。这些数据不仅包括传统的视觉(RGB摄像头),还包括更精细的机器人本体感知数据,如关节角度、速度、末端执行器位姿、力反馈信息等,这些对于RL算法的训练至关重要。

数据集具备以下几个特点

  1. 高保真度数据采集:确保采集到的传感器数据具有高精度和低延迟特性,能够真实反映机器人与环境的交互过程。例如,高帧率的摄像头和精确的力传感器能够捕捉到细微的操作细节和接触力变化。
  2. 同步与时间戳对齐:所有视觉传感器数据流均进行精确的时间硬同步和打戳,保证不同模态数据间的一致性,这对于后续的数据融合和模型训练至关重要。
  3. 任务与场景多样性:机器人被设计为易于配置和部署于各种模拟或真实的通用任务场景中,从而能够采集到覆盖广泛技能和环境的多样化数据。

类别与范围

RS通用机器人动作数据集致力于捕捉机器人在执行多样化通用任务时所展现的动作。这些动作类别广泛,旨在覆盖机器人技术在现实世界中可能应用的多个关键领域。数据集中的动作不仅包括简单的肢体运动,还涵盖了与环境、物体及潜在的人类伙伴进行复杂交互的序列。纳入到数据采集范围的动作类别与范围包括但不限于如下内容:

  • 日常生活活动 (Activities of Daily Living,ADLs):例如,物品取放(从不同位置拿起和放置不同形状、重量的物体)、清洁整理(擦拭表面、整理杂物)、开关门窗、操作家用电器(如微波炉、洗衣机)、准备简单食物(如倒水、搅拌)等。这些动作是服务机器人在家庭或办公环境中执行任务的基础。
  • 基础工业操作:例如,零件搬运与上下料(在模拟的装配线上抓取和移动零部件)、简单装配与拆卸(如拧螺丝、插件、卡扣连接)、质量检测辅助(如手持传感器对产品进行扫描模拟)、包装与码垛(将产品放入包装盒或在托盘上堆叠)。这些动作代表了机器人在制造业、物流仓储等工业场景中的基础应用。
  • 公共服务:如IT设备运维(机房巡检,网线连接,运维动作如服务器开关等),公共场所的巡逻及任务执行(如机场高铁站的安全检查,物品搬运等),卫生防疫(检疫样本放置及操作,环境消杀等)。这些动作是机器人在公共及危险空间中执行任务的基础。

数据集力求在每个类别下都包含多样化的具体动作实例,并记录这些动作在不同环境、不同物体以及不同任务目标下的执行情况。通过这种方式,数据集能够为训练具有高度适应性和泛化能力的机器人策略提供支持。

我们同时提高度灵活的数据定制化服务,可以根据全球用户对数据采集场景,具体的任务要求,数据结构和定义给出定制化的数据采集解决方案及执行排期。

数据维度与标注

  • RS通用机器人动作数据集在数据维度和标注方面追求全面性和精细度,以支持复杂的机器人学习和行为分析任务。数据维度主要包括

    • 机器人本体状态数据:核心数据之一,包括机器人的关节角度、关节速度、末端执行器的位姿(位置和姿态)、末端执行器的力/力矩反馈。这些数据以高频率采样,精确记录机器人的运动学和动力学状态。
    • 视觉数据:通常包括来自一个或多个RGB摄像头的高分辨率彩色图像流,可能还包含深度图像(如果机器人配备了深度相机)。这些图像数据提供了丰富的环境信息和机器人操作对象的视觉特征。
    • 任务与动作指令:记录在数据采集过程中下达给机器人的高级任务指令(例如,“拿起桌上的杯子”)或低级动作指令(例如,特定的关节目标或末端执行器轨迹)或既定的任务内容及执行顺序。
    • 时间戳:所有数据流都带有精确同步的时间戳,确保不同模态数据在时间上的一致性,这对于分析动态交互过程至关重要。
  • 数据标注是提升数据集价值的关键环节,主要包括以下几个方面

    • 动作片段分割:将连续的数据流分割成独立的动作片段(episodes),每个片段对应一个完整的任务执行尝试或一个有意义的行为单元。
    • 动作标签:为每个动作片段或片段内的关键帧打上语义动作标签。这些标签可以是分层的,例如,高级任务标签(如“泡茶”),中级动作标签(如“拿取茶杯”、“倒入热水”),以及低级动作原语标签(如“抓取”、“移动”)。
    • 物体标签与状态:识别和标注与机器人交互的关键物体(例如,“杯子”、“门把手”),并可能记录物体的初始状态和最终状态(例如,物体的位置、朝向、是否被成功操作等)。
    • 任务成功/失败标注:对每个动作片段的执行结果进行评估和标注,指明任务是否成功完成,以及失败的原因(如果适用)。
    • 场景描述与元数据:提供关于任务执行场景的文本描述(例如,“在厨房的桌子上操作”),以及关于机器人配置、传感器参数、数据采集日期等元数据信息。

数据集的MCAP元数据定义

RS通用机器人动作数据集采用了MCAP(Machine-Generated Data Container)格式,以支持高效的多模态数据存储和流式传输。

说明

基于实际数据采集项目经验,用户(机器人原厂,AI大模型研究机构,数据标注公司等)更关注采集硬件平台(机器人)的仿生性和主体一致性(即视觉传感器所在高度及视野与人类解剖和生物学特性接近),视线完整性(即空间语义完整性包括:操作细节,如可观察到双臂的运动和末端执行状态,及与周期物体的空间关系)。为此专门进行了针对性的优化,如更好的FOV视场角,数据精度,及多相机间硬件同步。
基于不同客户定制和模型的需求,机器人数据的采集项会发生相应的变化,且不同的数据格式对数据项定义也有不同要求。以上信息仅供参考,更进一步的需求请与官方或您的销售代表进行联络。
下图是一个实际采集时的机器人头部视野的画面,可以清晰和完整得呈现操作整个动作场景。

alt text

这些MCAP元数据消息类型为数据集提供了丰富的细节和结构化的信息,使得数据可以被高效地存储、传输和处理。通过这些消息,研究人员可以精确地了解机器人在执行任务时的感知、状态和行为,从而为各种机器人学习和分析任务提供坚实的数据基础。

以下是数据集中关键MCAP元数据消息类型定义:

压缩图像数据

适用于带宽受限场景。

消息名称

sensor_msgs/msg/ComressedImage

主要字段及含义解释

  • header:时间戳和坐标系信息。
    • stamp.sec:自1970-01-01 UTC的整秒数。
    • stamp.nanosec:纳秒偏移量(0-10⁹)。
    • frame_id:相机坐标系(如"head_camera_optical")。
  • format:压缩格式("jpeg"、"png"、"tiff")。
  • data:压缩图像二进制数据。
  • 应用:头部/左臂/右臂相机的图像传输。

原始未压缩图像数据

提供完整像素信息。

消息名称

sensor_msgs/msg/Image

主要字段及含义解释

  • header:时间戳和坐标系信息(同ID1)。
  • height:图像高度像素。
  • width:图像宽度像素。
  • encoding:像素编码格式。
    • rgb8:24位RGB。
    • bgr8:24位BGR。
    • mono8:8位灰度。
    • bayer_rggb8:拜尔原始数据。
  • is_bigendian:字节序(0=小端)。
  • step:每行字节数(width×像素大小)。
  • data:原始像素数据。
  • 应用:原始图像处理/计算机视觉。

相机标定参数

用于图像校正和3D投影。

消息名称

sensor_msgs/msg/CameraInfo

主要字段及含义解释

  • header:时间戳和坐标系信息。
  • height/width:标定分辨率。
  • distortion_model:畸变模型("plumb_bob"=径向+切向畸变)。
  • d:畸变参数 [k1,k2,p1,p2,k3]。
  • k:3×3内参矩阵
    • 格式:[fx, 0, cx, 0, fy, cy, 0, 0, 1]
    • fx/fy:焦距(像素)。
    • cx/cy:主点坐标。
  • r:3×3旋转矩阵(通常为单位矩阵)。
  • p:3×4投影矩阵。
    • 格式:[fx', 0, cx', Tx, 0, fy', cy', Ty, 0, 0, 1, 0]
  • binning_x/y:像素合并因子(1=无合并)。
  • roi:感兴趣区域。
    • x_offset/y_offset:区域左上角坐标。
    • width/height:区域尺寸。
    • do_rectify:是否需要校正。
  • 应用:图像去畸变/点云生成。

关节实时状态

用于运动控制和状态监控。

消息名称

sensor_msgs/msg/JointState

主要字段及含义解释

  • header:时间戳和基座坐标系(如"base_link")。
  • name[]:关节名称数组。
    • 示例:["shoulder_pan", "shoulder_lift", "elbow", "wrist1", "wrist2", "wrist3"]
  • position[]:关节角度(rad)或位置(m)。
  • velocity[]:关节速度(rad/s或m/s)。
  • effort[]:关节力矩(Nm)或力(N)。
  • 应用:机械臂运动学建模/控制反馈。

关节速度控制指令

用于实时运动控制。

消息名称

rm_ros_interfaces/msg/Jointspeed

主要字段及含义解释

  • joint_speed[]:各关节当前速度(RPM)。
    • 顺序与JointState.name[]对应。
  • 应用:机械臂运动控制。

空间位置和方向

物体在空间中的位置和方向,用于定位和导航。

消息名称

geometry_msgs/msg/Pose

主要字段及含义解释

  • position:3D位置坐标(m)。
    • x:前后方向(前为正)。
    • y:左右方向(左为正)。
    • z:垂直方向(上为正)。
  • orientation:四元数方向。
    • x,y,z,w:旋转四元数。
    • 单位四元数:[0,0,0,1]表示无旋转。
  • 应用:末端执行器定位/物体抓取。

灵巧手状态

灵巧手状态反馈,包含手指位置/力控/错误信息。

消息名称

  • rm_ros_interfaces/msg/Rmplusbase
  • rm_ros_interfaces/msg/Rmplusstate

主要字段及含义解释

  • Rmplusbase_msg

    • manu:设备厂家。
    • type:设备类型 1:两指夹爪 2:五指灵巧手 3:三指夹爪。
    • hv:硬件版本。
    • sv:软件版本。
    • bv:boot版本。
    • id:设备ID。
    • dof:自由度。
    • check:自检开关。
    • bee:蜂鸣器开关。
    • force:力控支持。
    • touch:触觉支持。
    • touch_num:触觉个数。
    • touch_sw:触觉开关。
    • hand:手方向 1 :左手 2: 右手。
    • pos_up:位置上限,单位:无量纲。
    • pos_low:位置下限,单位:无量纲。
    • angle_up:角度上限,单位:0.01度。
    • angle_low:角度下限,单位:0.01度。
    • speed_up:速度上限,单位:无量纲。
    • speed_low:速度下限,单位:无量纲。
    • force_up:力上限,单位:0.001N。
    • force_low:力下限,单位:0.001N。
  • Rmplusstate_msg

    • sys_state:系统状态。
    • dof_state:各自由度当前状态。
    • dof_err:各自由度错误信息。
    • pos:各自由度当前位置。
    • speed:各自由度当前速度。
    • angle:各自由度当前角度。
    • current:各自由度当前电流。
    • normal_force:自由度触觉三维力的法向力。
    • tangential_force:自由度触觉三维力的切向力。
    • tangential_force_dir:自由度触觉三维力的切向力方向。
    • tsa:自由度触觉自接近。
    • tma:自由度触觉互接近。
    • touch_data:触觉传感器原始数据。
    • force:自由度力矩。

关节电气信息

消息名称

  • rm_ros_interfaces/msg/Jointcurrent
  • rm_ros_interfaces/msg/Jointtemperature
  • rm_ros_interfaces/msg/Jointvoltage

主要字段及含义解释

  • 当前关节电流Jointcurrent.msgjoint_current:float32类型,当前关节电流,精度 0.1mA。
  • 当前关节温度Jointtemperature.msgjoint_temperature:float32类型,当前关节温度,精度 0.1℃。
  • 当前关节电压Jointvoltage.msgjoint_voltage:float32类型,当前关节电压,精度 0.1V。

六维力传感器信息

消息名称

rm_ros_interfaces/msg/Sixforce

主要字段及含义解释

  • 六维力传感器外受力数据Sixforce.msg
    • force_fx:float32,当前传感器沿x轴方向受外力大小。
    • force_fy:float32,当前传感器沿y轴方向受外力大小。
    • force_fz:float32,当前传感器沿z轴方向受外力大小。
    • force_mx:float32,当前传感器沿x轴方向转动受外力大小。
    • force_my:float32,当前传感器沿y轴方向转动受外力大小。
    • force_mz:float32,当前传感器沿z轴方向转动受外力大小。