Как рассчитать значение G-Force движущегося автомобиля, используя значения акселерометра iPhone - PullRequest
2 голосов
/ 02 марта 2010

Я работаю над приложением, которое используется для отображения текущего значения G-Force движущейся машины на iPhone. Я не знаю, как рассчитать значение G-force, используя значения акселерометра iPhone. Кроме того, я должен рассчитать расстояние и скорость, используя эти значения.

Ответы [ 3 ]

4 голосов
/ 02 марта 2010

Пусть ваш класс (ViewController или любой другой) реализует протокол UIAccelerometerDelegate. Тогда

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

Затем ваш делегат может использовать объект UIAcceleration, предоставленный ему UIAccelerometer, для выполнения всего, что вам нужно. Например, если вам нужна только величина ускорения 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 голос
/ 02 марта 2010

Если вы можете откалибровать свой акселерометр, когда автомобиль находится в состоянии покоя, вы можете позже получить горизонтальную составляющую силы с помощью простой векторной арифметики:

Горизонтально = Ftotal - Fvertical

0 голосов
/ 02 марта 2010

Я прочитал, что акселерометр не настолько точен, поэтому я думаю, что потребуется эмпирическая подстройка.

После того, как вы откалибруете, измерите / отфильтруете (и преобразуете в нужную единицу) данные акселерометра, скорость может быть приблизительно подтверждена (правилом трапеции)

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

Та же самая мода для расстояния. Если вам хочется иметь больше точности, вы можете попробовать квадратурные формулы более высокого порядка (например, Симпсона).

...