根据从野生动物项圈收集的 XYZ 加速计数据计算俯仰和滚动

问题描述 投票:0回答:1

我与野生动物项圈(狮子、大象)一起工作,它们也收集 XYZ 加速度计数据。由此,我可以在项圈制造商 Web 应用程序中可视化动物的俯仰和滚动,但他们尚未提供此数据可供下载。我只能下载原始 XYZ 加速度计数据。制造商指定加速度计为 2G,最大值为 32 000,最小值为 -32 000。但我不确定这指的是什么。

理想情况下,如果可能的话,我希望能够找到一个公式,允许我将 XYZ 数据转换为 Excel 中的俯仰和横滚。我看过一些在线教程和论坛(Arduino),但到目前为止还没有找到任何有用的东西。

我尝试过的公式之一是:

roll = atan2(y_Buff , z_Buff) * 57.3; pitch = atan2((- x_Buff) , sqrt(y_Buff * y_Buff + z_Buff * z_Buff)) * 57.3;
但它返回的俯仰和横滚数据与我在基于网络的门户中看到的数据非常不同。

例如:

X Z 根据公式滚动 公式中的音调 实际卷 实际音高
1626 11908 9991 40.00013 95.97879 5.97 -0.01
math formula physics accelerometer pitch
1个回答
0
投票

你能遵循这个网站上的方程式吗: https://mwrona.com/posts/accel-roll-pitch/

这是一个非常标准的加速度计,为三个轴(X、Y、Z)中的每一个输出一个带符号的 16 位整数。 32,000 是一个近似值,实际上是 32,767。

您的帖子中确实有一个错误,那就是您需要 (x * x + y * y + z * z) 的平方根,这将为您提供信号的整体幅度。理想情况下,这个幅度 * 2 'g' / 32768 正好是 1.0g,但通常不是,因此以下计算将包括该计算。

scale_to_g = 2.0 / 32768 // They said it was a +-2G sensor with 32768 max

// Convert from usually -1 to +1 g
x = ax * scale_to_g
y = ay * scale_to_g
z = az * scale_to_g

// calculate pitch and roll
mag = square root of ( x * x + y * y + z * z)
to_degrees = 180 / Pi = 57.3
Pitch = arcsin( x / mag ) * to_degrees
Roll = arcsin( y / z ) * to_degrees

在你的例子中使用这些计算我得到: 俯仰角 5.97 度 滚动:50.00 度

我在你的帖子中没有看到这一点,但是看看原始数据,如果Z向上是0/0,那么这个传感器有点倾斜(倾斜是围绕Y轴的,所以使用ax作为前面的'x ' 有点向上)。然后滚动(围绕 x,但使用 ay)很重要,因为 y 测量值大于 z,因此 y 比 z 更接近向上/向下。它并没有明显大于 z,所以根据我的直觉,50 > 45 是正确的。

传感器也可以旋转安装,因此 X、Y 和 Z 轴可以互换,您可以根据自己的喜好命名。

希望这对动物有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.