首页 > 解决方案 > 仅使用加速度计计算角度倾斜

问题描述

我想知道如何使用我的 Android 手机的加速度计的坐标来计算连接加速度计和树底 (B) 以及加速度计和树顶 (T) 的两段之间的角度。

草图

加速度计每秒获取 3 个轴上的加速度值,因此我计算了平均值,我得到: 对于朝向 B 的手机:Ay1 = -9.69ms^-1 和 Az1 = 0.71ms^-1 对于朝向 T 的手机: Ay2 = -9.71ms^-1 和 Az2 = 0.71ms^-1

我位于距离树 D = 20m 处。最后我想知道H的值。所以我想知道如何计算角度然后找到树的高度。

谢谢你的帮助

标签: mathaccelerometerangle

解决方案


我们需要的角度是 world-up 和 device-up 之间的角度。由于重力矢量指向世界下方,这很简单(假设您使用设备的 y 轴指向):

cos angle = -a.y / sqrt(a.x^2 + a.y^2 + a.z^2)

我们从您的读数中得到的两个角度是:

angle1 = 4.19065°
angle2 = 4.18205°

您已经可以看到角度非常接近,因为两个加速度值也非常接近。顺便说一句,我想知道您是否真的指向 y 轴,因为重力值表明您在这两种情况下都将手机几乎直立。

无论如何,如果我们假设这两个角度是正确的,我们现在可以计算各个三角形的高度,假设长度为 target l。然后:

tan (90° - angle) = h / l

假设l=20 m,这给了我们两个高度值:

h1 = 272.958 m
h2 = 273.521 m

这些是手机高度以上的高度。理论上,一个应该是积极的,另一个应该是消极的。树的高度将是两个高度的差:

treeH = h2 - h1
treeH = 0.56338 m

正如您在整个示例中所看到的,您的读数一定很差。不过,这就是您计算树高的方式。


推荐阅读