Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    BHI360+BMM350 Soft Iron Calibration

    BHI360+BMM350 Soft Iron Calibration

    HeyRick
    Member

    Hi,

    I'm currently evaluating your IMU BHI360+BMM350 thanks to your Shuttle Board 3.0 BHI360 in euler orientation mode connected to an esp32.
    During my tests I noticed that the hard iron bias was corrected automatically, but not the soft iron bias, so I'd like to update the SIC matrix with the one I measured in my first setup:
    SIC:
    [[ 0.89044322 -0.00155992 0.00676591]
    [-0.00155992 0.88054465 0.0088273 ]
    [ 0.00676591 0.0088273 0.97750754]]

    I believe I understand that the BSX internal binary data format is not public.
    How can I update this SIC matrix to improve precision of my current test without the BSX internal binary data format ? Using this fonction from the API:
    int8_t bhy2_set_sic_matrix(const uint8_t *sic_matrix, uint16_t matrix_len, struct bhy2_dev *dev)

    And how can I do the same in the my next tests where this matrix will change because it will be integrated in a different setup ?

    Best regards

    5 REPLIES 5

    BSTRobin
    Community Moderator
    Community Moderator

    Hi HeyRick,

    Thanks for your inquiry.
    If you already have a SIC matrix for your hardware, you can call the bhy2_set_sic_matrix() interface to update it.

    The soft magnetic calibration matrix itself for each device is usually different and is generated by specialized testing equipment.

    Hello, thank you for your reply, but what is the format of the sic matrix to be supplied to the bhy2_set_sic_matrix() function?

    When I use bhy2_get_sic_matrix(), I get a sic_matrix of 72 bytes, so I've tried to provide a sic matrix in double format (9 doubles of 8 bytes = 72 bytes), but when I request the sic_matrix again with bhy2_get_sic_matrix(), it doesn't change.

    Thank you in advance for your help.

    BSTRobin
    Community Moderator
    Community Moderator

    Hi HeyRick,

    sic_matrix does not have a publicly available format and is typically generated after calibration by testing equipment.

    Hi,

    So there's no solution for calculating and updating the sic matrix directly during the product's lifetime? Typically, our device operates close to an iron structure, and sometimes the iron structure changes and we have to recalculate an SIC by taking a sphere of points from the raw mag.

    Is there another way to compensate the soft deviation in post processing of the Euler fusion output from bhi360 ?

    Thanks

    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