Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 用带低通滤波器的线加速度计计算G力减速度_Android_Accelerometer - Fatal编程技术网

Android 用带低通滤波器的线加速度计计算G力减速度

Android 用带低通滤波器的线加速度计计算G力减速度,android,accelerometer,Android,Accelerometer,全部 所以基本上我是在用加速计来计算重力加速度。为此,我决定使用带有低通滤波器的线性加速度计(因为我将测试汽车的驾驶行为) 可在此处找到实现代码: 现在我得到x,y,z值。我要做的是使用以下公式计算G力: sqrt(x*x + y*y + z*z) / 9.8 无论何时我走路,我都会得到0.3到0.6克的力,但我不确定这是否是计算力的正确方法。 我试着试驾,每当我急刹车时,我都不能得到负加速度(当我急刹车时,我应该得到的)。而且,获得0.3-0.6 G的力量不是太多吗 我觉得计算过的力太大了

全部

所以基本上我是在用加速计来计算重力加速度。为此,我决定使用带有低通滤波器的
线性加速度计
(因为我将测试汽车的驾驶行为)

可在此处找到实现代码:

现在我得到x,y,z值。我要做的是使用以下公式计算G力:

sqrt(x*x + y*y + z*z) / 9.8
无论何时我走路,我都会得到0.3到0.6克的力,但我不确定这是否是计算力的正确方法。 我试着试驾,每当我急刹车时,我都不能得到负加速度(当我急刹车时,我应该得到的)。而且,获得0.3-0.6 G的力量不是太多吗


我觉得计算过的力太大了。这是真的吗?我的解决方案中缺少什么吗

一般的想法是,不仅要捕捉加速度,还要捕捉减速,这应该是负值。

我觉得计算的力太大了

看起来你需要一些方法来检查和校准。是否可以将加速计倾斜90度?你应该得到一个精确的1G绝对读数


如果x+y+z的和为负数,可能在此之后您可以更改sqrt结果的符号。

sqrt(x*x+y*y+z*z)
产生一个幅值。它不可能是消极的
sqrt()
无法返回负数。你需要测量相对于某个轴的加速度。请参阅。@greeble31感谢您指出我的公式产生了一个量级。从你的链接我了解到我需要的是水平加速度?好的,这包括sqrt(),它仍然会导致非负数,对吗?也许小示例代码可以帮助我更好地理解。抱歉,这是一个漫长的夜晚,hahaThat链接不会直接解决您的问题;我理解。我没有任何好的例子能准确地告诉你你在寻找什么。我的建议是,当你用手移动手机时,将x/y/z加速度值转储,并尝试了解它们的确切含义。这只是你必须解决的许多问题中的第一个问题。我不知道你的库是在设备坐标系还是世界坐标系下产生加速度。如果坐标系不合适,您可能必须立即放弃该库。祝你好运