Bosch Sensortec Community

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

    BHI260AP Vertical Mounting

    BHI260AP Vertical Mounting

    soroush
    Established Member

    We are performing some tests on the BHI260AP shuttle board and driving it using the provided driver on GitHub repo on our custom MCU board: https://github.com/BoschSensortec/BHY2-Sensor-API

    In our application we require to mount the sensor vertically; however, using the available remapping function for physical acc/gyro sensors as follows:

    orient_matrix.c[0] = 0; orient_matrix.c[1] = -1; orient_matrix.c[2] = 0;
    orient_matrix.c[3] = 0; orient_matrix.c[4] = 0; orient_matrix.c[5] = -1;
    orient_matrix.c[6] = 1; orient_matrix.c[7] = 0; orient_matrix.c[8] = 0;

    rslt += bhy2_set_orientation_matrix(1, orient_matrix, &bhy2);
    rslt += bhy2_set_orientation_matrix(3, orient_matrix, &bhy2);

    leads to incorrect values for virtual sensors: BHY2_SENSOR_ID_ACCBHY2_SENSOR_ID_GYRO, and BHY2_SENSOR_ID_GAMERV. It passes those two functions without error though.

    Mounting the sensor in either of the 8 orientations shown in Figure 35 of the datasheet provides expected values.  Hence, I was wondering if our vertical axes remapping was wrong or if vertical mounting is not possible with this sensor at all !!!!

    5 REPLIES 5

    BSTRobin
    Community Moderator
    Community Moderator

    Hi soroush,

    Could you provide your sensor placement and target coordinate system for your device.
    This is a example:

    Placement and Target coordinate system.png

    soroush
    Established Member

    Hi BSTRobin,

    Here is our desired mounting orientation (T for target, S for sensor):

    soroush_0-1666798570886.png

     

    BSTRobin
    Community Moderator
    Community Moderator

    Hi soroush,

    For your sensor placement and target device coordinate system, you can refer the following code to do the axis remap if you only used 6 axis.

    struct bhy2_orient_matrix acc_matrix = {0,-1,0,0,0,-1,1,0,0};
    struct bhy2_orient_matrix gyro_matrix = {0,-1,0,0,0,-1,1,0,0};

    bhy2_set_orientation_matrix(BHY2_SENSOR_ID_ACC, acc_matrix, dev);
    bhy2_set_orientation_matrix(BHY2_SENSOR_ID_GYRO, gyro_matrix, dev);

    soroush
    Established Member

    Hey BSTRobin,

    That is almost the same code we used and shared in the first post, except we use addresses of physical acc and gyro, 1 and 3 respectively, instead of virtual sensors. regardless of that, it leads to the same result. 

    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