I've been doing some testing on the BNO080 IMU and have found some things that I thought might be interesting to others. I created two perma-boards, one with T4 connected to a BNO080 via I2C, and the other a T4 connected to a BNO080 via SPI (see attached photo).
First, the BNO080 IMU is fascinating in that it has "self-calibration," meaning can keep a pretty darn good heading without going through a messy magnetometer calibration process. (Note: I do run the Sparkfun calibration sketch when I start up testing just to make sure it's starting out ok, but it's a quick process).
Would love to hear what others are finding w.r.t. the BNO080, or to get feedback on my thoughts below.
As far as a few observations:
1) The calibration process (see the Sparkfun lib for sample sketch) works pretty well. Oddly enough, though, it seems that while it's easy to get the "high" system level calibration, there's always one or two sensors that read medium. And no matter what I do, I don't seem to be able to get ALL the sensors AND the system to go high together. Nonetheless, the IMU seems to be performing really well.
2) The BNO080 internal quaternion processor seems amazingly smooth. My two sketches (below) compare the internal BNO080-calculated quaternion with one that I do with a Madgwick filter. To really visualize it, open up a Serial Plotter and compare what I'm sending out serially. I'm guessing their internal quaternion processor is running much faster than the Madgwick I'm running.
3) After running this via I2C for awhile, I thought I'd try the SPI interface. I expected to see a huge speed increase, but don't think I'm seeing that. Maybe someone has a suggestion here. Is there a simple way for me to see how fast the I2C version is running vs. the SPI version? The Sparkfun lib sets the sensor speeds using "myIMU.enableGyro(5);" for example, to set the gyro to 5ms (200Hz) updates. How do I tell what I'm really getting? The sensors should be able to be run at 400Hz, but that'd be an input of "myIMU.enableGyro(2.5);" yet only integers are allowed by the lib it seems.
Anyway, it's a fascinating sensor to work with...
Attached are some photos of my perma-boards, along with the ZIP files.
First, the BNO080 IMU is fascinating in that it has "self-calibration," meaning can keep a pretty darn good heading without going through a messy magnetometer calibration process. (Note: I do run the Sparkfun calibration sketch when I start up testing just to make sure it's starting out ok, but it's a quick process).
Would love to hear what others are finding w.r.t. the BNO080, or to get feedback on my thoughts below.
As far as a few observations:
1) The calibration process (see the Sparkfun lib for sample sketch) works pretty well. Oddly enough, though, it seems that while it's easy to get the "high" system level calibration, there's always one or two sensors that read medium. And no matter what I do, I don't seem to be able to get ALL the sensors AND the system to go high together. Nonetheless, the IMU seems to be performing really well.
2) The BNO080 internal quaternion processor seems amazingly smooth. My two sketches (below) compare the internal BNO080-calculated quaternion with one that I do with a Madgwick filter. To really visualize it, open up a Serial Plotter and compare what I'm sending out serially. I'm guessing their internal quaternion processor is running much faster than the Madgwick I'm running.
3) After running this via I2C for awhile, I thought I'd try the SPI interface. I expected to see a huge speed increase, but don't think I'm seeing that. Maybe someone has a suggestion here. Is there a simple way for me to see how fast the I2C version is running vs. the SPI version? The Sparkfun lib sets the sensor speeds using "myIMU.enableGyro(5);" for example, to set the gyro to 5ms (200Hz) updates. How do I tell what I'm really getting? The sensors should be able to be run at 400Hz, but that'd be an input of "myIMU.enableGyro(2.5);" yet only integers are allowed by the lib it seems.
Anyway, it's a fascinating sensor to work with...
Attached are some photos of my perma-boards, along with the ZIP files.
Attachments
Last edited: