首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用deviceMotion姿态值(滚转、俯仰和偏航)检测运动

如何利用deviceMotion姿态值(滚转、俯仰和偏航)检测运动
EN

Stack Overflow用户
提问于 2013-05-17 06:30:17
回答 1查看 11.1K关注 0票数 7

我在我的应用程序中使用coreMotion来检测iOS设备的运动。我知道如何从coreMotion获取不同传感器的数据。我正在获得滚动、俯仰和偏航数据,如deviceMotion所示

代码语言:javascript
复制
 float pitch =  (180/M_PI)*self.manager.deviceMotion.attitude.pitch];
 float roll = (180/M_PI)*self.manager.deviceMotion.attitude.roll];
 float yaw = (180/M_PI)*self.manager.deviceMotion.attitude.yaw];

如何使用这些数据来检测运动?我需要做些什么计算?

EN

回答 1

Stack Overflow用户

发布于 2013-09-30 08:55:46

姿态值需要以下列方式启动设备运动更新:

代码语言:javascript
复制
startDevicemotionUpdates

若要监视设备移动时的姿态值,请使用要在标签中显示的姿态值:

代码语言:javascript
复制
[self.cmMotionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMDeviceMotion *devMotion, NSError *error) {

float pitch =  (180/M_PI)*self.manager.devMotion.attitude.pitch];
float roll = (180/M_PI)*self.manager.devMotion.attitude.roll];
float yaw = (180/M_PI)*self.manager.devMotion.attitude.yaw];

self.rollLabel.text = [NSString stringWithFormat:@"%f", roll];
self.pitchLabel.text = [NSString stringWithFormat:@"%f",pitch];
self.yawLabel.text = [NSString stringWithFormat:@"%f",yaw];
}

另外,最好不要使用滚动,俯仰和偏航(也就是欧拉角)。使用四元数或旋转矩阵以获得更高的精度。欧拉角往往处于一种叫做万向节锁的情况下,这会导致不可靠的数据。

请检查此链接以了解如何使用四元数,并将该值转换为滚动、俯仰和偏航值:SO link

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16602840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档