-
Notifications
You must be signed in to change notification settings - Fork 64
Description
Here are my observations while using the "standard" ROS 2 driver on my robot:
-
I have three BNO055 sensors — one from Adafruit with the original Bosch chip, and two “generic carrier boards” using the GY-BNO055 chip.
Apart from the I²C address (0x28 vs 0x29), there’s no practical difference in how they behave — same data, same issues. -
The "standard" ROS 2 driver relies on smbus, while a more advanced Python package, smbus2,
offers improved integration with Linux and better overall reliability. -
When monitoring /imu/data/orientation/yaw using PlotJuggler, I noticed frequent (~1..3 seconds) spikes or jumps in the data.
It appears that neither I²C communication nor the code’s exception handling are responsible for this.
Tip: Install PlotJuggler to monitor IMU data:
sudo apt install ros-${ROS_DISTRO}-plotjuggler-ros
Run PlotJugger as a ROS2 process. It subscribes to topic's values (i.e. "imu_data" yaw) and shows them in real time:
ros2 run plotjuggler plotjuggler
I created a fork of the driver, switched to smbus2 and implemented a “sanity check” for incoming data — this fully resolved the issue.
Hopefully the same changes could be merged in the code here, I can create a pull request - let me know.