Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    Is there a way to tune BMI270 Wrist Jiggle/Shake movement detector?

    Is there a way to tune BMI270 Wrist Jiggle/Shake movement detector?

    New Poster


    Our project is a wearable device which has low-power requirement and needs to detect or analyse wrist tremor behavior.Considering it is a low-power device with low performance MCU,designing algorithm and implement it on our system would take a huge lot of time and effort,we are therefore highly expecting there a IMU that have been integrated such detecting function.

    Then there goes BMI270,got a Wrist Gesture Detector,able to detect Flick-in,Flick-out,Push-arm-down,Pivot-up,Jiggle/Shake,and it's configuration settings:





    But these settings shown as above,can be only used to adjust Flick-in/Flick-out action movement.As we mainly use Jiggle/Shake detection to achieve wrist tremor sampling,we wondering if there any possibility to change Jiggle/Shake detection threshold,like irregular hand trembling,strongly of weakly hand shaking?

    And later we found this structure in bmi2_defs.h,but we don't know how to use with this:

    /*! Structure to define wrist gesture configuration for wearable variant */
    struct bmi2_wrist_gest_w_config
    /*! Wearable arm (left or right) */
    uint8_t device_position;

    /*! Minimum threshold for flick peak on y-axis */
    uint16_t min_flick_peak_y_threshold;

    /*! Minimum threshold for flick peak on z-axis */
    uint16_t min_flick_peak_z_threshold;

    /*! Maximum expected value of positive gravitational acceleration on x-axis
    * when arm is in focus pose */
    uint16_t gravity_bounds_x_pos;

    /*! Maximum expected value of negative gravitational acceleration on x-axis
    * when arm is in focus pose */
    uint16_t gravity_bounds_x_neg;

    /*! Maximum expected value of negative gravitational acceleration on y-axis
    * when arm is in focus pose */
    uint16_t gravity_bounds_y_neg;

    /*! Maximum expected value of negative gravitational acceleration on z-axis
    * when arm is in focus pose */
    uint16_t gravity_bounds_z_neg;

    /*! Exponential smoothing coefficient for adaptive peak threshold decay */
    uint16_t flick_peak_decay_coeff;

    /*! Exponential smoothing coefficient for acceleration mean estimation */
    uint16_t lp_mean_filter_coeff;

    /*! Maximum duration between 2 peaks of jiggle in samples @50Hz */
    uint16_t max_duration_jiggle_peaks;

    Did we missed something?Any suggestion would help!!


    many thanks!

    Yi Song


    3 REPLIES 3

    Community Moderator
    Community Moderator

    Hello Yi_Song,

    You could see shake gusture from BMI270 data sheet. You could adjust max_duration value to change sensitivity.

    BMI270 Shake feature.png



    Hi Robin:

    Thanks for reply firstly.

    We have done our device several tests with this max_duration you mentioned,unfortunately,it still,remains not that sensitive that we are just looking forward.Surely,this parameter could affect detecting sensitivity as we changed max_duration under certain range,which is 150 to 250 samples at 50hz(ie 3 to 5 seconds),we can also feeling the difference between different configured max_duration value. 

    But this range makes us feel very limited.We desired much less samples like down to 50 or 25( 1s or 500ms ) or even lesser,sample freq up to 100 or 150hz,when patient is suffering trembling with their hands,shaking amplitude could be this slight so that requires more sensitive detecting system.

    Any possibility to break this restrict?


    Many thanks!!

    Yi Song

    Community Moderator
    Community Moderator

    Hello Yi_Song,

    Before you used this feature, you needed to do axis remapping from BMI270 to smart device. It is necessary to ensure that the axis mapping is normal before testing. Please check your axis remapping.

    BMI270 axes orientation.png

    Smart device co-ordinate system.png