# Publish the IMU data with `qrb_ros_imu` The [qrb_ros_imu](https://github.com/qualcomm-qrb-ros/qrb_ros_imu) sample application publishes the inertial measurement unit (IMU) data collected from the ICM-42688 hardware on Qualcomm Robotics Platforms. It provides the following: - Composable ROS Node support. - Zero-Copy transport powered by [QRB ROS Transport](https://github.com/qualcomm-qrb-ros/qrb_ros_transport). ## Pipeline flow for `qrb_ros_imu` **`qrb_ros_imu` pipeline** The [qrb_ros_imu](https://github.com/qualcomm-qrb-ros/qrb_ros_imu/tree/main/qrb_ros_imu) is a ROS 2 package. It creates a publisher with `qrb_ros_transport` for zero-copy transport. It supports node composition, making it possible to improve performance using ROS intra-process communication. ## `qrb_ros_imu` APIs **ROS interfaces** | Interface | Name | Type | Description | | --- | --- | --- | --- | | `Publisher` | `/imu` | `sensor_msgs/msg/Imu` | Outputs the IMU data. | **ROS parameters** | Name | Type | Description | Default value | | --- | --- | --- | --- | | `debug` | bool | To measure the latency from IMU data generation to its output by the ROS node. | false | `qrb_sensor_client` **APIs** | Function | Parameters | Description | | --- | --- | --- | | `bool create_connection()` | Empty | Connect with sensor service, return `true` means create successfully. | | `void disconnect_server()` | Empty | Disconnect with sensor service. | | `bool get_imu_data(sensors_event_t ** accel_ptr, sensors_event_t ** gyro_ptr, int32_t * sample_count)` |
accel_ptr: Pointer to accelerometer data
gyro_ptr: Pointer to gyroscope data
sample_count: Number of samples available