Bosch Sensortec Community

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

    BHI260AB Game Rotation Vector drift over time

    BHI260AB Game Rotation Vector drift over time

    btruden_henway
    Long-established Member

    Hi,

    I'm using the BHI260AB hosted by an STM32.

    In my application, I use the Game Rotation Vector for getting the current orientation of the device. But I noted that if I apply a constant vibration (3Hz) on the device, the Game Rotation Vector quaternion got from the chip starts shifting over time. The vibration applied is really slow and has low amplitude, it's just a subtle shaking of the device.

    At the beginning of the test the resulting quaternion of the Game Rotation Vector was:

    • w=0.7987
    • x=0.4669
    • y=-0.1874
    • z=-0.3300

    After 1 minute of shaking the device, the resulting quaternion on the same position was:

    • w=0.8357
    • x=0.4942
    • y=-0.1187
    • z=-0.2078
    1. What could be happening? Is there something related to the filtering of the accelerometer and the gyroscope used by the BHI?
    2. Or is it something related to the BSX algorithm that calculates the Game Rotation virtual sensor?
    3. Is there something I can do to solve this issue? 

    Thanks!

    18 REPLIES 18

    btruden_henway
    Long-established Member

    Hi BSTRobin,

    The device is mounted on a testing device that has some external reference marks for having known positions.

    Besides that, please answer if is it possible that the Game Rotation Vector drifts over time?

    As far as I know, the main difference between the Rotation Vector and the Game Rotation Vector is that the first one is based on the accel/gyro/mag, while the second one is based on accel/gyro.

    So the Rotation Vector creates an absolute frame of reference that depends on two absolute magnitudes: gravity and Earth's magnetic field. Which are perpendicular to each other.

    On the other hand, the Game Rotation Vector is based only on gravity. So, I suppose that for getting the actual position of the device, the Fusion algorithms must basically integrate the acceleration and velocity of the accelerometer and gyroscope respectively. And we know that integration means the accumulation of errors over time. 

    So I just want to be sure if all this is correct, maybe the Fusion library does something else, but I don't think so.

    Thanks!

    Hello btruden_henway,

    Have you calibrated the sensor before using it? Because the sensor may calibrate it self during usage. We need to make sure accuracy of both accel and gyro are 3 before using other virtual sensor.

    btruden_henway
    Long-established Member

    Hi BSTRobin,

    Yes, I've calibrated the sensor before using it. I follow the steps explained in this video:

    https://www.youtube.com/watch?v=Bw0WuAyGsnY

    BR

     

    Hello btruden_henway,

    The video is for BNO055, and it really works for BNO055. But it does not work for BHI260. The accuracy for accel would not change if I use the same way as BNO055.
    So you should use the traditional 6 direction calibration method for accelerometer, and make sure both accuracy of accelerometer and gyro to be 3 before using game rotation vector.

    btruden_henway
    Long-established Member

    Hi BSTRobin,

    What is the "traditional 6 direction calibration method" exactly? Is that a static offset compensation or is it a dynamic calibration procedure (similar to the BNO video I sent)?

    Could you please give me further details about that 6 direction calibration?

    BR

    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