【问题标题】:Finding the cardinal direction accelerated with an Algorithm for using the magnetometer, accelerometer, and gyro readings使用磁力计、加速度计和陀螺仪读数的算法找到加速的基本方向
【发布时间】:2013-11-12 21:58:17
【问题描述】:

我想找到 iPhone 加速的主要方向。我想我可以只使用加速度计来执行此操作,但是,正如您从下图中所见,加速度计轴由设备方向定义。

我想如果我使用陀螺仪来校正偏航、自旋、旋转,那么我可以获得更准确的读数,而不必在移动过程中将手机保持在同一方向。

但这仍然不能告诉我 iphone 移动的主要方向。为此,我还必须使用磁力计。

谁能告诉我如何使用三个传感器读数来找到加速的主要方向?我什至不知道从哪里开始。我什至不知道手机是否以相同的时间速率进行这些测量。

【问题讨论】:

  • 手机为您完成。如果我正确理解您的问题,您可能正在CMDeviceMotion 中寻找userAcceleration
  • 也许是这样。我需要调查一下,但几乎没有任何文档或网站对 userAcceleration 的主要方向发表评论。
  • 你在地球的参考系中得到userAcceleration;或者换句话说,在地球的坐标系中。该坐标系的轴指向相应的基本方向。您必须检查实际执行的约定。

标签: ios iphone math accelerometer gyroscope


【解决方案1】:

磁力计矢量与“向下”矢量的叉积将为您提供水平磁东/西矢量;由此,第二个叉积得到磁北/南矢量。这是最简单的部分。


更难的问题是有效地跟踪“向下”向量。如果随着时间的推移集成加速度计,您可以过滤掉手持移动设备的运动,以获得持续的重力方向。或者,如果您的设备没有同时旋转,您也可以...

这就是速率陀螺仪的​​用武之地:陀螺仪可以让您补偿手持设备的动态旋转,因此您可以实时跟踪您的重力。执行此操作的经典方法称为 Kalman filter,它可以集成(字面和比喻)多个数据源,以评估系统最可能的状态。


卡尔曼滤波器需要物理系统和观察它的传感器的数学模型;这些模型中的每一个都必须既准确又“足够线性”,卡尔曼滤波器才能正常工作。碰巧的是,iphone/加速度计/陀螺仪系统实际上是足够线性的。

卡尔曼滤波器同时使用微积分和线性代数,因此如果您自己动手,则需要一定的数学知识。

此外,实际上,您应该了解物理传感器通常具有需要补偿的偏移 - 特别是,您需要注意这种惯性导航系统中的速率陀螺偏移,或者您的跟踪器永远不会稳定。这意味着您需要将速率陀螺仪偏移添加到卡尔曼状态向量和系统模型中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多