モーション マネージャーを起動すると、携帯電話を基本的に手にしたままにしておくと、姿勢に誤った値が表示されます。回転値を取得するには、CMAttitude オブジェクトを使用します。
CMDeviceMotionHandler motionHandler = ^(CMDeviceMotion *motion, NSError *error) {
[self calculateNewPosition:motion];
_rotationMatrix = [self rotationToMat:[motion attitude].rotationMatrix];
};
[_motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXArbitraryZVertical toQueue:_motionQueue withHandler:motionHandler];
さて、小さなサイズのジャイロでの測定にはノイズがあり、重力ベクトルはおそらくキャリブレーションが必要であることを知っていますが、これはずれが大きすぎるようです. 0.5 ~ 1 秒後、回転の値が 0 から 20° を超える?! ロール、ピッチ、ヨーの 2 つの例:
-1.001736 22.637596 -0.197573
-0.095075 29.075712 -0.014112
位置ズレなら二重積分すれば分かるのですが、回転はセンサーから直接?
なぜこれが起こるのか分かりますか?