首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TYPE_ACCELEROMETER移除重力,t/(t+dT)的含义

TYPE_ACCELEROMETER移除重力,t/(t+dT)的含义
EN

Stack Overflow用户
提问于 2016-02-04 01:17:07
回答 2查看 506关注 0票数 4

Android开发人员示例:

代码语言:javascript
复制
public void onSensorChanged(SensorEvent event)
{
      // alpha is calculated as t / (t + dT)
      // with t, the low-pass filter's time-constant
      // and dT, the event delivery rate

      final float alpha = 0.8;

      gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
      gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
      gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];

      linear_acceleration[0] = event.values[0] - gravity[0];
      linear_acceleration[1] = event.values[1] - gravity[1];
      linear_acceleration[2] = event.values[2] - gravity[2];
}

阿尔法= 0.8,算出的是哪种数值?我想问一下t和dT的具体值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-04 11:25:37

为了回答你的问题,我必须深入到低通滤波器,因为alpha几乎是我们得到的最后一个值。

低通滤波器通常按以下顺序生成:

  1. 您想要削减的赫兹截止频率 fc (这里的重力是继续的,所以这个值应该在1Hz左右)。
  2. 时间常数τ(τ) τ = 1/(2 * π * fc)
  3. 秒内的时间增量∆t。∆t = t2 - t1
  4. 平滑因子α,在本例中是α
  5. 之前的输出和新的输入以获得新的输出。

alpha的功能是或多或少地重视一个值。要工作,过滤器需要一个0到1之间的α。在这种情况下,以前的输出(重力)权重为新输出的80%,新输入(event.values)权重为20% => new gravity = 80% old gravity + 20% acceleration

∆t是通过传感器的实现给出的。通常对SENSOR_DELAY_NORMAL来说是0.2s。

τ是根据α= 0.8和∆t = 0.2s计算的。

从τ中提取α将提供:

代码语言:javascript
复制
τ = (∆t * α) / (1 - α)

使用前面的值,您会发现

代码语言:javascript
复制
τ  = 0.2 * 0.8 / (1 - 0.8) = 0.8

使用τ,您可以计算fc:

代码语言:javascript
复制
fc = 1 / (2 * π * τ) = 1/( 2 * 3.14 * 0.8) = 0.2Hz.
票数 1
EN

Stack Overflow用户

发布于 2022-07-14 10:26:45

@小米

您的答案是:平滑因子α,在本例中是αα=τ/(τ+∆t)

但我是从维基百科获得的:低通滤波器

代码语言:javascript
复制
// Return RC low-pass filter output samples, given input samples,
// time interval dt, and time constant RC
function lowpass(real[0..n] x, real dt, real RC)
    var real[0..n] y
    var real α := dt / (RC + dt)
    y[0] := α * x[0]
    for i from 1 to n
        y[i] := α * x[i] + (1-α) * y[i-1]
    return y

var实 := dt / (RC + dt).不符合你的说法,我想知道哪一个是对的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35190839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档