数据格式
艾欧数据平台的设计目标是通用机器人数据管理,以 Robot Operating System (ROS) 为基准统一管理机器人数据。
- 数据导入:支持将智元,松灵等数采系统的非ROS标准的数据自动转换为ROS标准格式,进行统一管理。
- 数据可视化:内置了30多款主流机器人的可视化模型,可以流畅播放三维动画和平面图像等所有格式内容。
- 数据导出:支持一键导出标准HDF5/LeRobot数据格式,根据原始数据自适应关节和图像,可以直接投入模型训练。
数据流与格式关系
下图概括人类数据与遥操作机器人数据如何统一为 ROS/MCAP 管理,并导出为训练格式。
目录
人类数据格式
人类数据采集主要用于记录操作者的动作和交互过程,包含多模态传感器数据。
文件结构
每个采集任务会生成一个以时间戳命名的文件夹:
f"{date}_{project}_{scene}_{task}_{staff_id}_{timestamp}"
├── align_result.csv # 时间戳对齐表格
├── annotation.json # 标注数据
├── config/ # 相机和传感器配置
│ ├── calib_data.yml
│ ├── depth_to_rgb.yml
│ ├── mocap_main.yml
│ ├── orbbec_depth.yml
│ ├── orbbec_rgb.yml
│ └── pose_calib.yml
└── data.mcap # 多模态数据包
多模态数据
data.mcap 文件包含所有传感器的同步数据,使用MCAP格式存储。
主要Topic列表:
| Topic名称 | 数据类型 | 说明 |
|---|---|---|
/mocap/sensor_data | io_msgs/squashed_mocap_data | 动作捕捉的关节速度、加速度、角速度、旋转角度和传感器数据 |
/mocap/ros_tf | tf2_msgs/TFMessage | 基于动作捕捉的所有关节的TF变换 |
/joint_states | sensor_msgs/JointState | 基于动作捕捉的所有关节的JointState |
/rgbd/color/image_raw/compressed | sensor_msgs/CompressedImage | 主头部相机的RGB图像 |
/rgbd/depth/image_raw | sensor_msgs/Image | 主头部相机的深度图像 |
/colorized_depth | sensor_msgs/CompressedImage | 主头部相机的彩色深度图像 |
/left_ee_pose | geometry_msgs/PoseStamped | 主头部相机坐标系下的左夹爪位姿 |
/right_ee_pose | geometry_msgs/PoseStamped | 主头部相机坐标系下的右夹爪位姿 |
/claws_l_hand | io_msgs/claws_angle | 左夹爪闭合程度 |
/claws_r_hand | io_msgs/claws_angle | 右夹爪闭合程度 |
/claws_touch_data | io_msgs/squashed_touch | 夹爪触觉数据 |
/realsense_left_hand/color/image_raw/compressed | sensor_msgs/CompressedImage | 左夹爪相机的RGB图像 |
/realsense_left_hand/depth/image_rect_raw | sensor_msgs/Image | 左夹爪相机的深度图像 |
/realsense_right_hand/color/image_raw/compressed | sensor_msgs/CompressedImage | 右夹爪相机的RGB图像 |
/realsense_right_hand/depth/image_rect_raw | sensor_msgs/Image | 右夹爪相机的深度图像 |
/usb_cam_fisheye/mjpeg_raw/compressed | sensor_msgs/CompressedImage | 主头部鱼眼相机的RGB图像 |
/usb_cam_left/mjpeg_raw/compressed | sensor_msgs/CompressedImage | 主头部左单目相机的RGB图像 |
/usb_cam_right/mjpeg_raw/compressed | sensor_msgs/CompressedImage | 主头部右单目相机的RGB图像 |
/ee_visualization | sensor_msgs/CompressedImage | 主头部相机RGB图像中的末端执行器位姿可视化 |
/touch_visualization | sensor_msgs/CompressedImage | 夹爪触觉数据可视化 |
/robot_description | std_msgs/String | 动作捕捉URDF |
/global_localization | geometry_msgs/PoseStamped | 主头部相机在世界坐标系中的位姿 |
/world_left_ee_pose | geometry_msgs/PoseStamped | 左夹爪在世界坐标系中的位姿 |
/world_right_ee_pose | geometry_msgs/PoseStamped | 右夹爪在世界坐标系中的位姿 |
相机数据:
- 主头部RGBD相机:彩色+深度图像
- 左/右夹爪相机:RealSense RGBD
- 鱼眼相机:全景视角
- 左/右单目相机:立体视觉
注意: 如果使用触觉手套,会额外增加
/mocap/touch_dataTopic。
点击查看原始MCAP数据格式
library: mcap go v1.7.0
profile: ros1
messages: 45200
duration: 1m5.625866496s
start: 2025-01-15T18:09:29.628202496+08:00 (1736935769.628202496)
end: 2025-01-15T18:10:35.254068992+08:00 (1736935835.254068992)
compression:
zstd: [764/764 chunks] [6.13 GiB/3.84 GiB (37.39%)] [59.87 MiB/sec]
channels:
(1) /rgbd/color/image_raw/compressed 1970 msgs (30.02 Hz) : sensor_msgs/CompressedImage [ros1msg]
(2) /joint_states 1970 msgs (30.02 Hz) : sensor_msgs/JointState [ros1msg]
(3) /claws_r_hand 1970 msgs (30.02 Hz) : io_msgs/claws_angle [ros1msg]
(4) /global_localization 1970 msgs (30.02 Hz) : geometry_msgs/PoseStamped [ros1msg]
(5) /robot_description 1 msgs : std_msgs/String [ros1msg]
(6) /ee_visualization 1970 msgs (30.02 Hz) : sensor_msgs/CompressedImage [ros1msg]
(7) /rgbd/depth/image_raw 1970 msgs (30.02 Hz) : sensor_msgs/Image [ros1msg]
(8) /colorized_depth 1970 msgs (30.02 Hz) : sensor_msgs/CompressedImage [ros1msg]
(9) /claws_l_hand 1970 msgs (30.02 Hz) : io_msgs/claws_angle [ros1msg]
(10) /claws_touch_data 1970 msgs (30.02 Hz) : io_msgs/squashed_touch [ros1msg]
(11) /touch_visualization 1970 msgs (30.02 Hz) : sensor_msgs/CompressedImage [ros1msg]
(12) /mocap/sensor_data 1970 msgs (30.02 Hz) : io_msgs/squashed_mocap_data [ros1msg]
(13) /mocap/ros_tf 1970 msgs (30.02 Hz) : tf2_msgs/TFMessage [ros1msg]
(14) /left_ee_pose 1970 msgs (30.02 Hz) : geometry_msgs/PoseStamped [ros1msg]
(15) /right_ee_pose 1970 msgs (30.02 Hz) : geometry_msgs/PoseStamped [ros1msg]
(16) /usb_cam_left/mjpeg_raw/compressed 1960 msgs (29.87 Hz) : sensor_msgs/CompressedImage [ros1msg]
(17) /usb_cam_right/mjpeg_raw/compressed 1946 msgs (29.65 Hz) : sensor_msgs/CompressedImage [ros1msg]
(18) /usb_cam_fisheye/mjpeg_raw/compressed 1957 msgs (29.82 Hz) : sensor_msgs/CompressedImage [ros1msg]
(19) /realsense_left_hand/depth/image_rect_raw 1961 msgs (29.88 Hz) : sensor_msgs/Image [ros1msg]
(20) /realsense_left_hand/color/image_raw/compressed 1961 msgs (29.88 Hz) : sensor_msgs/CompressedImage [ros1msg]
(21) /realsense_right_hand/depth/image_rect_raw 1947 msgs (29.67 Hz) : sensor_msgs/Image [ros1msg]
(22) /realsense_right_hand/color/image_raw/compressed 1947 msgs (29.67 Hz) : sensor_msgs/CompressedImage [ros1msg]
(23) /world_left_ee_pose 1970 msgs (30.02 Hz) : geometry_msgs/PoseStamped [ros1msg]
(24) /world_right_ee_pose 1970 msgs (30.02 Hz) : geometry_msgs/PoseStamped [ros1msg]
channels: 24
attachments: 0
metadata: 0
| Topic名称 | 数据含义 |
|---|---|
| /mocap/sensor_data | 基于动作捕捉的关节速度、加速度、角速度、旋转角度和传感器数据 |
| /mocap/ros_tf | 基于动作捕捉的所有关节的TF |
| /joint_states | 基于动作捕捉的所有关节的JointState |
| /right_ee_pose | 主头部相机坐标系下的右夹爪位姿 |
| /left_ee_pose | 主头部相机坐标系下的左夹爪位姿 |
| /claws_l_hand | 左夹爪闭合程度 |
| /claws_r_hand | 右夹爪闭合程度 |
| /claws_touch_data | 夹爪触觉数据(包含两个消息,每个消息的frame_id表示左或右夹爪,data的前四个值有效) |
| /realsense_left_hand/color/image_raw/compressed | 左夹爪相机的RGB图像 |
| /realsense_left_hand/depth/image_rect_raw | 左夹爪相机的深度图像 |
| /realsense_right_hand/color/image_raw/compressed | 右夹爪相机的RGB图像 |
| /realsense_right_hand/depth/image_rect_raw |