gpt4 book ai didi

android - Android 上的冗余运动传感器?

转载 作者:行者123 更新时间:2023-11-30 09:26:17 27 4
gpt4 key购买 nike

我正在开发一种工具,它接收运动传感器数据并将其发送到机器学习算法,该算法最终将推断出不同类型的运动。

我读了Motion sensor guide从传感器获得的数据似乎存在一些冗余。例如:加速度计数据包含重力数据,线性加速度数据显示加速度,但没有由于加速度而产生的加速度>重力

所以我的问题是:我真的需要所有传感器来获得所有形式的运动还是我可以放弃其中一些?

编辑:(澄清问题)

我想收集最少的数据,以便我能够推断出同样的事情。我正在寻找的是用户行为:用户握持手机的角度、用户在使用手机时移动的方式等。

我正在寻找的答案应该包括其中具有高度相关性的传感器组,这样只需要该组中的一些传感器就可以推断出相同类型的运动\移动\旋转\加速度\等..

最佳答案

问题中的“动议”一词没有确切的含义。所以我回答得更笼统。

“握持手机的方式”只不过是手机的方向。共有三个传感器,分别告诉手机的方向。

  1. 加速度计传感器
  2. 方向传感器
  3. 旋转矢量传感器

其中只有加速度计是物理传感器,其他两个是虚拟传感器(它们没有特殊的硬件,它们使用加速度计数据并以不同的格式报告方向)。

  1. 方向传感器已弃用,因此您无法使用它。
  2. 旋转矢量传感器告知以四元数编码的方向。如果您的代码基于四元数,则使用 SensorManager.getQuaternionFromVector() 标准化传感器输出并继续。如果您的代码基于旋转矩阵,则通过调用 SensorManager.getRotationMatrixFromVector() 获取旋转矩阵通过传感器输出并继续。如果您想单独了解方向,请调用 SensorManager.getOrientation() 获取。传递之前获得的旋转矩阵。
  3. 使用加速度传感器我们可以找到方向,但推荐的方法是将其与磁场传感器输出结合起来。调用SensorManager.getRotationMatrix()通过加速度计输出和磁场传感器输出的输出得到旋转矩阵。如果您的代码基于旋转矩阵,请继续。如果您想单独了解方向,请调用 SensorManager.getOrientation() 获取。传递先前获得的旋转矩阵。如果您的代码基于四元数调用 SensorManager.getQuaternionFromVector()通过传递先前获得的旋转向量(方向)。

“移动手机的方式”- 这里我考虑四种 Action 。

  1. 位置变化(简单翻译)和位置变化率(速度) - 没有传感器可以检测到它们。
  2. 速度变化率(简单加速度)- 加速度计检测到它。但它也包含重力分量。通常我们需要没有重力分量的加速度。这可以按照解释简单地计算 here 。然而,还有另一个称为线性加速的虚拟传感器可以为我们完成这项工作。
  3. 方向改变(旋转) - 每当方向改变时,加速度计、方向和旋转矢量传感器都会报告我们(陀螺仪也会报告,但将在下一点中解释)。答案的第一部分解释了如何使用此传感器获取当前方向。
  4. 方向变化率(角速度)- 每当方向发生变化时,陀螺仪传感器都会报告。输出是三个数字,表示沿 x、y 和 z 轴的角加速度。单位为弧度每秒。

陀螺仪传感器的输出长期不准确,加速度计的输出短期不准确,因此将它们结合起来以获得稳定的输出。详情见this问题。

现在很明显,陀螺仪和加速度计是最少需要的。然而,使用各种传感器可以最大限度地减少我们的工作。

关于android - Android 上的冗余运动传感器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32763239/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com