Data format
Capture side
Data uploaded to the platform or downloaded locally (mcap)
When you upload to the platform or download locally, the folder layout is as follows:
episode_000xx_yyyy_mm_dd_hh_mm_ss/
- episode_id_yyyy_mm_dd_hh_mm_ss_trimmed_timestamp_mcap_0.mcap
- metadata.yaml
- device_meta.json
- status/
- sensor_camera1/
- recorder.status
- sensor_camera2/
- recorder.status
...
episode_id_yyyy_mm_dd_hh_mm_ss_trimmed_timestamp_mcap_0.mcap
Topics and message types in the mcap:
| Data source | Converted topic | Message type | Units / notes |
|---|---|---|---|
| Image | /sensor/<eternal_id>/image/compressed | sensor_msgs/msg/CompressedImage | Format: jpeg or h264 |
| IMU | /sensor/<eternal_id>/imu | sensor_msgs/msg/Imu | Linear acceleration: m/s², angular velocity: rad/s |
| IMU | /sensor/<eternal_id>/mag | sensor_msgs/msg/MagneticField | Magnetic field: Tesla |
| Gripper | /sensor/<eternal_id>/imu | sensor_msgs/msg/Imu | Linear acceleration: m/s², angular velocity: rad/s |
| Gripper | /sensor/<eternal_id>/mag | sensor_msgs/msg/MagneticField | Magnetic field: Tesla |
| Gripper | /sensor/<eternal_id>/joint_states | sensor_msgs/msg/JointState | Position: 1. <eternal_id>_rad (radians) 2. <eternal_id>_dist (meters) |
| Mic | /sensor/<eternal_id>/audio | audio_common_msgs/msg/AudioDataStamped | Format: Raw PCM |
metadata.yaml
metadata.yaml is written alongside mcap conversion and records:
-
Core metadata
- version: rosbag2 descriptor version
- storage_identifier: storage backend type (usually
mcaphere) - relative_file_paths: paths to associated raw MCAP files (supports split volumes)
-
Timing and statistics
- starting_time: recording start time (usually Unix nanoseconds)
- duration: total recording duration
- message_count: total number of messages in the package
-
Per-topic definitions
- name: topic name (e.g.
/chatter) - type: message type (e.g.
std_msgs/msg/String) - serialization_format: serialization format (for ROS 2, usually
cdr) - offered_qos_profiles: QoS used when the topic was published—important for consistent playback, including reliability and history depth.
- name: topic name (e.g.
device_meta.json
Records the current sensor configuration (passed through from the frontend config).
status folder
Contains one subdirectory per sensor, named by the sensor eternal_id, each with a recorder.status file describing that sensor’s stream output and disk write status for this recording.
Platform
Post-processing topic list
| Category | Topic | Message type | Notes |
|---|---|---|---|
| Raw: image | /sensor/<eternal_id>/image/compressed | sensor_msgs/msg/CompressedImage | <eternal_id> typical values: EgoCentric_Camera_0, EgoCentric_Camera_1 Left_Wrist_Camera_0, Right_Wrist_Camera_0 Left_Gripper_Camera_0, Right_Gripper_Camera_0 |
| Raw: magnetometer | /sensor/Left_Gripper_IntegratedPose/mag/sensor/Right_Gripper_IntegratedPose/mag/sensor/Head_IMU/mag | sensor_msgs/msg/MagneticField | |
| Raw: IMU | /sensor/Left_Gripper_IntegratedPose/imu/sensor/Right_Gripper_IntegratedPose/imu/sensor/Head_IMU/imu | sensor_msgs/msg/Imu | Linear acceleration: m/s², angular velocity: rad/s |
| Rectified image | /sensor/<eternal_id>/rect/compressed | sensor_msgs/msg/CompressedImage | <eternal_id> same typical values as raw image |
| Rectified image | /sensor/<eternal_id>/rect/camera_info | sensor_msgs/msg/CameraInfo | Intrinsics for the rectified virtual camera |
| Head pose | /io/pose/EgoCentric_Camera_0/traj | visualization_msgs/msg/Marker | |
| Head pose | /io/pose/EgoCentric_Camera_0 | geometry_msgs/msg/PoseStamped | |
| Hand pose | /io/pose/Left_Hand/io/pose/Right_Hand | geometry_msgs/msg/PoseArray | |
| Hand visualization | /io/pose/Hand/compressed | sensor_msgs/msg/CompressedImage | Optional debug visualization image |