如何在Android智能手机中使用加速度传感器找到位移距离?

如何在Android智能手机中使用加速度传感器找到位移距离?,第1张

概述我有一部包含加速传感器,指南针传感器和陀螺仪传感器的android智能手机.我想使用此传感器计算位移距离.我已经尝试了基本方法,即finalvelocity=initialvelocity+(acceleration*timetaken)distance=timetaken*speed但是我无法获得正确的位移.每次我尝试相同

我有一部包含加速传感器,指南针传感器和陀螺仪传感器的android智能手机.我想使用此传感器计算位移距离.

我已经尝试了基本方法,即

final veLocity = initial veLocity + ( acceleration * time taken)distance = time taken * speed

但是我无法获得正确的位移.每次我尝试相同的位移,我都会得到不同的结果.

解决方法:

您可能正在寻找的方程式是:

VeLocity = (Gravity*acceleration)/(2*PI*freq)

正确使用此方程式(公制)的单位为

Gravity = mm/s squared = 9806.65acceleration = average acceleration over 1 secondFrequency = Hz (of the acceleration waveform over 1 second)

例如,如果您从加速度计的所有3个轴收集数据,则将执行以下 *** 作以获取3D空间的加速度波形(原始值):

inputArray[i] = sqrt(X*X + Y*Y + Z*Z);

收集完数据后,仅使用本应收集的波形中的样本数量即可(如果两个值之间存在1ms的延迟,则只能使用1000个值).

将这些值相加并除以样本数量即可得到平均值(如果加速度计数据为负值,则可能需要使所有值均为正值),您可以使用此算法在找到平均值之前执行此 *** 作.

for(i = 0; i < 1000; i++){    if(inputArray[i] < 0){        inputArray[i] = inputArray[i] - (inputArray[i]*2);    }}

获得加速度平均输出后,需要执行上面的公式.

static double PI = 3.1415926535897932384626433832795;static double gravity = 9806.65;double Accel2mms(double accel, double freq){    double result = 0;    result = (gravity*accel)/(2*PI*freq);    return result;}

例如,一个挥杆动作的平均加速度为1秒内3 gs:

注意:此计算基于正弦波形,因此该频率将代表加速度计的物理运动,而不是采样率的频率

Accel2mms(3, 1);

1秒内3 gs,频率为1(一个方向摆动1个)= 4682.330468 mm / s或4.7米.

希望这是您想要的东西.

请记住,此计算基于正弦波形,但适用于基于单个运动(频率1)进行计算,因此它可能不太准确.但理论上应该可行.

总结

以上是内存溢出为你收集整理的如何在Android智能手机中使用加速度传感器找到位移距离?全部内容,希望文章能够帮你解决如何在Android智能手机中使用加速度传感器找到位移距离?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1088175.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存