【问题标题】:How to calculate the G-Force value of a moving car using iPhone accelerometer values如何使用 iPhone 加速度计值计算移动汽车的 G-Force 值
【发布时间】:2010-03-02 06:57:24
【问题描述】:

我正在开发用于在 iPhone 上显示移动汽车的当前 G-Force 值的应用程序。我不知道如何使用 iPhone 加速度计值计算 G 力值。此外,我必须使用这些值计算距离和速度。

【问题讨论】:

  • 你说“g-force”是指“skidpad”吗?
  • 速度和距离你追求什么样的精度?
  • 这个运气好吗?如果您想出一种(合理)准确的方法来做到这一点,我会很感兴趣。

标签: iphone accelerometer uiaccelerometer


【解决方案1】:

让您的类(ViewController 或其他)实现 UIAccelerometerDelegate 协议。那么

-(void)startListening {
  UIAccelerometer *meter = [UIAccelerometer sharedAccelerometer];
  meter.updateInterval = 1.0; // One second
  meter.delegate = self;
}

然后,您的委托可以使用 UIAccelerometer 提供的 UIAcceleration 对象来执行您需要的任何操作。例如,如果您只需要 iPhone 的加速度大小,您可以使用双 accelMagnitude 实例变量:

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
  accelMagnitude = sqrt(acceleration.x * acceleration.x
                      + acceleration.y * acceleration.y
                      + acceleration.z * acceleration.z);
  [self refreshDisplay: accelMagnitude];
}

refreshDisplay 在哪里显示您需要的任何内容。

【讨论】:

  • 感谢您的回答。我可以这样做,但是我想计算一辆正在行驶的汽车的 G 力值。另外,我必须计算距离和速度。
  • @Frank:iPhone加速度计会自动抵消重力加速度吗?
  • @Zaid 谢谢 :) 另外,Christian Severin 回答了您的问题:首先在您的汽车静止时校准加速度计。
  • @Zaid 加速度计不会否定重力加速度,你会得到原始值。你必须自己减去它。另请记住,您只会获得加速度。如果汽车以恒定的速度和方向移动,则不会发生加速,只会记录重力。
【解决方案2】:

如果您可以在汽车静止时校准您的加速度计,您稍后可以通过简单的矢量算术获得水平力分量:

水平 = Ftotal - Fvertical

【讨论】:

  • +1 用于校准提示。您将需要所有三个组件:减速带的垂直方向 (:)) 和水平平面中的两个组件来解释转弯。
【解决方案3】:

我了解到加速度计不是那么准确,所以我认为需要进行经验微调。

一旦您校准、测量/过滤(并转换为适当的单位)加速度计数据,速度就可以通过(梯形规则)来近似

Speed_i+1 = Speed_i + (interval_time/2)* (Accel_i+Accel_i+1)

距离也一样。如果您想获得更高的准确性,可以尝试更高阶的求积公式(如 Simpson 的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 2012-06-20
    • 2011-01-17
    • 2012-05-21
    • 1970-01-01
    • 2010-12-11
    相关资源
    最近更新 更多