0

モーション マネージャーを起動すると、携帯電話を基本的に手にしたままにしておくと、姿勢に誤った値が表示されます。回転値を取得するには、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

位置ズレなら二重積分すれば分かるのですが、回転はセンサーから直接?

なぜこれが起こるのか分かりますか?

4

1 に答える 1