Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 4 of 4

Thread: BNO080 Observations

  1. #1
    Senior Member
    Join Date
    Oct 2017
    Location
    Houston
    Posts
    419

    BNO080 Observations

    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.
    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	BNO080 Boards.JPG 
Views:	3 
Size:	143.9 KB 
ID:	19429  
    Attached Files Attached Files
    Last edited by Don Kelly; 03-20-2020 at 09:12 PM.

  2. #2
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    4,799
    Hi Don
    Long time. Yeah the BNO080 is kind of a neat little chip. But it was a pain to get working.

    Haven't really played with it much so can't really help you much but as long as the time between reports is fixed not sure you are going to see much difference. As a quick test you can test the time between reports and see what you get or if you have logic analyzer or scope you might be able to measure the timings.

  3. #3
    Senior Member
    Join Date
    Oct 2017
    Location
    Houston
    Posts
    419
    Hey, great to hear from you. I'm using an "if (myIMU.dataAvailable() == true)" line to grab my data, so I'm not really using a fixed time between reports. I guess I need to think about it some more. Maybe I need to try a fixed rate (like 250Hz) and see what happens.

    Interesting stuff. I'll post some things I'm seeing with the ICM-20948 soon too. I also have built a couple of nice self-balancing robots (using the ICM-20948), so will post that as well when I get a chance.

  4. #4
    Senior Member+ mjs513's Avatar
    Join Date
    Jul 2014
    Location
    New York
    Posts
    4,799
    Cool. I picked up a ICM-20948 as well but haven't really had much time to play with it or the BNO080 except to make sure they worked with the T4. One of these will get back to it.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •