Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    BNO055 data reliability based on calibration status

    BNO055 data reliability based on calibration status

    atto
    Member

    Hello,

    I am working on the calibration of the BNO055. Instability of system calibration status in current firmware has been discussed before in other posts. I have found basically two answers for this:

    Case 1: It is suggested to ignore the system calibration value as long as the calibraton status of the other sensors are 3 (https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/BNO055-Calibration-Staus-not-stable/td-p...).

    Case 2: Only the status of the system calibration should be considered after reusing a calibration profile (https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/BNO055-Sensor-Calibration-reuse-magnetom...).

    Considering the above cases, these are my questions:

    1. Usually after a POR, all calibration status = 3, but sometimes the sensors calibration status = 3 and sys remains 0. What should be done in this case? Can the data be trusted if sys = 0 after a POR?

    2. Unlike case 1, I found that when running in NDOF mode, if sys = 0, the data should be ignored: “The reason is that system cal '0' in NDOF mode means that the device has not yet found the 'north pole', and orientation values will be off  The heading will jump to an absolute value once the BNO finds magnetic north (the system calibration status jumps to 1 or higher) (taken from: (https://learn.adafruit.com/adafruit-bno055-absolute-orientation-sensor/device-calibration?view=all).”

              2.1 So, is the data reliable when sys = 0 in NDOF mode, or not? Considering that case 1 says the opposite.

              2.2 Is the data reliable when sys = 0 when using a non-fusion mode?

    3. I am writing the calibration profile to flash memory to reuse later. Considering case 2, after writing the calibration offsets and radius to the BNO055, to verify that the calibration profile was written correctly,

             3.1 is it enough to verify that sys = 3?

              3.2 This is not contradictory with case 1, where it is said that the value of sys is not reliable?

    4. In the case where sys = 3, but other sensors = 0, how can this happen? Don't the other sensors need to be fully calibrated for sys = 3?

    5. The BNO055 Quick Start Guide says that it is highly recommended to check the magnetometer's calibration status periodically to recalibrate it when = 1. Does this apply when running in non-fusion mode, as well as in fusion mode? I understand that in fusion mode the autocalibration runs in the background, which makes me conclude that it is not necessary to check the calibration status.

    Thank you in advance for the clarification!

    5 REPLIES 5

    BSTRobin
    Community Moderator
    Community Moderator

    Hello atto,

    1.Unlike the accelerometer and gyroscope, the magnetometer calibration is mandatory immediately after every "power on reset" in order for sensor fusion
    to create accurate results. So after a POR, you should do calibration according the instructions on the document.

    2.1 After POR, you should do ACC, GYRO, MAG calibration until sys > 0;

    2.2 Except for NDOF mode, once sensor(ACC, GYRO, MAG) finished calitation, data were valid;

    3 "Once the device is calibrated, the calibration data will be kept until the BNO is powered off.The BNO doesn't contain any internal EEPROM, though, so you will need to perform a new calibration every time the device starts up, or manually restore previous calibration values yourself."

    4.If sys=3, other accuracy=0, it needs to do calibration for ACC, GYRO, MAG. Refer "Calibration " section in data sheet, calibration status from AN.

    https://www.bosch-sensortec.com/media/boschsensortec/downloads/application_notes_1/bst-bno055-an007....

    BNO055 Calibration status.png

     

    Hello BSTRObin,

    Thank you for your reply. Please find some comments:

    1. Sorry I did not explain myself correctly: After a POR, I do a calibration procedure and wait until the calibration status = 3, but sometimes the sensors calibration status = 3 and sys remains at 0 and never changes. What should be done in this case? Can I just ignore the status of sys if the other status are 3?

    2.1 I do a calibration procedure after POR. I mean later, is the data reliable when sys = 0 in NDOF mode?

    2.2 That means, except for NDOF mode, the value of sys can be ignored if the other sensors status = 3? What happens in the case of NDOF mode?

    3. I am using the flash memory of the microcontroller, and reusing a previous calibration profile.

    4. Sometimes even after a calibration procedure I still get sys = 3 and another state = 0, and it never changes. Any idea why this is happening?

    5. Yes, exactly, that's where I got the information to ask my question.

    Thank you for your time.

    BSTRobin
    Community Moderator
    Community Moderator

    Hello atto,

    For 1, 2.1, 2.2, Please refer "The sensors are factory trimmed to reasonably tight offsets, meaning you can get valid data even before the calibration process is complete, but particularly in NDOF mode you should discard data as long as the system calibration status is 0 if you have the choice.", "When running in NDOF mode, any data where the system calibration value is '0' should generally be ignored".

    4.Which mode you used? What is the meaning of "I still get sys = 3 and another state = 0"?

    Hello BSTRobin,

    Thank you for your reply.

    4. I was using AMG mode. After performing a calibration procedure, the calibration status of the sensors is 3, but the system calibration status remains at 0 and never changes. This doesn't always happen, sometimes the system calibration status is 3.

    It seems to be a firmware bug (https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/BNO055-Calibration-Staus-not-stable/m-p/...). I'll do more testing with NDOF and see what happens.

    Thank you for your time!

    Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist