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

  • 22
  • 0
  • 约6.01千字
  • 约 12页
  • 2021-01-23 发布于北京
  • 举报

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

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)

1亿VIP精品文档

相关文档