android加速度传感器消除重力加速度影响的代码问题?

浩荡兮 2014-07-28 10:32:30
这是android developer网站提供的方法
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];
}
注释上面写着是用低通滤波器。
我虽然不懂这是什么。但是我知道假设物理做匀加速运动。x轴加速度恒为10m/s²。
那么会出现这样的结果:
gravity[0] = 0.8 * gravity[0] +0.2* event.values[0]=0.8*0+0.2*10=2m/s²
linear_acceleration[0] = event.values[0] - gravity[0]=8m/s²
接下来:
gravity[0] = 0.8 * gravity[0] +0.2* event.values[0]=0.8*8+0.2*10=8.4m/s²
linear_acceleration[0] = event.values[0] - gravity[0]=1.6m/s²
然后....
这怎么办?O__O"…
...全文
524 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
netb_xyz 2015-06-15
  • 打赏
  • 举报
回复
那两个数组不要写成成员变量,要写成局部变量,写到onSensorChanged方法中。也不知道是谁公布的这个错误写法,
lionfresh 2014-07-29
  • 打赏
  • 举报
回复
数学和物理不好久不要纠结这些了吧。
u013266076 2014-07-29
  • 打赏
  • 举报
回复
再多算几次 ,linear_acceleration[0] 就趋近于0了。
浩荡兮 2014-07-29
  • 打赏
  • 举报
回复
我的意思是这代码也会把需要的加速度给过滤掉了。

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧