如何使用iPhone加速度计值计算移动汽车的G-Force值

时间:2010-03-02 06:57:25

标签: iphone accelerometer uiaccelerometer

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

3 个答案:

答案 0 :(得分:4)

让您的类(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可以显示您需要的任何内容。

答案 1 :(得分:1)

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

Fhorizo​​ntal = Ftotal - Fvertical

答案 2 :(得分:0)

我读过加速度计并不准确,所以我认为需要经验微调。

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

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

距离相同。如果您想获得更高的准确度,可以尝试更高阶的求积公式(如Simpson)。