Omnidirectional Perception System Interface
About 3544 wordsAbout 12 min
Developers can conveniently access robot status, send control commands, and implement complex task programming and integration through standard ROS 2 communication mechanisms, including Topics, Services, and Actions.
Topic: A subscription‑based communication mechanism. Subscribers register for a specific topic, and publishers send messages to all registered subscribers based on the subscription list. This mechanism is primarily used for medium‑to‑high frequency or continuous data exchange.
Service: A request‑reply communication mechanism. Data retrieval or operations are performed via service requests. It is suitable for low‑frequency interactions or mode‑switching operations.
Action: A persistent, stateful communication mechanism designed for long‑running tasks. It supports real‑time status feedback and task cancellation during execution, making it ideal for complex motion control and task execution.
Interface Description
The Omni-directional Perception System Interface is used to acquire raw sensor data (binocular/chassis camera image streams, multi-part IMUs, LiDAR point cloud).
Binocular Camera
Use the standard sensor_msgs/Image message type
| Topic | /camera/left_eye |
|---|---|
| Effective Version | ≥V0.2 |
| Access Method | Subscribe
|
| Interface Description | Real-time acquisition of image data and parameters from the left eye of the binocular camera |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc., frame_id=“left_eye" (左目) |
| uint32 height: Image height (number of rows) | |
| uint32 width: Image width (number of columns) | |
| string encoding: Image encoding format | |
| uint8 is_bigendian: Byte order identifier, where 0 indicates little endian, 1 indicates big endian, and the value is usually 0 | |
| uint32 step: number of bytes per row, step = width * number of bytes per pixel | |
| uint8[] data: Image data body (stored row by row), data length = height * step |
| Topic | /camera/right_eye |
|---|---|
| Effective Version | ≥V0.2 |
| Access Method | Subscribe
|
| Interface Description | Real-time acquisition of image data and parameters from the right eye of the binocular camera |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc., frame_id=“right_eye" (右目) |
| uint32 height: Image height (number of rows) | |
| uint32 width: Image width (number of columns) | |
| string encoding: Image encoding format | |
| uint8 is_bigendian: Byte order identifier, where 0 indicates little endian, 1 indicates big endian, and the value is usually 0 | |
| uint32 step: number of bytes per row, step = width * number of bytes per pixel | |
| uint8[] data: Image data body (stored row by row), data length = height * step |
| Topic | /camera/kfc_compressed |
|---|---|
| Effective Version | ≥V0.2 |
| Access Method | Subscribe
|
| Interface Description | Acquire compressed images from the binocular camera in real time |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc., header.frame_id=“kfc_compressed" |
| string format: Specifies the compression format of the image, which is fixed as "jpeg". | |
| uint8[] data: Stores the compressed image byte data in JPEG format (ByteFlow of JPEG file) |
| Topic | /camera/left_eye_resize |
|---|---|
| Effective Version | ≥V0.2 |
| Access Method | Subscribe
|
| Interface Description | Obtain the resized left-eye image in real time |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc., header.frame_id=“left_eye_resize" |
| uint32 height: Image height (number of rows) | |
| uint32 width: Image width (number of columns) | |
| string encoding: Image encoding format | |
| uint8 is_bigendian: Byte order identifier, where 0 indicates little endian, 1 indicates big endian, and the value is usually 0 | |
| uint32 step: number of bytes per row, step = width * number of bytes per pixel | |
| uint8[] data: Image data body (stored row by row), data length = height * step |
| Topic | /camera/right_eye_resize |
|---|---|
| Effective Version | ≥V0.2 |
| Access Method | Subscribe
|
| Interface Description | Obtain the resized right-eye image in real time |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc., header.frame_id=“right_eye_resize" |
| uint32 height: Image height (number of rows) | |
| uint32 width: Image width (number of columns) | |
| string encoding: Image encoding format | |
| uint8 is_bigendian: Byte order identifier, where 0 indicates little endian, 1 indicates big endian, and the value is usually 0 | |
| uint32 step: number of bytes per row, step = width * number of bytes per pixel | |
| uint8[] data: Image data body (stored row by row), data length = height * step |
| Topic | /camera/kfc_calib_data |
|---|---|
| Effective Version | ≥V0.3 |
| Access Method | Subscribe
|
| Interface Description | Obtain camera intrinsic parameter information in real time |
| Interface Parameters | string data: Camera intrinsic parameter information, formatted as JSON, containing key parameters such as the camera's focal length, principal point, distortion coefficients, etc., as well as the camera's calibration parameters. |
Front and Rear Chassis Cameras
Use ROS standard message structure
| Topic | /orbbec/front/rgb |
|---|---|
| Effective Version | ≥V0.3 |
| Access Method | Subscribe
|
| Interface Description | Obtain the color RGB image of the front chassis camera |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc., header.frame_id="chassis_camera_front_link" (front) |
| Topic | /orbbec/front/depth |
|---|---|
| Effective Version | ≥V0.3 |
| Access Method | Subscribe
|
| Interface Description | Obtain the depth map of the front chassis camera |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc., header.frame_id="chassis_depth_front_link" (front) |
| Topic | /orbbec/front/camera_info |
|---|---|
| Effective Version | ≥V0.3 |
| Access Method | Subscribe
|
| Interface Description | Obtain the camera intrinsic parameters and distortion information of the front chassis camera |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc., header.frame_id="chassis_camera_front_link" (front) |
| Topic | /orbbec/rear/rgb |
|---|---|
| Effective Version | ≥V0.3 |
| Access Method | Subscribe
|
| Interface Description | Obtain the color RGB image of the rear chassis camera |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc., header.frame_id="chassis camera_rear_link" (rear) |
| Topic | /orbbec/rear/depth |
|---|---|
| Effective Version | ≥V0.3 |
| Access Method | Subscribe
|
| Interface Description | Obtain the depth map of the rear chassis camera |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc., header.frame_id="chassis_depth_rear_link" (rear) |
| Topic | /orbbec/rear/camera_info |
|---|---|
| Effective Version | ≥V0.3 |
| Access Method | Subscribe
|
| Interface Description | Obtain the camera intrinsic parameters and distortion information of the rear chassis camera |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc., header.frame_id="chassis_camera_rear_link" (rear) |
Wrist Camera
Use the standard ros2 message sensor_msgs/Image
| Topic | /camera_l/color/image_rect_raw |
|---|---|
| Effective Version | ≥V0.3.0 |
| Access Method | Subscribe
|
| Interface Description | Real-time acquisition of color RGB images from the left wrist camera |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc. |
| uint32 height: Image height (number of rows) | |
| uint32 width: Image width (number of columns) | |
| string encoding: Image encoding format | |
| uint8 is_bigendian: Byte order identifier, where 0 indicates little endian, 1 indicates big endian, and the value is usually 0 | |
| uint32 step: number of bytes per row, step = width * number of bytes per pixel | |
| uint8[] data: Image data body (stored row by row), data length = height * step |
| Topic | /camera_l/depth/image_rect_raw |
|---|---|
| Effective Version | ≥V0.3.0 |
| Access Method | Subscribe
|
| Interface Description | Obtain the depth map of the left wrist camera in real time |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc. |
| uint32 height: Image height (number of rows) | |
| uint32 width: Image width (number of columns) | |
| string encoding: Image encoding format | |
| uint8 is_bigendian: Byte order identifier, where 0 indicates little endian, 1 indicates big endian, and the value is usually 0 | |
| uint32 step: number of bytes per row, step = width * number of bytes per pixel | |
| uint8[] data: Image data body (stored row by row), data length = height * step |
| Topic | /camera_r/color/image_rect_raw |
|---|---|
| Effective Version | ≥V0.3.0 |
| Access Method | Subscribe
|
| Interface Description | Real-time acquisition of the color RGB image from the right wrist camera |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc. |
| uint32 height: Image height (number of rows) | |
| uint32 width: Image width (number of columns) | |
| string encoding: Image encoding format | |
| uint8 is_bigendian: Byte order identifier, where 0 indicates little endian, 1 indicates big endian, and the value is usually 0 | |
| uint32 step: number of bytes per row, step = width * number of bytes per pixel | |
| uint8[] data: Image data body (stored row by row), data length = height * step |
| Topic | /camera_r/depth/image_rect_raw |
|---|---|
| Effective Version | ≥V0.3.0 |
| Access Method | Subscribe
|
| Interface Description | Obtain the depth map of the right wrist camera in real time |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc. |
| uint32 height: Image height (number of rows) | |
| uint32 width: Image width (number of columns) | |
| string encoding: Image encoding format | |
| uint8 is_bigendian: Byte order identifier, where 0 indicates little endian, 1 indicates big endian, and the value is usually 0 | |
| uint32 step: number of bytes per row, step = width * number of bytes per pixel | |
| uint8[] data: Image data body (stored row by row), data length = height * step |
IMU Sensor (Inertial Measurement Unit)
Use the ROS2 standard sensor_msgs/Imu.msg message type
| Topic | /imu/chassis/refined |
|---|---|
| Effective Version | ≥V0.2 |
| Access Method | Subscribe
|
| Interface Description | Real-time acquisition of chassis IMU motion states, including attitude (quaternion), angular velocity, linear acceleration, and covariance |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc., header.frame_id = "imu_chassis_link"
|
orientation: Chassis attitude (quaternion [x, y, z, w], satisfying x² + y² + z² + w² = 1), describing pitch, roll, and yaw angles
| |
| float64[9] orientation_covariance: Orientation covariance, a 3x3 covariance matrix that reflects the uncertainty of the orientation measurement | |
angular_velocity: The angular velocity of the chassis rotating around the x/y/z axes, with the unit of radians per second (rad/s)
| |
| float64[9] angular_velocity_covariance: Angular velocity covariance, a 3x3 covariance matrix that reflects the uncertainty of angular velocity measurements | |
linear_acceleration: The linear acceleration of the chassis along the x/y/z axes, with the unit of m/s²
| |
| float64[9] linear_acceleration_covariance: Acceleration covariance, a 3x3 covariance matrix that reflects the uncertainty of linear acceleration measurements |
LiDAR
Use the standard ROS2 message sensor_msgs/LaserScan.msg format
| Topic | /laser_scan/front |
|---|---|
| Effective Version | ≥V0.2 |
| Access Method | Subscribe |
| Interface Description | Real-time acquisition of the scanning data from the front lidar, including information such as angle, time, distance, and intensity |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc., header.frame_id = "laser_forward_link"
|
| float32 angle_min: Starting angle, unit in radians (rad) | |
| float32 angle_max: End angle, unit in radians (rad) | |
| float32 angle_increment: The angular interval between two adjacent points, with the unit of radians (rad) | |
| float32 time_increment: Sampling time interval between two adjacent points, with the unit of s | |
| float32 scan_time: Total time taken for one full scan, with the unit of s | |
| float32 range_min: Minimum effective ranging value, unit: m | |
| float32 range_max: Maximum effective ranging value, unit: m | |
| float32[] ranges: Distance data, array length = total number of scan points (calculated from angle_min, angle_max, angle_increment), unit: m | |
| float32[] intensities: Laser reflection intensity data, with the same length as the ranges array, reflecting the difference in target reflectivity |
| Topic | /laser_scan/rear |
|---|---|
| Effective Version | ≥V0.2 |
| Access Method | Subscribe |
| Interface Description | Obtain the point cloud of the rear lidar in real time |
| Interface Parameters | header: Standard message header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc., header.frame_id = "laser_back_link"
|
| float32 angle_min: Starting angle, unit in radians (rad) | |
| float32 angle_max: End angle, unit in radians (rad) | |
| float32 angle_increment: The angular interval between two adjacent points, with the unit of radians (rad) | |
| float32 time_increment: Sampling time interval between two adjacent points, with the unit of s | |
| float32 scan_time: Total time taken for one full scan, with the unit of s | |
| float32 range_min: Minimum effective ranging value, unit: m | |
| float32 range_max: Maximum effective ranging value, unit: m | |
| float32[] ranges: Distance data, array length = total number of scan points (calculated from angle_min, angle_max, angle_increment), unit: m | |
| float32[] intensities: Laser reflection intensity data, with the same length as the ranges array, reflecting the difference in target reflectivity |
Odometry data publishing interface
Use the standard ROS2 message nav_msgsOdometry
| Topic | /feedback/odom |
|---|---|
| Effective Version | ≥V0.2 |
| Access Method | Publish
|
| Interface Description | Output robot odometry data, including pose, motion speed, and coordinate system information |
| Interface Parameters | header, containing metadata such as timestamp (stamp), coordinate system (frame_id), etc., frame_id = "odom" (Odometry coordinate system, which associates the map with robot motion) |
| float64[] pose.pose.position: Position matrix in Cartesian coordinate system, formatted as [x,y,z], with unit of m | |
| float64[] pose.pose.orientation: Pose (quaternion) in Cartesian coordinates, formatted as [x,y,z,w] | |
| child_frame_id = "base_footprint" (Robot chassis center coordinate system, associated with odometry and body motion) | |
| twist { // motion speed float64[] linear: Linear velocity, formatted as [linear.x, linear.y, linear.z], with units of m/s and a value range of [-1.0, 1.0] float64[] angular: Angular velocity, formatted as [angular.x, angular.y, angular.z], with units of radians per second (rad/s), and a value range of [-1.0, 1.0] } |