无论手机方向如何,都获得垂直于重力方向的加速度。

Posted

技术标签:

【中文标题】无论手机方向如何,都获得垂直于重力方向的加速度。【英文标题】:Getting accleration perpendicular to the direction of the gravity irrespective of the phone orientation. 【发布时间】:2015-04-19 05:41:42 【问题描述】:

我正在尝试获得垂直于重力方向的两个轴上的加速度,而与手机的方向无关,但不太确定如何做到这一点,

我一直在研究使用 TYPE_MAGNETIC_FIELD 和 TYPE_ROTATION_VECTOR 但不知道如何实现。

我只需要 xy 平面中的加速度,假设重力方向在 z 平面中,而与手机方向无关。

提前致谢

【问题讨论】:

【参考方案1】:

这不简单:)

要使用 TYPE_MAGNETIC_FIELD,您应该知道地球磁场在您的位置是如何定向的,这不是微不足道的。

您可以尝试使用 TYPE_GRAVITY 和 TYPE_LINEAR_ACCELERATION:第一个返回重力加速度矢量,第二个返回设备的加速度,不包括重力(它应该类似于 LINEAR_ACCELERATION = ACCELEROMETER - GRAVITY,但我不知道有多精确它是)。

要在 z 轴上获得重力,您必须执行重力矢量的旋转以使其形式为 (0 0 g)...实际上,您必须找到在形式(0 0 克)。更多关于这个here (wikipedia)。

一旦你有了这个矩阵,你就可以把它应用到线性加速度向量上,它的 x 和 y 分量就是你要找的那个。

如果您的手机没有这两个传感器,则您必须自己计算重力和线性加速度:为此,您可以实现一个高通滤波器来获取线性加速度,并实现一个低通滤波器来获取重力矢量.更多关于这个here。

【讨论】:

以上是关于无论手机方向如何,都获得垂直于重力方向的加速度。的主要内容,如果未能解决你的问题,请参考以下文章

CoreMotion框架--加速计和陀螺仪

如何计算手机从静止垂直方向的运动?

Android加速度计校准?

陀螺仪加速计磁力计等传感器汇总

js 运动函数篇 (加速度运动弹性运动重力场运动(多方向+碰撞检测+重力加速度+能量损失运动)拖拽运动)层层深入

小车上坡的物理题