Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    Orientation matrix for BHI260 and BMM150

    Orientation matrix for BHI260 and BMM150

    zkz
    New Poster

    I have BHI260AP+BMM150 but could not get the orienation mapping matrix correct. At present, both heading and pitch (from euler format) are 180 degrees off.

    I have attached the target coordinate and sensor placement as below.

    bhi260-bmm155-orientation.drawio.png

     

    The matrix I use for BHI260 is (0,-1, 0,-1, 0, 0, 0, 0,-1)

    for BMM150 it is (1, 0, 0, 0, 1, 0, 0, 0, 1)

    Am I wrong in those?

    4 REPLIES 4

    BSTRobin
    Community Moderator
    Community Moderator

    Hi zkz,

    Your matrix for BHI260 and BMM150 are correct.
    What is about the firmware and software code you used?

    Thanks BSTRobin.

    I build the firmware myself using the SDK from https://www.bosch-sensortec.com/products/smart-sensors/bhi260ap/#software

    I took the reference cfg: Bosch_APP30_SHUTTLE_BHI260_aux_BMM150.cfg, and changed the physical sensor section as below:

    #Physical Drivers
    #DriverID,Bus,Addr,GPIO,Cal0,Cal1,Cal2,Cal3,Cal4,Cal5,Cal6,Cal7,Cal8,Off0,Off1,Off2,maxRate,Range
    32,spi0,25,2, 0,-1, 0,-1, 0, 0, 0, 0,-1, 0, 0, 0, 800.000000, 0 #BHI260Accel
    33,spi0,25,-, 0,-1, 0,-1, 0, 0, 0, 0,-1, 0, 0, 0, 800.000000, 0 #BHI260Gyro
    24,spi0,25,-, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 50.000000, 0 #BMM150Mag_aux

    Then I rebuild the firmware by: ./build.sh Bosch_APP30_SHUTTLE_BHI260_aux_BMM150

    I use bhy2_parse_orientation() to parse sensor data into heading, pitch and roll, and found the 180 degrees offsets.

    I dig into this a bit further. When I read the orientation matrices in my host code via bhy2_get_orientation_matrix() call, the matrices are different from what I put in cfg.

    For accel and gyro, I got: 0 1 0 -1 0 0 0 0 1

    For magnet, I got: 1 0 0 0 -1 0 0 0 -1

    I don't know where these matrix values are from. Are there some default values? Why the values in cfg does not take effect?

    Thanks BSTRobin for confirming the matrices.

    I built the firmware myself by using the SDK from https://www.bosch-sensortec.com/products/smart-sensors/bhi260ap/#software

    I changed the cfg file: Bosch_APP30_SHUTTLE_BHI260_aux_BMM150.cfg, updating the matrices as below:

    #Physical Drivers
    #DriverID,Bus,Addr,GPIO,Cal0,Cal1,Cal2,Cal3,Cal4,Cal5,Cal6,Cal7,Cal8,Off0,Off1,Off2,maxRate,Range
    32,spi0,25,2, 0,-1, 0,-1, 0, 0, 0, 0,-1, 0, 0, 0, 800.000000, 0 #BHI260Accel
    33,spi0,25,-, 0,-1, 0,-1, 0, 0, 0, 0,-1, 0, 0, 0, 800.000000, 0 #BHI260Gyro
    24,spi0,25,-, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 50.000000, 0 #BMM150Mag_aux

    Then I rebuilt the firmware via: ./build.sh Bosch_APP30_SHUTTLE_BHI260_aux_BMM150

    In the host code, I use bhy2_parse_orientation() to get the heading, pitch and roll.

    Actually, I found the issue seems to be the matrices in cfg file do not take effect.

    I printed out the matrices via bhy2_get_orientation_matrix() and they are different from those in cfg file.

    If I call bhy2_set_orientation_matrix() in the host code to set all three sensors, the result looks ok.

    So the question is why orientation matrices in cfg do not have effect?

    BSTRobin
    Community Moderator
    Community Moderator

    Hi zkz,

    You can use the existed fw on GitHub first to test for any issues you may encounter.

    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