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