adsp gsensor 校准失败问题

1.校准接口

工模调用 SensorUserCal.performUserCal 方法进行校准
(import com.qualcomm.qti.sensors.core.sensortest.SensorUserCal;

这里写图片描述


2.根据打印log解决问题

关键字 : “user_cal_algo|sensor_user_cal”

diff --git a/vendor/qcom/proprietary/sensors/dsps/sensortest/jni/src/sensor_user_cal_algo.c b/vendor/qcom/proprietary/sensors/dsps/sensortest/jni/src/sensor_user_cal_algo.c
index 844eb34..3173c8d 100755
--- a/vendor/qcom/proprietary/sensors/dsps/sensortest/jni/src/sensor_user_cal_algo.c
+++ b/vendor/qcom/proprietary/sensors/dsps/sensortest/jni/src/sensor_user_cal_algo.c
@@ -189,9 +189,11 @@ user_cal_scm_update( user_cal_state_s *state, user_cal_input_s *input,
       state->variance[i] = ( state->sampleSqSum[i] -
           ( varT / config->numSamples ) )  / config->numSamples;

+        LOGE("zch----state->variance[%d] = %d, varianceThold = %d",i,state->variance[i],state->config.varianceThold);
+    //if(0)
       if( state->variance[i] > state->config.varianceThold )    // 2.此条件不满足导致工模校准不过(因为单位时间内xyz轴数值变化的范围大于标准值)
       {
-        LOGW( "%s: Variance exceeded, restarting algorithm. index: %i; variance: %"PRIi64"; variance threshold: %"PRIi64,
+        LOGW( "zch----%s: Variance exceeded, restarting algorithm. index: %i; variance: %"PRIi64"; variance threshold: %"PRIi64,
             __FUNCTION__, i, state->variance[i], state->config.varianceThold );

         //indicate motion state detected, reset algorithm state


@@ -473,7 +478,7 @@ calc_sensor_bias( uint8_t sensor_type, uint8_t data_type, int32_t **bias_result
         &g_user_cal_control->cb_mutex, &ts );
     if( ETIMEDOUT == result_status )
     {
-      LOGE( "%s: Request timed-out", __FUNCTION__ );
+      LOGE( "zch-----%s: Request timed-out", __FUNCTION__ );  // 1.打印失败原因为超时
       g_user_cal_control->error = ERROR_TIMEOUT;
       break;
     }

@@ -515,7 +521,9 @@ user_cal_init()
   g_user_cal_control->state.config.numSamples = 64;

   // Threshold values only correct for 6050 Accel
-  g_user_cal_control->state.config.varianceThold = (int64_t)(FX_CONV(FX_FLTTOFIX_Q16(0.000944),16,32));
+  //g_user_cal_control->state.config.varianceThold = (int64_t)(FX_CONV(FX_FLTTOFIX_Q16(0.000944),16,32));
+    g_user_cal_control->state.config.varianceThold = (int64_t)(FX_CONV(FX_FLTTOFIX_Q16(0.002944),16,32));  // 3.修改:增大 varianceThold (因为单位时间内xyz轴数值变化的范围标准)
+
   g_user_cal_control->state.config.bias_thresholds[0] = FX_FLTTOFIX_Q16(0.15*G);  // x-axis bias
   g_user_cal_control->state.config.bias_thresholds[1] = FX_FLTTOFIX_Q16(0.15*G);  // y-axis bias
   g_user_cal_control->state.config.bias_thresholds[2] = FX_FLTTOFIX_Q16(0.15*G);  // z-axis bias

3.45度

x = 4.9
y = 4.9
z = 6.9

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值