简体中文 | English
The RDK IMU module is implemented with Bosch Sensortec’s high-performance 6-axis inertial measurement unit (IMU), the BMI088, which contains a tri-axis gyroscope and a tri-axis accelerometer, both with 16-bit resolution. The BMI088 is designed for applications that require high accuracy and vibration robustness, making it especially suitable for drones and robots operating in high-vibration environments. The BMI088 supports extended ranges of ±24 g for acceleration and ±2000°/s for angular rate. It also demonstrates excellent temperature drift characteristics (low TCO/TCS) and comes factory-calibrated for stable attitude and motion sensing.
rdk-imu-module-sdk is a software development kit created by D‑Robotics for the RDK IMU module. It includes C, Python and ROS 2 components. No kernel driver is required, hardware timestamping is supported, and the build process is simple. Developers can use this SDK with their preferred language, quickly explore the RDK IMU module’s features, and build their own robotics applications on top of it.
Using the RDK X5 as an example, the connection is shown below:
Install Python build tools:
pip install setuptools wheelInstall colcon build tools:
sudo apt update
sudo apt install python3-colcon-common-extensionsInstall stress-ng:
sudo apt update
sudo apt install stress-ngIn the ./core directory run make to build everything.
Then run sudo out/test to start the test program; it prints IMU frame IDs, 6-axis data, timestamps, software FIFO remaining capacity, and real-time frequency statistics on interrupt.
Or run make test to quickly compile and run the example.
Use make install to install the header and shared library into the system environment.
In the ./core directory run make install to build and install the generated .whl and shared library into Python’s path.
Then run:
python3 examples/test_imu.pyto run the Python example.
First source your ROS 2 environment:
source /opt/xxx/xxx/setup.bashIn the ./ros2 directory run colcon build to build the ROS 2 package.
Make sure
core/lib/librdkimu.soand related files exist before building.
After the build completes, run:
source install/setup.bashto source the built package.
Launch the IMU data node with:
ros2 launch rdk_imu_module rdk_imu.launch.pyOpen another terminal, source the ROS 2 environment there as well, and verify IMU topics:
source /opt/xxx/xxx/setup.bash
ros2 topic echo /rdkimu/data
ros2 topic hz /rdkimu/dataFor detailed SDK documentation, please refer to the D‑Robotics developer community:
https://developer.d-robotics.cc
The documentation covers SDK principles, build steps, API reference, and usage notes.
The RDK IMU Module SDK lets you tune IMU parameters; available options follow the BMI088 datasheet. When adjusting ODR (output data rate), please consider the limitations of the communication interface used.
The approximate sum ODR limit (accel + gyro) for I2C can be estimated as:
where:
- f_I2C is the configured I2C bus speed in Hz (standard mode is 100 kHz);
- N_read is the number of bytes transferred on the bus per batch read, here 6 bytes (three axes × 16 bits).
Example: for RDK X5 default I2C speed f_I2C = 100 kHz, the theoretical maximum sum ODR is:
Therefore, the sum of accelerometer and gyroscope ODRs should not exceed about 1042 Hz. In real applications, also consider other devices on the bus and interrupt handling overhead; it's recommended to leave some margin.
The approximate sum ODR limit (accel + gyro) for SPI can be estimated as:
where:
- f_SPI is the configured SPI clock frequency in Hz (for example, 1 MHz);
- B_accel and B_gyro are the bytes transferred per SPI read for accel and gyro respectively (here 7 and 8).
Example: for RDK X5 default SPI speed f_SPI = 1 MHz, the theoretical maximum sum ODR is:
The SDK’s timestamps come from user‑space hardware interrupt timestamps via gpiod. The figure below shows the IMU timestamp interval under combined CPU load and memory bandwidth stress tests.
This project is open-sourced under the MIT License. See the LICENSE file.
If you have questions or suggestions, please contact us via:
Developer community: https://developer.d-robotics.cc
| Version | Date | Main changes |
|---|---|---|
v1.0.0 |
2026-06-10 | Initial release: support for 6-axis fused output and hardware timestamping |
Copyright (c) 2026 D‑Robotics.

