Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    BHI360/BMM350 quaternion magnetometer orientation

    BHI360/BMM350 quaternion magnetometer orientation

    JAS
    Member

    Hi I had a few questions about using quaternions and orientation with the BHI360 and BMM350.

    The data sheet mentions that the BMM Sensor should be oriented with the pin 1 marker rotated 180 degrees relative to the BHI360:JAS_0-1704933976833.png

     

    However the BHI360 shuttle board has the sensor orientated with a 0 degree offset:

    JAS_1-1704934037353.png

    Does this matter for 9 DOF orientation and rotation vector?

    Are other rotations valid?

    3 REPLIES 3

    BSTRobin
    Community Moderator
    Community Moderator

    Hi JAS,

    The coordinates of BHI360 and BMM350 have been mapped to the target coordinates shown on the board, and you do not need to modify the mapping on the host side.
    This is the coordinate configuration in the firmware:
    16,i2c0,20,20, 1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 400.000000, 0 #BMM350Mag on M2
    26,spi0,25,2, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 800.000000, 0 #BHI360Accel on SPI0
    25,spi0,25,-, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 800.000000, 0 #BHI360Gyro on SPI0

    Thank you. So just confirming, for quaternions, sensor orientation does not matter if you configure the orientation matrix correctly. 

    I have made a custom PCB, that does not match the orientation of the devboard/firmware.

    Is the solution to change the orientation matrix in runtime (as per 13.3.2.7)

    JAS_0-1705389271643.png

     

    Is there anything else I need to worry about?

     

    BSTRobin
    Community Moderator
    Community Moderator

    Hi JAS,
    If you use a customer PCB, you can also modify the axis mapping on the host side.
    struct bhy2_orient_matrix acc_matrix = {0, -1, 0, -1, 0, 0, 0, 0, -1};
    struct bhy2_orient_matrix gyro_matrix = {0, -1, 0, -1, 0, 0, 0, 0, -1};
    struct bhy2_orient_matrix mag_matrix = {0, 1, 0, -1, 0, 0, 0, 0, 1};
    rslt = bhy2_set_orientation_matrix(BHY2_PHYS_SENSOR_ID_ACCELEROMETER, acc_matrix, &bhy2dev);
    print_api_error(rslt, &bhy2dev);
    rslt = bhy2_set_orientation_matrix(BHY2_PHYS_SENSOR_ID_GYROSCOPE, gyro_matrix, &bhy2dev);
    print_api_error(rslt, &bhy2dev);
    rslt = bhy2_set_orientation_matrix(BHY2_PHYS_SENSOR_ID_MAGNETOMETER, mag_matrix, &bhy2dev);
    print_api_error(rslt, &bhy2dev);

    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