1

CMAttitude クラスからピッチ角、ロール角、ヨー角を取得する際に問題があります。

まず、「CMMotionManager」クラスと属性 x、y、z を使用して通常のジャイロを実行し、正常に動作しました。そこで「絶対角」にCMAttitudeを使ってみたのですが、データが更新されていないようでうまくいきません。角度は常に 0 です (ただし、エラーや警告ではありません)。

私はstackoverflowでよく検索し、見つけたいくつかの解決策を使用しましたが、同じ問題があります。これが私のコードです:

- (void)viewDidLoad
{
  [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

  motionManager = [[CMMotionManager alloc] init];

  CMDeviceMotion *deviceMotion = motionManager.deviceMotion;
  CMAttitude *attitude = deviceMotion.attitude;
  referenceAttitude   = attitude;

  [motionManager startGyroUpdates];

  timer = [NSTimer scheduledTimerWithTimeInterval:1/30.0
                                         target:self
                                       selector:@selector(doGyroUpdate)
                                       userInfo:nil
                                        repeats:YES];
}

-(void)doGyroUpdate {


 //cambia el frame de referencia
  [motionManager.deviceMotion.attitude multiplyByInverseOfAttitude: referenceAttitude];

  double rRotation = motionManager.deviceMotion.attitude.roll*180/M_PI;
  double pRotation = motionManager.deviceMotion.attitude.pitch*180/M_PI;
  double yRotation = motionManager.deviceMotion.attitude.yaw*180/M_PI;

NSString *myString = [NSString stringWithFormat:@"%f",rRotation];
self.angYaw.text = myString;

myString = [NSString stringWithFormat:@"%f",pRotation];
self.angPitch.text = myString;

myString = [NSString stringWithFormat:@"%f",yRotation];
self.angRoll.text = myString;

}

どうもありがとう!:D

4

1 に答える 1