# rdk-imu-module-sdk **Repository Path**: vulkan/rdk-imu-module-sdk ## Basic Information - **Project Name**: rdk-imu-module-sdk - **Description**: No description available - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-11 - **Last Updated**: 2026-10-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
简体中文 | [English](README.md) # RDK IMU Module SDK RDK IMU 模组采用 Bosch Sensortec 推出的高性能 6 轴惯性测量单元(IMU)BMI088 实现,包含一个三轴陀螺仪和一个三轴加速度计,均为 16 位精度。BMI088 专为要求高精度和抗振性能的应用场景而设计,尤其适合无人机、机器人等强震动环境中使用。BMI088具备 ±24g 加速度和 ±2000°/s 角速度的扩展量程。BMI088 具有优异的温漂表现(低 TCO/TCS),出厂已校准,可实现高稳定性的姿态与运动感知。 rdk-imu-module-sdk 是 D-Robotics 为 RDK IMU 模组开发的软件开发工具,包括 C 语言、Python 和 ROS2 部分。无需系统驱动,支持硬件时间戳,构建简单,开发者可以使用本 SDK 选择自己喜欢的开发方式,快速体验 RDK IMU 模组功能,并基于本 SDK 进行二次开发,快速构建自己的机器人应用开发项目。
--- # 🚀 快速体验 ## 1. 硬件连接 以 RDK X5 为例,连接方法如下:
--- ## 2. 环境依赖 安装 Python 构建工具 ```shell pip install setuptools wheel ``` 安装 colcon build 工具 ```shell sudo apt update sudo apt install python3-colcon-common-extensions ``` 安装 stress-ng 工具 ```shell sudo apt update sudo apt install stress-ng ``` --- ## 3. 示例运行 ### C 示例运行 在 `./core` 目录下输入 `make` 以进行全量构建。 此时 `sudo out/test` 即可启动测试用例,中断会打印输出 IMU 的帧 ID、六轴数据、时间戳、软件 FIFO 余量以及实时频率统计。 或者直接使用 `make test` 快速执行示例。 使用 `make install`/`make uninstall` 以将头文件和动态链接库安装到系统环境中或卸载。 --- ### Python 示例运行 在 `./core` 目录下输入 `make install` 以进行全量构建,并将编译生成的 `.whl` 和动态库安装到 Python Path中。 然后输入 `python3 examples/test_imu.py` 即可运行 Python 示例。 --- ### ROS2 示例运行 首先需要激活 ROS2 环境。 ```shell source /opt/xxx/xxx/setup.bash ``` 在 `./ros2` 目录输入 `colcon build` 以编译 ROS2 功能包。 > 必须保证 `core/lib/librdkimu.so` 等文件存在才可编译 编译完成后,输入 `source install/setup.bash` 安装编译的功能包。 使用 launch 方式启动 IMU 数据节点。 ```shell ros2 launch rdk_imu_module rdk_imu.launch.py ``` 另起一个终端,激活 ROS2 环境后可以使用 `ros topic` 命令验证 IMU 数据话题情况。 ```shell source /opt/xxx/xxx/setup.bash ros2 topic echo /rdkimu/data ros2 topic hz /rdkimu/data ``` --- # 📚 使用文档 SDK 的具体说明请查阅 [D-Robotics 开发者社区](https://developer.d-robotics.cc)。 使用文档说明了 SDK 的原理、构建、API和注意事项等。 --- # 💪 性能参数 RDK IMU Module SDK 支持对 IMU 进行参数调整,可选参数与 BMI088 手册一致,但在调节 ODR 频率时,需要结合使用的通信接口速率来调整ODR。 ## 对于 I2C I2C 总线的加速度计与陀螺仪 ODR 之和估算公式为: $$ \text{ODR}_{\text{sum}} \approx \frac{f_{\text{I2C}}}{2 \times N_{\text{read}} \times 9} $$ 其中: - $f_{\text{I2C}}$:用户设定的 I2C 总线速率(单位:Hz,标准模式 100 kHz); - $N_{\text{read}}$:单次批量读取时,总线上需要传输的数据字节数,此处为 **6 字节**(三轴 × 16 位)。 **示例**:对于 RDK X5 默认 I2C 速率 $f_{\text{I2C}} = 100\,\text{kHz}$,理论最大 ODR 之和约为: $$ \text{ODR}_{\text{sum}} \approx \frac{100000}{2 \times 6 \times 9} \approx 1042\text{Hz} $$ 因此,加速度计与陀螺仪 ODR 频率的和不应大于 $1042\text{Hz}$。 实际应用中,还需考虑总线其他设备、中断响应延迟等因素,建议留出部分余裕量。 ### 对于 SPI SPI 总线的加速度计与陀螺仪 ODR 之和估算公式为: $$ \text{ODR}_{\text{sum}} \approx \frac{f_{\text{SPI}}}{ (B_{\text{accel}} + B_{\text{gyro}}) \times 8 } $$ 其中: - $f_{\text{SPI}}$:用户设定的 SPI 时钟频率(单位:Hz,例如 1 MHz); - $B_{\text{accel、gyro}}$:读取加速度计和陀螺仪时,单次 SPI 传输的总字节数,此处为 7 和 8。 **示例**:对于 RDK X5 默认 SPI 速率 $f_{\text{SPI}} = 1\,\text{MHz}$,理论最大 ODR 之和约为: $$ \text{ODR}_{\text{sum}} \approx \frac{1000000}{ (7 + 8) \times 8 } = \frac{1000000}{112} \approx 8333\text{Hz} $$ ## 硬件时间戳 RDK IMU Module SDK 的时间戳来自用户态的硬件中断,基于 `gpiod` 提供的硬件时间戳实现,下图是在 CPU 占用与内存带宽 双重压力测试下的 IMU 时间戳间隔曲线。
--- # 📜 许可证 本项目基于 **MIT License** 开源,详见 [LICENSE](LICENSE) 文件。 # 📩 联系方式 如有疑问或建议,欢迎通过以下渠道联系我们: 开发者社区:https://developer.d-robotics.cc --- # 🏷️ 版本发布 | **版本号** | **发布日期** | **主要变更** | |--------|----------|----------| | `v1.0.0` | 2026.6.10 | 功能发布:支持 6 轴融合输出、硬件时间戳 | ---
**Copyright (c) 2026 D-Robotics.**