Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用iPhone加速计值计算移动汽车的重力值_Iphone_Accelerometer_Uiaccelerometer - Fatal编程技术网

如何使用iPhone加速计值计算移动汽车的重力值

如何使用iPhone加速计值计算移动汽车的重力值,iphone,accelerometer,uiaccelerometer,Iphone,Accelerometer,Uiaccelerometer,我正在开发一个应用程序,该程序用于在iPhone上显示移动汽车的当前重力值。我不知道如何使用iPhone的加速度计值计算重力值。此外,我必须使用这些值计算距离和速度 让您的类(ViewController或其他)实现UIAccelerometerDelegate协议。然后 -(void)startListening { UIAccelerometer *meter = [UIAccelerometer sharedAccelerometer]; meter.updateInterval

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

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

-(void)startListening {
  UIAccelerometer *meter = [UIAccelerometer sharedAccelerometer];
  meter.updateInterval = 1.0; // One second
  meter.delegate = self;
}
然后,您的代理可以使用UIAccelerator提供的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可以根据需要进行任何显示。

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


Fhorizontal=Ftotal-Fvertical

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

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


距离也一样。如果您想获得更高的精度,可以尝试使用高阶求积公式(如辛普森公式)。

谢谢您的回答。我可以这样做,但我想计算一辆正在移动的汽车的重力值。此外,我还必须计算距离和速度。@Frank:iPhone加速计会自动抵消重力加速度吗?@Zaid谢谢:)此外,Christian Severin回答了你的问题:首先在汽车静止时校准加速计。@Zaid加速计不会抵消重力加速度,你会得到原始值。你必须自己减去它。还要记住,你只会得到加速。如果汽车以恒定的速度和方向行驶,则不会发生加速,只会记录重力。你说的“g-force”是指“skidpad”吗?你要求的速度和距离精度是多少?幸运吗?如果你能找到一个(合理的)准确的方法,我会很感兴趣的。校准提示+1。您将需要所有三个组件:用于减速带的垂直组件(:)和用于转弯的水平平面中的两个组件。
Speed_i+1 = Speed_i + (interval_time/2)* (Accel_i+Accel_i+1)