Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    BNO055 Heading Drifts

    BNO055 Heading Drifts

    joshld
    Established Member

    We appear to be getting a small number of BNO055 parts (with firmware 0x0311) come through that will ultimately see the heading drift over an extended period of time. The application requires a stationary sensor to not exceed 20 degrees in any of heading, roll or pitch over 12 hours. No issues with roll or pitch. Only heading. We have been ensuring that sensors are calibrated prior to running our tests on these few problem sensors and that they have passed self-tests. The sensors are configured for NDOF operation mode (0x0C).

    Is there more we need to be doing? Should we be monitoring the calibration status of each of system, mag, gyr and acc? Are there other register entries we should be monitoring? Is it possible to determine whether sensors are faulty at all? - this would be most useful prior to deploying them out into the field, something that does not require testing over an extended period of time (more than 10 minutes).

    Thank you in advance.

    18 REPLIES 18

    joshld
    Established Member

    Hi o_o,

    Is it necessary to re-calibrate the BNO055 each time the device is powered off and on again? Every time it is placed in a new operating environment?

    As this is something that isn't very feasible, would an alternative mode such as IMU be acceptable as we are only monitoring relative changes in angles?

    Hi joshld,

    Maybe it would be a bit easier for us to help you if you could explain a bit more in details what you are trying to measure, the required accuracy and range of expected motion of the device.

    In case of relative heading, indeed the IMU mode is a good choice, but only for a limited amount of time. Since the original post mentioned durations in the hours range, then the use of a magnetometer (or other) is paramount to calibrate the inherent heading drift with the integration of the gyroscope signal. Typically, the magnetometer data is used, but in cases where the magnetic field cannot be trusted, heading can be compensated with a GPS system, or complemented with cameras to name a few methods of compensation.

    If the rotation speed of the device does not exceed a few degrees per second, then the gyroscope is not necessarily required, and heading can be derived from accelerometer and magnetometer only (Compass and M4G modes)

    o_o

    joshld
    Established Member

    Hi o_o,

    So we are looking at staying within 20 degrees (all axes) over a 12 hour period. And after various hours of runtime the magnetic calibration is seen to drop from 3 to 0 with no noticeable changes to the device's surroundings (it is left in a lab overnight).

    Would we notice any changes in the gyro's calibration status after some time running in IMU mode? Would it be possible to monitor this bit and treat data accordingly?

    We do have access to GPS however the device remains fixed in a stationary position and so I don't believe it would be a usable alternative.

    Hi Josh,

    Indeed a GPS heading requires the device to be moving. The faster the device moves, the better the heading accuracy. Although very inaccurate at low speeds, the GPS heading has a clear advantage in that it does not drift. Of course for a stationary device, this is not useful.

    I'm still having a hard time figuring out your use-case. for 2 reasons:
    (1) "After various hours of runtime the magnetic calibration is seen to drop from 3 to 0 with no noticeable changes to the device's surroundings"
    > Your previous datalog proves otherwise, where the magnetometer offset changed dramatically. The most likely cause of this are electrical current in the vicinity of the sensor (For example, if the trace for supply current of the display backlight is near the sensor, it will cause a large offset change when the display turns off/on). Even your *good* datalog shows jumps in the magnetometer data that cannot be explained by rotation.
    > Both of your datalogs are standing still. If the device is at rest, what kind of motion are you measuring? What are the range of motions do you expect the device to experience ?

    o_o
    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