2013-05-17 8 views
5

iOSデバイスの動きを検出するために私のアプリケーションでcoreMotionを使用しています。私はcoreMotionから別のセンサーのデータを取得する方法を知っています。次のように私はdeviceMotionからロール、ピッチ、ヨーデータを取得しています:deviceMotionの姿勢値(ロール、ピッチ、ヨー)を使用して動きを検出する方法

float pitch = (180/M_PI)*self.manager.deviceMotion.attitude.pitch]; 
float roll = (180/M_PI)*self.manager.deviceMotion.attitude.roll]; 
float yaw = (180/M_PI)*self.manager.deviceMotion.attitude.yaw]; 

はどのような動きを検出するために、これらのデータを使用することができますか?このために必要な計算は何ですか?

+0

卿、あなたは何をこれらの値でやろうとしていますか?デバイスが移動したときにこれらの値を監視しようとすると、これらの値をラベルとして表示できます。 – iSeeker

答えて

7

姿勢値は、デバイスモーションの更新のように起動する必要があります:デバイスの移動は、ラベルに表示する姿勢値を使用するときの姿勢値を監視するには

startDevicemotionUpdates 

[self.cmMotionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMDeviceMotion *devMotion, NSError *error) { 

float pitch = (180/M_PI)*self.manager.devMotion.attitude.pitch]; 
float roll = (180/M_PI)*self.manager.devMotion.attitude.roll]; 
float yaw = (180/M_PI)*self.manager.devMotion.attitude.yaw]; 

self.rollLabel.text = [NSString stringWithFormat:@"%f", roll]; 
self.pitchLabel.text = [NSString stringWithFormat:@"%f",pitch]; 
self.yawLabel.text = [NSString stringWithFormat:@"%f",yaw]; 
} 

もロール、ピッチ、ヨー(別名オイラーアングル)を使用しない方が良いです。正確さを高めるには、QuaternionまたはRotationマトリクスを使用します。オイラー角は、ジンバルロックと呼ばれる状況にある傾向があり、信頼性の低いデータになります。

四元の使用方法については、このリンクをチェックして、ロール、ピッチ、ヨーの値にその値を変換してください:SO link

関連する問題