Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    BNO055 Inconsistent Quternions

    BNO055 Inconsistent Quternions

    M08
    Member

    We run the the IMU in the NDOF-Mode. 

    Several measurment cycles are done with the IMU placed at the same initial position on an even surface (every time in the same enviroment) with the z-axis up in the air.

    However the initial  quaternions show different values in each cycle, even though the initial position is always exactly the same. In a measurment cycle the IMU is moved and rotated.

    E.g.

    Cycle 1:  q=(16381, -143, -278, 0)

    Cycle 2: q=(-15826, 89, 292, -4227)

    Cylce 3: q=(-16343, 217, 377, -1080)

    ...

    What are we doing wrong?

    Thanks in Advance!

     

    12 REPLIES 12

    btruden_henway
    Long-established Member

    Hi M08,

    I note that the BNO055 works in a different way than the BHI260, the one that I'm familiarized with. In the BHI you can enable different virtual sensor services, which is something that Android uses as a "standard".

    I guess it'll be better to wait for the moderator's reply then.

    BR

    Ok, thank you anyway

    BSTRobin
    Community Moderator
    Community Moderator

    Hello M08,

    Befor your measurement, what is the calibration status?

    After several measurment cycles are done with the IMU placed at the same initial position, what is the Euler angle like?

    @btruden_henway, thanks for your kindly support.

    Hello BSTRobin,

    thank you for your reply!

    The device is calibrated as described in the data sheet, the calibration values are stored and loaded after the device is powered on.

    Our outputs are quaternions, but we can convert them to Euler angles in Matlab with the function quat2eul(Convert quaternion to Euler angles - MATLAB quat2eul - MathWorks Deutschland)

    It is important to mention that we use the default axis orientation 

    M08_0-1644342575533.png

    (BST_BNO055_DS000_12 (adafruit.com))

    During a so called measurment cycle the device is rapidely moved and then placed again at the inital position. The values provided below are all taken before each cycle, when the device is static in the inital position. Furthermore the measurment enviroment is always the same.

    We also have different inital positons:

    e.g. Inital Position: Device lays flat on surfsce with z-axis pointing upwards in the air:

    1st Cycle:  eul=[0.0170 -1.9444 -1.0006] °

    2nd Cycle: eul=[ 29.9262 -1.8125 -1.1289]  °

    3rd Cycle:eul=[ 7.5989 -2.5308 -1.6895]°

    ...

    e.g. Inital Position: Device stands straight on the surface with y-axis pointing upwards in the air:

    1st Cycle:  eul=[ 1.5531 0.6228 90.0282] °

    2nd Cycle: eul=[ -9.8885 0.9895 89.5024] °

    ...

    e.g. Inital Position: Device lays sidwards  on the surface with x-axis pointing downwards to the ground:

    1st Cycle:  eul=[-170.9194 80.3253 -171.5348] °

    2nd Cycle: eul=[ -104.1167 83.7994 -167.6938] °

    ...

    The angles are presented in degrees

     

    The issue seems to be with the yaw angle. 

    Hello BSTRobin,

    thank you for your reply!

    The device is calibrated as described in the data sheet, the calibration values are stored and loaded after the device is powered on.

    Our outputs are quaternions, but we can convert them to Euler angles in Matlab with the function quat2eul

    It is important to mention that we use the default axis orientation 

    During a so called measurment cycle the device is rapidely moved and then placed again at the inital position. The values provided below are all taken before each cycle, when the device is static in the inital position. Furthermore the measurment enviroment is always the same.

    We also have different inital positons:

    e.g. Inital Position: Device lays flat on surfsce with z-axis pointing upwards in the air:

    1st Cycle:  eul=[0.0170 -1.9444 -1.0006] °

    2nd Cycle: eul=[ 29.9262 -1.8125 -1.1289]  °

    3rd Cycle:eul=[ 7.5989 -2.5308 -1.6895]°

    ...

    e.g. Inital Position: Device stands straight on the surface with y-axis pointing upwards in the air:

    1st Cycle:  eul=[ 1.5531 0.6228 90.0282] °

    2nd Cycle: eul=[ -9.8885 0.9895 89.5024] °

    ...

    e.g. Inital Position: Device lays sidwards  on the surface with x-axis pointing downwards to the ground:

    1st Cycle:  eul=[-170.9194 80.3253 -171.5348] °

    2nd Cycle: eul=[ -104.1167 83.7994 -167.6938] °

    ...

    The angles are presented in degrees

     

    The issue seems to be with the yaw angle. 

    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