Bosch BNO055 disappointments

I have started testing EFIS 19264 flying at zero ft AGL 🙂

In other words I have set it up in my car and compare magnetic compass to GPS magnetic heading and altitude to GPS altitude.

Good news is the altimeter is working wonderfully. With QNH set correctly the altitude was always within +/- 25ft of GPS altitude.

Its accelerometer is perfect.

Its gyro is OK (occasionally displays a small false roll, but recovers within a few seconds)

The magnetometer of the BNO055 is the centre of my disappointment.

The main problem is it drifts away over time by as much as 20 degrees. It doesnt hold calibration in a moving car. The calibration level goes from 3 down to 1 within minutes of driving. Resetting the unit with the stored calibration data only helps for a minute.

I think the problem is that the internal software is constantly re-calibrating the magnetometer. There is no way to disable the re-calibration in the NDOF operation mode.

The problem with heading drift could be hiding in the magnetic field distortion created by the car’s body and its electric circuits. The degradation of the calibration status is anyone’s guess.

I’ll keep testing the system in the car some more. Maybe the issue has environmental roots.

I’ll also try to contact Bosch support. Will see what they have to say about it.

If this is a limitation of BNO055 chip, then I need to look for some other alternatives.


If you use BNO055 for your systems and found the solution for compass drift, please let me know.


10 comments on “Bosch BNO055 disappointments
  1. Oleg Oleg says:

    Update on magnetometer testing.

    I bought an old-fashioned magnetic compass to check magnetic field inside my car. It turns out that electric circuits inside cars create huge distortion of the magnetic field.

    So in-car testing of the magnetometer cannot provide any valid result.
    I need to do the tests walking. Fitness, here I come! 🙂


    • José says:

      Hi Oleg. Keep us informed the results of walking tests. On ebay I bought the GY-951 9 axis AHRS. How does it compares with BNO055? Thanks.

      • Oleg Oleg says:

        Hi, I haven’t tested the GY-951 unit. BNO-055 should be better simply because it has all the “fusion” software build in and the CPU is a lot faster.
        Walking test looks OK so far. At the moment I’m working of the theory that changes in ambient magnetic field causes gyro to go a bit crazy.
        I’ll update on the result.

  2. Inexfrance says:

    Same problem for me too but in a plane, the BNO does not keep its course.
    So I modified the sketch and set up a HMC 5883, the results are excellent except in the turns with great inclination but that is not genit. cordially

  3. Rage says:

    I too ran into problems with the BNO055. I’m using it as part of a data recorder for flight testing. The BNO055 has a known issue with the algorithm for the Euler angles. If the pitch or roll exceed 45 degrees then the yaw angle jumps by 90 or 180 degrees. Quaternions are processed correctly though. I’m also having issues in turns in flight. As the accelerometer vector is still down relative to the body axis (assuming a coordinated, level turn), the BNO055 seems to think it’s still level in the earth axis. I suspect the internal Kalman filter is tuned/optimized for a terrestrial application where the acceleration vector pretty much matches the orientation. When I tested in the car everything seemed ok. Looking at flight test data, the roll axis doesn’t match (I suspect the pitch axis would be similar, but isn’t really observable given the limited pitch attitudes and rate compared to the roll axis). Compass calibration has also been an issue. Got around it in my application by reverting to relative yaw orientation (ie ignoring the magnetometers) and providing a cage function to “cage” the BNO055 yaw angle to the ground track provided by the GPS. Functions similar to a DG; still drifts, but gets me the data I need in the short term (relative yaw angles for steady heading sideslips and dutch roll evaluations). I’m afraid I may have to resort to implementing a Kalman Filter on the host processor and ditch the one in the BNO055, but at present the angular rates and accelerations provided by the raw data are sufficient to demonstrate required damping and performance. Good luck with your application.

    • Oleg Oleg says:

      Hi Rage,
      Thank you for the feedback.
      I got magnetometer problem reduced by shielding the BNO055 in a Faraday cage. Not sure yet whether it is completely cured.
      I’m also considering calculating my own Euler vectors. Having AHRS separated from display by CAN, I have some spare processing power at ARHS side.
      It would be interesting to see you Kalman Filter implementation.

  4. Oleg Oleg says:


    It seems that the problem can be fixed or significantly reduced by
    – shortening the ribbon connecting the sensor board to display board
    – enclosing the boards into aluminium case rather than plastic one.

    To be continued ….

    • Zhen says:

      Hi Oleg,

      Thank you for sharing your experience. I’m working on a project which needs +-1 degree accuracy heading and altitude information. When I’m testing the BNO055(adafruit breakout board), I find two significant problem.
      1. The repeatability is bad, i.e. if it starts from 0, when it gets back after some movement, it will give me 5 degree or more.
      2. The mag calibration level may drop after some movement or sometimes later, even I don’t test it in a car…
      Will aluminium case help to solve such two problem?
      Or you have already change to work with some other sensor?

      • Oleg Oleg says:

        I found that shielding the BNO055 unit helps a lot. In fact it helps with any magnetometer chip.
        I’m currently working on building a separate remote unit for magnetometer/giro/accelerometer.

Leave a Reply

Your email address will not be published. Required fields are marked *