核心运动陀螺仪 360 度值

Posted

技术标签:

【中文标题】核心运动陀螺仪 360 度值【英文标题】:Core Motion Gyroscope 360 degree values 【发布时间】:2012-01-05 04:59:39 【问题描述】:

我正在测试 Core Motion 并使用陀螺仪。现在我得到了我不理解的价值观。我的假设是,对于每个 x、y 和 z,我会得到一个介于 0-360 之间的值,这将是一个完整的旋转,但事实并非如此。

[self.motionManager startGyroUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMGyroData *gyroData, NSError *error) 
     NSString *x = [NSString stringWithFormat:@"%.02f",gyroData.rotationRate.x];
     NSLog(@"X: %@", x);

     NSString *y = [NSString stringWithFormat:@"%.02f",gyroData.rotationRate.y];
     NSLog(@"Y: %@", y);

     NSString *z = [NSString stringWithFormat:@"%.02f",gyroData.rotationRate.z];
     NSLog(@"Z: %@", z);

    frequency = gyroData.rotationRate.y*500;

    float rate = gyroData.rotationRate.z;
    if (fabs(rate) > .2) 
        float direction = rate > 0 ? 1 : -1;
        rotation += (direction * M_PI/90.0)*1000;
        NSLog(@"Rotation: %f", rotation);
    

 ];

可以获得更多人类可读的旋转值吗?我假设我应该得到 0-360 之间的值是错误的吗?

【问题讨论】:

【参考方案1】:

这些值是弧度,而不是度数,所以它们应该在 0 到 2Pi 之间。此外,它们是一个速率,而不是一个角度。它们是每秒弧度。

【讨论】:

好的。那么设备是否知道我旋转了它的次数? 我不这么认为。它只是给你它转动的角速率(比如 Pi / 3 弧度每秒)。您的应用程序需要随着时间的推移对其进行跟踪,以确定它被旋转了多少次。 好的,那我怎么知道手机的角度呢?陀螺仪不就是可以用的吗?例如具有关卡的应用程序或滚球游戏? 查看this answer。

以上是关于核心运动陀螺仪 360 度值的主要内容,如果未能解决你的问题,请参考以下文章

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

我可以在浏览器中使用陀螺仪更改 360 YouTube 视频的视图吗?

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

使用加速度计、陀螺仪和指南针计算设备在 3D 世界中的运动

垂直运动传感器

如何用陀螺仪测加速度