Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 
    SOLVED

    BNO055: Wrong sensitivity / resolution in datasheet?

    BNO055: Wrong sensitivity / resolution in datasheet?

    Fox
    Member

    Hello there,

    i am using the BNO055 in a robot for tracking the heading via the gyroscope only.

    The BNO055 is running in AMG mode (so no fusion) with range set to 2000DPS. The datasheets states 16 LSB/°/s overall resolution/sensitivity for the gyro.

    I encountered two issues/inaccuracies with the datasheet:

    • When changing the range to 1000DPS, the resolution changes also (to ~32 LSB/°/s, i guess), but this isn't mentioned anywhere in the datasheet
    • The resolution is not 16 LSB/°/s but more in the range of 16.3-16.4 (according to my measurements)

    The datasheet of BMI055 (used in BNO055?) states a resolution/sensitivity of 16.4 and the newer BMI088 even has 16.384.

    16.384 would make sense, as this is 2^15/2000.

    Can someone please clarify this issues with the datasheet?

    Thanks!

    regards Fox

    11 REPLIES 11

    o_o
    Contributor

    Hi Fox,

     

    The gyroscope inside BNO055 is the same as BMI055 and BMI088. It has  16-bit resolution, which means that in 2000dps range, the resolution is indeed 2^15/2000.

     

    However, the BNO055 calculates the rotation in floating point, then multiplies it by 16 or 900 (depending if using degrees of radians) before converting it back to integer for the register value. Since the difference between 16.384 and 16 is only 2%, you will find that most of the time, the resolution appears to be 16.384 due to rounding error.

     

    Hi,

    thanks for the reply. But i don't understand what want to say in your last sentence.

    If all 3 ICs use the same gyro, why does the register value resolution differ (BNO055: 16, BMI055: 16.4 and  BMI088 16.384)?

    What about my issue with the changing resolution when i change the range? There is no documentation about that in the BNO055 datasheet (but in BMI055/BMI088 datashetts). What is the gyro register resolution when gyro range is set to 250DPS?

    Thanks

    o_o
    Contributor

    Hello,

    Let me rephrase. If there is difference between input and output resolution, then will either be output values that are not possible (1LSB change of input causing 2LSB change in output), or output values that are duplicate (1LSB change of inpute causing 0LSB change in output). Here is what it looks like in a graph: https://www.desmos.com/calculator/ek8sqckaq5


    If all 3 ICs use the same gyro, why does the register value resolution differ (BNO055: 16, BMI055: 16.4 and BMI088 16.384)?
    For BMI055 and BMI088, the difference is simply the rounding of the decimal places. These two products have 100% identical gyroscope.
    For BNO055, it is a bit different, since you are not reading the data directly from the gyroscope, but rather reading data from a microcontroller which processes the data and calculates sensor fusion. There, even if the true resolution of the gyroscope data is 16.384 LSB/dps, the output resolution is 16.0 LSB/dps.

    May I also here point out, that the sensitivity tolerance at room temperature is typically 1%. When considering other factor due as temperature, clock accuracy and noise, the rounding error introduced by the microcontroller is not so significant.

    What about my issue with the changing resolution when i change the range?
    I do not have at my disposal quick way to test for this and determine which case this falls in :
    a) Intended behavior -> Incorrect documentation
    b) Unintended behavior -> Correct documentation
    c) Intended behavior -> Correct documentation (Could not reproduce / incorrect interpretation)

     

    EDIT:

    After verification, the firmware that ships with BNO055 does contain bug where the gyroscope data is not scaled according to datasheet sensitivity. The gyroscope data in non-fusion mode in LSB mode is directly the raw data from the BMG160 gyroscope. Therefore, the scaling factor is 2^15/range.

    This is fixed in upcoming BNO055 firmware update and scaling factor is constant to 16.0LSB/dps. We hope to release this firmware update soon. The firmware update will come with flashing instructions, sample code, and errata.


    o_o

    Hello,

    uh great, thanks for the verification. We had a 6-7° error for one real world 360° turn, i think this bug explains the error.

    Is there any timeline when the new firmware will be released? At some point, new BNO055 ICs will we shipped with the new firmware i guess?

    Thanks

    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