iPhone 陀螺仪 - 为什么偏航角和俯仰角是相关的?

15
我有一个非常简单的应用程序,我试图通过核心运动使用陀螺仪。此时,出于测试目的,我只是获取翻滚、俯仰和偏航值并将其打印在屏幕上。根据下面的图片以及据我所知,翻滚、俯仰和偏航对应于红色、绿色和蓝色轴,对吗?
好的。当我将iPhone放在桌子上,靠在它的左侧(Home键在右边),与桌面平面成90度时,这些是我读到的翻滚、俯仰和偏航值:-90, 0, 0。然后我开始按顺时针方向绕着iPhone的垂直轴旋转,这在表面垂直轴上是正方向。在iPhone上,这意味着俯仰旋转,但随着旋转,俯仰保持不变,而偏航会改变!
如果iPhone在桌子上靠在它的左侧,那么绿色轴(俯仰)是垂直的。如果我沿着X轴逆时针旋转设备(正方向),我应该看到俯仰角度的增加,而不是偏航。
我唯一的解释是,当你旋转设备时,陀螺仪轴不会旋转。因此,如果我使用默认的态度参考,iPhone认为面朝上的静止位置是默认的,而蓝色轴(偏航)将始终是垂直的。这是正确的吗?
这是我正在使用的代码...
在主代码上
motionManager = [[CMMotionManager alloc] init];
motionManager.deviceMotionUpdateInterval = 1.0/60.0; //60 Hz
[motionManager startDeviceMotionUpdates];


timer = [[NSTimer scheduledTimerWithTimeInterval:(1.0/60.0) 
          target:self
    selector:@selector( readIt )
userInfo:nil
 repeats:YES]
 retain];

剩余的代码

#define degrees(x) (180.0 * x / M_PI)

- (void) readIt {

//  CMAttitude *referenceAttitude;
    CMAttitude *attitude;

    CMDeviceMotion *motion = motionManager.deviceMotion;        
    if (!motion) {
        return;
    }

    attitude = motion.attitude;

    NSLog(@"roll = %f... pitch = %f ... yaw = %f", degrees(attitude.roll), degrees(attitude.pitch), degrees(attitude.yaw));


}

在此输入图片描述


这还要取决于陀螺仪在手机本体中的物理位置。如果它不恰好位于旋转中心,它将获得所有值的混合,例如,如果它位于样例图片中绿色应用程序图标所在的位置,但你正在灰色球形交叉轴处旋转手机... - Marc B
好的,谢谢。但是俯仰角没有变化。即使它创建了各种变化的混合物,它也应该有所变化,但实际上它根本没有改变。唯一在改变的是偏航角。换句话说,当我沿着绿色轴旋转它时,我看到蓝色轴发生了变化,而不是预期的绿色轴... - Roger
+1 给这张漂亮的图片 :-) 如果你把 iPhone 平放在桌子上,而不是竖着放(如果你所说的“大小”是指这个),会发生什么?如果你把它倒过来呢?等等... - TonyK
哎呀,我的意思是“侧面”而不是“大小”。如果它平放在桌子上,读数为0,0,0(行、俯仰、偏航)。我可以通过两种方式将其翻转(玻璃朝向桌子)。我可以滚动180度,也可以俯仰180度。如果我滚动180度,读数为-180,0,0。如果我俯仰180度,它将读取-180,0,-180(请注意最后一个-180值在偏航上,但请记住我改变了俯仰并且没有俯仰的变化)。显然,它正在永久固定的轴上使用。因此,我不知道如何将这些旋转投影到本地参考系... - Roger
只是为了验证您的定义与您的插图相比:红轴=偏航,绿轴=俯仰,蓝轴=滚转。这就是您使用它们的方式,对吗? - Suncat2000
显示剩余3条评论
2个回答

2

请查看我的问题和所选答案,以获取更多相关信息。我认为特别是答案告诉你为什么这两者是相互关联的。


0

听起来像是与万向锁有关的问题,特别是在处理俯仰旋转时。您可以查看iPhone - 理解 iPhone 旋转

万向锁或类似文章描述了这种现象。解决方案取决于您在应用程序中需要什么。在大多数情况下,您应该避免使用欧拉角,并改用旋转矩阵或四元数表示。好吧,我知道,有时是不可能的。一个很好的起点可能是 WWDC 2010 茶壶核心运动示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接