相关疑难解决方法(0)

iPhone上的陀螺仪

在iPhone上使用陀螺仪需要一些帮助.在特定情况下,我无法理解CMAttitude关于俯仰,翻滚和偏航的读数.

这是我的代码

- (void)handleDeviceMotion:(CMDeviceMotion*)motion {

   NSLog(@"Yaw   %f ",attitude.yaw * 180 / M_PI);
   NSLog(@"Pitch %f ",attitude.pitch * 180 / M_PI);
   NSLog(@"Roll  %f ",attitude.roll * 180 / M_PI);
}
Run Code Online (Sandbox Code Playgroud)

我们假设iPhone正在平面上,如下图所示:

在此输入图像描述

俯仰,滚转和偏航是(几乎)0度,绕轴的任何转弯都会返回可理解的读数.例如,向右转动设备,Yaw减小,Pitch and Roll保持为0.

现在iPhone处于以下位置:

在此输入图像描述

并再次开始测量.

读数为:Yaw = 0,Pitch = 90,Roll = 0

由于设备围绕该轴旋转,因此间距增加.

将iPhone移动到这个位置:

在此输入图像描述

读数为:Yaw = 30,Pitch = 90,Roll = 0

再一次,由于设备围绕偏航轴旋转,因此该值会改变而其他值则不会改变.

围绕Roll轴移动设备:

在此输入图像描述

读数为:Yaw = 0,Pitch = 90,Roll = -20.

现在我无法理解.将iPhone移动到半径为R(R> 0)的圆周,如下图所示:

在此输入图像描述

Yaw改变同时Pitch and Roll没有.

我原以为Yaw保持不变而Roll已经改变了.

如何补偿这一点,因为我对用户制作的偏航轴周围的旋转感兴趣?

我遇到的另一个问题是漂移.iPhone处于第二个图中描述的位置,长时间(1分钟或更长时间)在我的手中拍摄.偏航不断增加.知道如何补偿漂流吗?

先感谢您

更新 我跟随凯的建议,但没有任何改变.关于我的代码的更多细节.我想仅在用户围绕偏航轴旋转设备时使用Yaw旋转UIImage.这是有效的,但是当用户围绕其自己的垂直轴旋转时,偏转会发生变化.我认为这是不正确的,因为当用户围绕其垂直轴移动时,设备不会围绕其自己的偏航轴旋转.可能是我错了.这是我的原始代码:

- (void)handleDeviceMotion:(CMDeviceMotion*)motion { 

   CMAttitude      *attitude = motion.attitude;

   NSLog(@"Yaw   %f ",attitude.yaw * …
Run Code Online (Sandbox Code Playgroud)

iphone accelerometer ipad ios gyroscope

34
推荐指数
1
解决办法
1万
查看次数

标签 统计

accelerometer ×1

gyroscope ×1

ios ×1

ipad ×1

iphone ×1