【问题标题】:Calculate 3D rotation between two vectors of acceleration in Android在Android中计算两个加速度向量之间的3D旋转
【发布时间】:2017-01-11 17:34:27
【问题描述】:

我正在创建应用程序,该应用程序将使用 Android 智能手机中的加速度计测量每个轴上的车辆加速度。我需要以某种方式将手机测量坐标系统旋转到车辆的坐标系统 - 以允许驾驶员将手机放在支架中 - 因此手机将与车辆有一些不同的旋转。

我从校准过程开始,我告诉用户握住手机以匹配车辆坐标系 - 所以我保存了 TYPE_GRAVITY 传感器 X、Y 和 Z 重力加速度值。然后我告诉用户将手机放入支架并再次保存 TYPE_GRAVITY 传感器 X、Y 和 Z 重力加速度值。

现在我需要找到这两个向量之间的某种关系,以便我可以使用它来校正(旋转)TYPE_LINEAR_ACCELERATION X、Y、Z 数据以匹配车辆协调系统。

【问题讨论】:

    标签: android vector 3d accelerometer


    【解决方案1】:

    仅使用重力传感器,您将缺少一个旋转轴来计算您想要的。

    假设您的手机被垂直握持,加速度计会显示您到手机底部的方向。如果您现在围绕垂直轴旋转它 - 您仍然会从加速度计获得相同的结果。这意味着您无法以这种方式绕垂直轴旋转。

    一种解决方案是使用陀螺仪 - 这可以让您完全旋转手机,但会增加应用的硬件要求。

    但恕我直言,更好的解决方案是摆脱整个校准过程。汽车大多是直线行驶,只是有时您会获得侧向加速,这样您就可以扫描读数几秒钟并找到“主轴”和“侧”轴。

    此外,您的校准过程仍然取决于用户在放置手机时的精度,因此它可能无法按您的预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多