0

已尝试为加速器 LPF 调整 android 开发人员文档,但似乎无法承受压力

    float pressure_value = 0.0f;
    float height = 0.0f;
    float height2 = (float) 964.98;
    final float alpha = (float) 0.8;


    if( Sensor.TYPE_PRESSURE == event.sensor.getType() ) {
        pressure_value = event.values[0];
        event.values[0] = alpha * event.values[0] + (1 - alpha) * event.values[0];
        event.values[1] = alpha * event.values[1] + (1 - alpha) * event.values[1];
        event.values[2] = alpha * event.values[2] + (1 - alpha) * event.values[2];

有没有人有一些见识?

4

1 回答 1

0

压力传感器只有一个值,即 event.values[0]。一个简单的低通滤波器看起来像:

pressure = alpha*event.values[0] + (1 - alpha)*pressure

极其简单的解释

对于 alpha=0.8,“新”压力值是传感器提供的实际当前压力的 80% +“旧”压力值的 20%。增加 alpha 值将使其对压力波动更敏感,较低的 alpha 值将使其噪音更小(更多过滤)。

更多解释代码:

private float alpha = 0.8f; 
private float filteredPressure = 0.0f; 

@Override
public final void onSensorChanged(SensorEvent event) {
   if (Sensor.TYPE_PRESSURE == event.sensor.getType()) { 
      float currentPressure = event.values[0]; 
      filteredPressure = (alpha*currentPressure) + (1 - alpha)*filteredPressure; 
   }
}
于 2016-11-21T08:36:57.193 回答