Skip to content

Data & Message Definitions

Custom Message Index

TypeMain PurposeKey FieldsUnits & Constraints
EncoderstateChassis Encodersleft_encoder, right_encoderuint16 raw counts 0–5600; NOT equal to meters
RobotPowerBattery & Channelized Powertotal_voltage, current, remain_capacity, remain_percent, *_voltageVoltage in 0.01 V; current scaled per Voltage, Current & Percentage Conversions; capacity conversion requires on-site protocol specification
CamerastateCamera Frame Rate Aggregationcamera_color_fps, camera_depth_fpsuint8[] array in fps; array indices MUST NOT be arbitrarily mapped to cameras
BodyDataWaist & Neck High-Frequency Dataheader, joint_state, pose, neck_joint_state, neck_poseJointState.position in rad, pose position in meters, orientation in quaternions
ArmMasterDataMaster Arm Teleoperation Dataheader, joint_staterad / rad/s; subject to message definition and physical device schema
ArmSlaveDataSlave Arm, Pose, Force/Tactile Datajoint_state, pose, wrench_stamped, gripper_pos, rps_*rad, m, N/N·m; gripper_pos 0–1; rps_* scaling factors NOT inferred in V1.1 release
Rmplusbase / RmplusstateEnd-Effector Config / StatusDOFs, upper/lower limits, sys_state, dof_err, tactile arrayangle_* in 0.01°, force_* in 0.001 N; operation protocol remains reference information
WebdatacollectTeleoperation Data Collection Metadatatype, sence_id, task_id, operator_id, device_idThe original field name is sence_id. The sence_id, task_id, operator_id, and device_id fields must not be empty. Each field must be 1–128 characters in length and contain only alphanumeric characters, dots (.), underscores (_), and hyphens (-). Spaces, Chinese characters, path separators, control characters, or Shell special characters are strictly prohibited.
StringCmdJSON / Text Request & ResponseRequest data, Response dataString container ONLY; JSON schema validation, payload size, timeout, and business error checks are mandatory

Joint Indexing & Unit Conversions

Arrays are parsed in strict J1...Jn order: 7 DOFs for left/right arms, 5 for waist, 2 for head. Strict array length validation is required; auto-padding with zeros or truncating arrays is strictly prohibited.

Data SourceRaw UnitConversion to DegreesConversion to Radians
/robot_slave/states position / REST moveJ.joint0.001°degree = raw / 1000rad = raw / 1000 × π / 180
sensor_msgs/msg/JointState.positionraddegree = rad × 180 / πRaw value
Rmplusbase.angle_up/angle_low0.01°degree = raw / 100rad = raw / 100 × π / 180

Example: A raw value of 5000 in 0.001° encoding represents 5°, NOT 5000°, and NOT 5 rad. Following conversion, physical driver limits, software limits, and relative displacement delta for the current move MUST be cross-validated simultaneously.

Status & Error Codes

The arm, waist, and head telemetry sections inside /robot_slave/states typically include position, joint_en, joint_err, and sys_err. V1.1 defines evaluation rules only and does not speculate on non-zero bit meanings without an official vendor error lookup table:

  • Any non-zero element in joint_err: Automated motion for the target body part is strictly PROHIBITED; retain full error array, timestamp, and target values.
  • Non-zero sys_err: Issue immediate stop command, abort current task, and escalate to vendor error code lookup table or technical support for decoding.
  • joint_en state mismatch: Do NOT attempt automated enabling; check E-stop status, control mode, ownership tokens, and underlying fault causes first.
  • Missing fields, unparsable JSON, NaN/Inf values, or invalid DOF array lengths: Treat as INVALID state data and NEVER use previous state cache to continue motion dispatch.

Voltage, Current & Percentage Conversions

RobotPower.*_voltage fields are encoded in 0.01 V (10 mV) increments based on baseline verification; e.g., 2773 represents 27.73 V.

current is a signed hundredths-of-an-ampere integer (0.01 A / 10 mA) packed inside a uint16 container: if the raw value exceeds 32767, subtract 65536 before multiplying by 0.01 A; e.g., 65018 represents -5.18 A.

This conversion applies strictly to baseline builds; protocol definitions MUST be re-verified prior to deployment on newer software versions.

remain_percent must pass validation within the range 0–100; values exceeding bounds must be flagged as telemetry data anomalies.

Timestamps, TF Trees & Calibration

ROS Header.stamp records device publication time. The platform must also log local host reception time and clock drift; replacing message header timestamps with file copy timestamps is strictly prohibited. Duration calculations MUST use start and end timestamps originating from the same time domain.

Subscribers to /tf_static MUST use TRANSIENT_LOCAL durability QoS policy.

When joint TF trees are missing for arms/head/waist, or camera subtrees are disconnected from base_link, reliance on unified TF lookup MUST cease:

  • Robot kinematics must fall back to version-matched URDF models combined with real-time joint angles.
  • Camera geometry must fall back to verified extrinsic calibration parameters.
  • CameraInfo topics resolve camera intrinsic parameters ONLY and cannot replace camera-to-body extrinsic transforms.

Writing calibration parameters is classified as a high-risk operation requiring pre-write state snapshots, validation dataset checks, and verified rollback procedures.

MCAP Data Format Specifications

MCAP is a container format and does not automatically unify or sanitize internal ROS 2 schemas.

Every delivery recording package MUST retain:

  • Unique run ID
  • Hardware & software build versions
  • Topic names
  • Message types
  • Schema / serialization formats
  • Start and end timestamps
  • Total message counts
  • File SHA-256 hashes

Average camera frame rates MUST be calculated using count / duration where duration > 0; using single-frame inter-arrival intervals to represent overall stream frame rate is prohibited.

If parsing fails, original MCAP files MUST be retained, and automated remote cleanup must NOT be triggered.