iPhone 陀螺仪 - 为啥 YAW 和 PITCH 连接?

Posted

技术标签:

【中文标题】iPhone 陀螺仪 - 为啥 YAW 和 PITCH 连接?【英文标题】:iPhone gyroscope - why is YAW and PITCH connected?iPhone 陀螺仪 - 为什么 YAW 和 PITCH 连接? 【发布时间】:2011-03-05 20:27:48 【问题描述】:

我有一个非常简单的应用程序,我试图通过核心运动使用陀螺仪。

此时,出于测试目的,我只是抓取滚动、俯仰和偏航的值并在屏幕上打印。根据下图,据我所知,roll、pitch、yaw分别对应红绿蓝轴,对吧?

好的。当我将 iphone 放在左侧的桌子上时(右侧的主页按钮),与桌面平面成 90 度角,这些是我读取的滚动、俯仰和偏航值:-90、0、 0.然后我开始根据桌子的垂直轴以逆时针方式旋转iPhone,即根据桌子垂直轴的正方向。在 iPhone 上,这意味着俯仰旋转,但当我旋转时,俯仰保持不变,而 YAW 是变化的!!!!!!

如果 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));



【问题讨论】:

这还取决于陀螺仪在手机体内的物理位置。如果它不完全位于旋转中心,它将得到所有值的混合。例如如果它位于示例图片上绿色应用程序图标所在的位置,但您在轴箭头相交的灰色球处旋转手机... 好的,谢谢,但音高变化为零。即使它创造了多种变化,它也应该改变一些东西,但它根本没有改变。改变的是偏航。换句话说,我沿着绿色轴旋转它,我看到蓝色轴上的变化,而不是预期的绿色......' 所以你问为什么轴是相对于地面而不是相对于手机? 不,我在问为什么当我改变俯仰角时偏航会发生变化(而不是俯仰角),当我旋转设备或轴总是固定到地面参考时会改变轴? +1 为漂亮的图片 :-) 如果你将 iPhone 平放在桌子上,而不是放在它的边缘会发生什么(如果这就是你所说的“尺寸”)?如果你把它倒过来会发生什么?等等…… 【参考方案1】:

查看我的question and the selected answer 了解更多信息。我认为答案尤其可以告诉您为什么两者之间存在联系。

【讨论】:

【参考方案2】:

听起来像是与 Gimbal Lock 相关的问题,尤其是在处理俯仰旋转时。你可以看看iPhone - understanding iPhone rotation

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

【讨论】:

以上是关于iPhone 陀螺仪 - 为啥 YAW 和 PITCH 连接?的主要内容,如果未能解决你的问题,请参考以下文章

MPU6050陀螺仪与Processing和上位机飞控联动实录

iPhone 5 陀螺仪表现不佳

维特WT931 姿态角度传感器(陀螺仪)使用记录

2 个传感器读数融合(偏航、俯仰)

无人机学习Pix4

iPhone - 使用陀螺仪/加速度计检测运动