New BNO055 I2C driver for ROS

The Bosch BNO055 is an excellent IMU at its price point and extremely common among hobbyists and industry alike. Many are using it in Jetson TX1/TX2/Xavier boards over I2C, as well as other boards that have exposed I2C ports.

I found a RS232 driver for ROS, as well as an I2C driver that depended on RTIMULib, but that project looks seemingly defunct and cumbersome as an install requirement.

So for all of you BNO055 fans out there I wrote a ROS driver that doesn’t depend on anything except libic2-dev. You might need to give permissions to the ROS user by adding it to the i2c group as well.

I’ve tested this on a TX2. It should work out of the box on other Jetson boards. I haven’t yet tested it on a Raspberry Pi but you’ll need to slow down the I2C clock to use it with a BNO055 as the Pi doesn’t support clock stretching.

The calibration service isn’t implemented yet. I welcome pull requests or contributions.

3 Likes

NIce! do you think this will work natively with the Jetson Nano as well? Or will it has the same clock speed issues as a Raspberry Pi?

Thanks!

If you refer to the clock-stretching bug, that is probably unique to the rpi.

I can confirm that the Jetson Nano does not have the clock stretching bug.

(I can also confirm that this driver works on a Raspberry Pi with software i2c, although it will consume the majority of one core doing so. If you don’t need data at 100Hz, you can reduce that to cut down on CPU usage. This is not an issue with Jetsons or other platforms that support the full I2C spec including clock stretching.)

Does the Raspberry Pi 4 suffer the same clock stretching bug? Or did they fix it in the new silicon?

The rpi4 has another core so it should not be affected.

But I guess other people can better answer that question.

1 Like