移动应用软件开发综合实训(基于iOS平台)-2017 朝向和运动检测 CoreMotion.docx

移动应用软件开发综合实训(基于iOS平台)-2017 朝向和运动检测 CoreMotion.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CoreMotion (加速仪与陀螺仪) 一、CoreMotion 主要是使用?CMMotionManager iOS中的主要传感器: @ 加速度传感器 电子罗盘 陀螺仪 功能 通过测量三个轴的加速度大小来判断人体运动 通过测量设备周围地磁场的强度和方向来判断朝向 通过测量三个轴的旋转速率来判断朝向 主要 局限性 受重力干扰大,瞬时误差大 误差大, 容易受其他磁场和金属物体影响。主要用于校正其他设备 误差会累积,长时间读数的准确性差 应用 活动测量 导航 导航 1、加速仪 (类型:CMAcceleration) 简介: 加速仪可以检测三维空间中的加速度 ,坐标对应如下: 例如:当垂直手持手机且顶部向上,Y坐标上回收到 -1G的加速度。 2、陀螺仪 (类型:CMRotationRate) 简介: 陀螺仪用于检测设备绕XYZ轴转动的速度,坐标对应如下: 3、deviceMotion 包含下面四种数据: (1)attitude(类型:CMAttitude) 返回设备的方位信息,包含roll 、pitch、yaw三个欧拉角的值 roll: 设备绕 Z 轴转过的角度 pitch: 设备绕 X 轴转过的角度 yaw: 设备绕 Y 轴转过的角度 (2)rotationRate(类型:CMRotationRate) 经过滤波操作之后的陀螺仪数据,即 静止时,三个方向的转动速度接近于0; (3)gravity(类型:CMAcceleration) 返回重力对设备在三个方向上的加速度,即重力加速度矢量在当前设备的参考坐标系中的表达,开发中不再需要通过滤波来提取这个信息 (4)userAcceleration(类型:CMAcceleration) 返回用户对设备在三个方向上的加速度 不再需要滤波,但根据程序需求而加的滤波算法可以保留 示例: 数据获取方式有两种:主动获取(pull),基于代码块获取(push) 主动获取 -(void)viewDidLoad { [super viewDidLoad]; // 创建CMMotionManager对象 self.motionManager = [[CMMotionManager alloc] init]; // ① // 如果CMMotionManager的支持获取加速度数据 if (self.motionManager.accelerometerAvailable) { [self.motionManager startAccelerometerUpdates]; } else { NSLog(@该设备不支持获取加速度数据!); } // 如果CMMotionManager的支持获取陀螺仪数据 if (self.motionManager.gyroAvailable) { [self.motionManager startGyroUpdates]; } else { NSLog(@该设备不支持获取陀螺仪数据!); } // 如果CMMotionManager的支持获取磁场数据 if (self.motionManager.magnetometerAvailable) { [self.motionManager startMagnetometerUpdates]; } else { NSLog(@该设备不支持获取磁场数据!); } } -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // 启动定时器来周期性地轮询加速度、陀螺仪、磁场数据 updateTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateDisplay) userInfo:nil repeats:YES]; // ② } -(void)updateDisplay { // 如果CMMotionManager的加速度数据可用 if (self.motionManager.accelerometerAvailable) { // 主动请求获取加速度数据 CMAccelerometerData* accelerometerData = self.motionManager.accelerometerData; self.accelerometerLabel.text = [NSString stringWithFormat: @加速度为\n-----------\nX轴: %+.2f\nY轴: %+.2f\nZ轴: %+

文档评论(0)

WanDocx + 关注
实名认证
内容提供者

大部分文档都有全套资料,如需打包优惠下载,请留言联系。 所有资料均来源于互联网公开下载资源,如有侵权,请联系管理员及时删除。

1亿VIP精品文档

相关文档