Skip to content

frequent spikes or jumps in the quaternion data. #80

@slgrobotics

Description

@slgrobotics

Here are my observations while using the "standard" ROS 2 driver on my robot:

  1. 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.

  2. The "standard" ROS 2 driver relies on smbus, while a more advanced Python package, smbus2,
    offers improved integration with Linux and better overall reliability.

  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions