Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BNO055 NDOF mode works fine, but after some minutes, the heading becomes noisy while stopping.

    BNO055 NDOF mode works fine, but after some minutes, the heading becomes noisy while stopping.


    I'm using the BNO055 in NDOF mode with full calibration, and if the sensor was off all-night, it works fine for like 10-minutes the following morning, the mag euler reading is very accurate and sharp, no noise at all. After 10-minutes, that changes, the mag euler reading seems to be noisy when coming to a stop (probably moving too, but obviously can't tell for sure).

    If I move from 120 degrees to 140 degrees (or any combination of heading), it gets to 140 and instead of being rock solid and accurate like normal, it will bounce +/- 2 degrees from the actual heading, and after about 4 seconds, the bouncing stops and the heading is accurate and solid, but the same thing will happen if I move it again.

    So for example, if I went from 100 degrees to 110 degrees, the readings will look something like this:

    [111.00] <-- Device stops moving, it stops ahead of true heading
    [111.24] <-- Starts dropping
    [109.88] <-- Goes below true heading
    [110.00] <-- Normalizes at true heading

    This is a close representation of what's happening, although the readings are in the thousands of samples since it's in NDOF mode. But this very example happens everytime... It's fine when it's still, but moving it causes it to be jumpy after stopping.

    And I'll reiterate, this starts seemingly at random after ~10 minutes of operation, and if the device is acting up, restarting it does not fix the problem, it will still act up unless I leave it for an hour or so.

    I've tried many different layouts, including my own board, my own breakout board, and an adafruit breakout board, different MCUs, different software, different PCs, different power sources... I have definitively and meticulously ruled out all other hardware and software, it is for sure the BNO055 causing the issue.

    What could this be?

    4 REPLIES 4

    Community Moderator
    Community Moderator

    Hi Ixck,

    What application is BNO055 used for? What is the approximate magnetic field environment in your testing environment? What is the current calibration accuracy?
    BNO055 is not recommended for use in new designs. You can use BHI360 + BMM350 combination for new design.

    Hi, the environment is fine (I've tested and gotten the same results in different environments), the problem occurs WHEN the calibration settings reach 2 or 3, before that, it's fine.

    I've even saved the old calibration offsets to NVS, restarted the device, the Accel, Gyro and Mag calibration values are 3, but system calibration is 0. When system calibration reaches 3, the output becomes jittery/noisy again. Higher calibration is ruining the signal.

    I also don't understand how this could happen, because I'm explicitly writing the saved calibration offsets into the offset registers on startup, so any new calibration taken in the background should have no impact on the current signal, right?

    While I still don't have a solution, I think the cause is that Bosch (extremely questionnably) decided to force constant calibration, where it doesn't just save those calibration settings to the registers, but it also force the constant calibration offsets usage, meaning your saved calibration settings don't mean much.

    On second thought, I think buying sensors from a 'sensor company' that doesn't know how to make sensors work is a bad idea. I'm no genius, but Bosch clearly built and sold a disfunctional product, and there are thousands of comments online of the same opinion, the BNO 055 calibration video by Bosch is filled with comments pointing out calibration issues. Think we'll have to go with Invensense or ST...

    We're not against switching to the BHI360 + BMM350 combination, however, we'll be placing an order for somewhere in the neighborhood of 20,000 units, so we're not sure if it's a smart idea to go with Bosch if their products don't work, and there is no support to help fix them.

    Community Moderator
    Community Moderator

    Hi Ixck,

    Usually, when the calibration state reaches 3, the algorithm outputs the most reliable value. Saving the calibration profile at this time is a recommended practice.

    Can we know what product you are using BNO055 on?

    From your previous logs, it appears that the heading value changed before 109 to 111 and did not shift to 140. Can you provide more logs and attach the CALIB-STAT value printed on each line?