iOS 加速计和陀螺仪 简介

IOS -- 加速计、陀螺仪 加速计是用来检测手机受到的加速度的大小和方向的,而手机静置的时候,只受到重力加速度,所以很多人又把加速计功能成为重力感应功能。   加速计的强项在于测量设备的重力方向。但是对于运动过程中的受力情况就无法准确地识别。所以对于运动过程中的方向感应,我们使用陀螺仪。   iPhone提供了内置的加速计,也叫方向感应器,是通过感知特定方向的惯力总量,测量出加速度和重力的,是IOS很重要的特色功能之一。 阅读详情

一、CoreMotion框架介绍

我们知道有一些iOS的应用,会有一些特殊的要求,比如:
1. 电子罗盘指南针之类的应用:让我们知道方向。
2. 运动类型软件:让我们知道我们跑步多少公里。
3. 社交软件中的摇一摇功能。
4. 游戏中扮演角色类中根据设备的晃动等进行操作。

其实,他们多半是使用了iOS中的一个核心运动框架CoreMotion.framework

使用iOS提供给我们的CoreMotion框架,主要是为了访问加速度计和陀螺仪的相关数据。 它不仅仅提供给你获得实时的加速度值和旋转速度值,更重要的是,苹果在其中集成了很多算法,可以直接给你输出把重力加速度分量剥离的加速度,省去你的高通滤波操作,以及提供给你一个专门的设备的三维位置信息。
传感器介绍:
加速度计:
加速度计的原理很简单,现在手机里面基本配备的都是3维线传感器,也就是说,用来测量x,y,z三个轴上的加速力。加速力就是当物体在加速过程中作用在物体上的力,就好比地球引力,也就是重力。
<img alt="\" src="http://www.2cto.com/uploadfile/Collfiles/20160418/20160418153000105.png" title="" kf="" ware="" vc="" "="" target="_blank" class="keylink" style="border-width: 0px; padding: 0px; margin: 0px; list-style: none; color: rgb(51, 51, 51); font-family: 宋体; font-size: 14px; width: 340px; height: 395px;">

vc/yo6y1sdTLtq/O78zltcTUy7avt73P8sarwOvUpLaot73P8sqxo6zN08Ld0se+zb/J0tS40Mrcs/bAtKGjPGJyIC8+DQo8aW1nIGFsdD0="" src="/uploadfile/Collfiles/20160418/20160418153000107.png" title="\" />

二、CoreMotion使用

\

CoreMotion主要负责三种数据:
加速度值CMAccelerometerData 陀螺仪值CMGyroData 设备motion值CMDeviceMotion

实际上,这个设备motion值就是通过加速度和旋转速度进行变换算出来的
\

CMDeviceMotion属性介绍:
attitude:通俗来讲,就是告诉你手机在当前空间的位置和姿势 gravity:重力信息,其本质是重力加速度矢量在当前设备的参考坐标系中的表达 userAcceleration:加速度信息 rotationRate:即时的旋转速率,是陀螺仪的输出
使用CoreMotion的步骤:
初始化CMMotionManager管理对象 调用管理对象的对象方法获取数据,有2种方式 处理数据 当你不需要使用的时候,停止获取数据
-(void)stopAccelerometerUpdates;//停止获取加速度计数据
-(void)stopGyroUpdates;//停止获取陀螺仪数据
-(void)stopDeviceMotionUpdates;//停止获取设备motion数据
在CoreMotion中有2种获取数据方式:
Push方式:
提供一个线程管理器NSOperationQueue和一个回调Block,CoreMotion自动在每一个采样数据到来的时候回调这个Block,进行处理。在这种情况下,Block中的操作会在你自己的主线程内执行。 Pull方式:
你必须主动去向CMMotionManager要数据,这个数据就是最近一次的采样数据。你不去要,CMMotionManager就不会给你。
1. 加速度计使用Pull方式获取:
- (void)useAccelerometerPull{
    //初始化全局管理对象
    CMMotionManager *manager = [[CMMotionManager alloc] init];
    self.motionManager = manager;
    //判断加速度计可不可用,判断加速度计是否开启
    if ([manager isAccelerometerAvailable] && [manager isAccelerometerActive]){
        //告诉manager,更新频率是100Hz
        manager.accelerometerUpdateInterval = 0.01;
        //开始更新,后台线程开始运行。这是Pull方式。
        [manager startAccelerometerUpdates];
    }
    //获取并处理加速度计数据
    CMAccelerometerData *newestAccel = self.motionManager.accelerometerData;
    NSLog(@"X = %.04f",newestAccel.acceleration.x);
    NSLog(@"Y = %.04f",newestAccel.acceleration.y);
    NSLog(@"Z = %.04f",newestAccel.acceleration.z);
}
2. 加速度计使用Push方式获取:
- (void)useAccelerometerPush{
    //初始化全局管理对象
    CMMotionManager *manager = [[CMMotionManager alloc] init];
    self.motionManager = manager;
    //判断加速度计可不可用,判断加速度计是否开启
    if ([manager isAccelerometerAvailable] && [manager isAccelerometerActive]){
        //告诉manager,更新频率是100Hz
        manager.accelerometerUpdateInterval = 0.01;
        NSOperationQueue *queue = [[NSOperationQueue alloc] init];
        //Push方式获取和处理数据
        [manager startAccelerometerUpdatesToQueue:queue
                 withHandler:^(CMAccelerometerData *accelerometerData, NSError *error)
         {
             NSLog(@"X = %.04f",accelerometerData.acceleration.x);
             NSLog(@"Y = %.04f",accelerometerData.acceleration.y);
             NSLog(@"Z = %.04f",accelerometerData.acceleration.z);
         }];
    }
}
3. 陀螺仪使用Push方式获取,Pull方式就不列出来了,和加速度计使用相似:
- (void)useGyroPush{
    //初始化全局管理对象
    CMMotionManager *manager = [[CMMotionManager alloc] init];
    self.motionManager = manager;
    //判断陀螺仪可不可以,判断陀螺仪是不是开启
    if ([manager isGyroAvailable] && [manager isGyroActive]){

        NSOperationQueue *queue = [[NSOperationQueue alloc] init];
        //告诉manager,更新频率是100Hz
        manager.gyroUpdateInterval = 0.01;
        //Push方式获取和处理数据
        [manager startGyroUpdatesToQueue:queue
                             withHandler:^(CMGyroData *gyroData, NSError *error)
        {
            NSLog(@"Gyro Rotation x = %.04f", gyroData.rotationRate.x);
            NSLog(@"Gyro Rotation y = %.04f", gyroData.rotationRate.y);
            NSLog(@"Gyro Rotation z = %.04f", gyroData.rotationRate.z);
        }];
    }
}

CMMotionManager常用的属性

CMAttitude的三个属性Yaw,Pitch和Roll分别代表左右摆动、俯仰以及滚动。它的大小跟速度没有关系只跟位置有关。

motionManager.attitude.yaw(左右摆动)

motionManager.attitude.pitch(俯仰)

motionManager.attitude.roll(滚动)

Gravity的三个属性x,y,z代表重力1g在三个轴上的设备的重力分布情况,它的大小跟速度没有关系只跟位置有关。

motionManager.gravity.x

motionManager.gravity.y

motionManager.gravity.z

UserAcceleration三个属性x,y,z代表三个轴上的设备运动的加速度分布情况,它的大小跟位置没有关系只跟单位时间内的速度变化有关。

motionManager.userAcceleration.x

motionManager.userAcceleration.y

motionManager.userAcceleration.z

CMRotationRate的X,Y,Z分别代表三个轴上的旋转速率,单位为弧度/秒。它的大小跟位置没有关系只跟速度大小有关。

motionManager.rotationRate.x

motionManager.rotationRate.y

motionManager.rotationRate.z



iOS CMMotionManager之加速计、陀螺仪 前言 今天我们学习的是CoreMotion框架中的加速计和陀螺仪。 通过CoreMotion框架提供的加速计来获取设备当前的加速度数据、陀螺仪数据、所处的磁场以及设备的方位等信息。 对于iOS应用开发者来说,开发传感器应用十分简单,CoreMotion框架的核心API就是CMMotionManager。 开发者只要创建一个CMMotionManager对象,接下来即可采用定时器周期 阅读详情

相关推荐

加速计+ 陀螺仪+磁场

第6章 加速计与陀螺仪 本章要点    加速计理论基础 陀螺仪理论基础 使用代码块来获取加速度数据、陀螺仪数据、磁场数据 使用CMMotionManager、CMDeviceMotion感知设备的移动 iOS7新增的CMStepCounter iOS7新增的CMMotionActivityManager iOS系统提供了加速计与陀螺仪支持,如果iOS设备提供了这些硬件支

水滴石穿 2096

iOS开发- CMMotionManager 开发

其中陀螺仪、加速计和磁力计的数据获取均依赖于 CMMotionManager。

旭日的博客 1175

加速计和陀螺仪(CoreMotion框架)

一、CoreMotion框架介绍我们知道有一些iOS的应用,会有一些特殊的要求,比如: 1. 电子罗盘指南针之类的应用:让我们知道方向。 2. 运动类型软件:让我们知道我们跑步多少公里。 3. 社交软件中的摇一摇功能。 4. 游戏中扮演角色类中根据设备的晃动等进行操作。 其实,他们多半是使用了iOS中的一个核心运动框架CoreMotion.frameworkCoreMotion框架,主要是

1461

iOS_陀螺仪、加速计的使用

CoreMotion是一个专门处理Motion的框架,其中包含了两个部分加速度计和陀螺仪,在iOS4之前加速度计是由UIAccelerometer类来负责采集数据,现在一般都是用CoreMotion来处理加速度过程,不过由于UIAccelerometer比较简单,同样有人在使用。 CoreMotionManager类能够使用到设备的所有移动数据(motion data),Core Motion框

翱翔的魁魁 1787

GD32F470实战:如何用EXMC+SDRAM为LVGL打造超大内存池(附完整配置代码)

本文详细介绍了如何利用GD32F470的EXMC接口与SDRAM深度整合,为LVGL构建高性能内存解决方案。通过硬件架构设计、EXMC接口配置、高级内存管理策略及LVGL性能优化技巧,开发者可以突破微控制器内存限制,实现高分辨率显示和复杂动画效果。附完整配置代码,助力嵌入式GUI开发。

rrr55的博客 545

告别CANoe?手把手教你用Python+PCAN搭建汽车诊断脚本(附完整代码)

本文详细介绍了如何利用Python和PCAN硬件搭建高性价比的汽车诊断自动化方案,替代昂贵的CANoe工具。通过开源库python-can和udsoncan实现UDS诊断协议,涵盖硬件选择、环境配置、核心功能实现及性能优化,附完整代码示例,助力开发者快速构建诊断脚本。

weixin_42551227的博客 373

iOS开发-CoreMotion核心动作开发-陀螺仪CMRotationRate-加速计CMAcceleration-磁强计Magnetometer开发CoreMotion核心动作实践

CoreMotion 核心动作 简介:CoreMotion是iOS系统目前用于处理加速度计,陀螺仪,计步器和环境相关事件。 Core Motion的报告来自iOS设备的板载硬件的运动和环境相关数据,包括加速度计和陀螺仪,以及计步器,磁力计和气压计。您可以使用此框架访问硬件生成的数据,以便在应用程序中使用它。例如,游戏可能使用加速度计和陀螺仪数据来控制屏幕上的游戏行为。 提示: 在iOS 10.0...

伪随机的张三 3945

CST毫米波雷达ADAS仿真:从直角反射器到距离多普勒(RD图)的实战解析

本文通过CST Studio Suite实战解析毫米波汽车雷达ADAS仿真,详细演示了从构建直角反射器目标、参数化定义速度、进行参数扫描到生成距离多普勒图(RD图)的全过程。文章深入探讨了雷达关键参数(如距离分辨率、速度分辨率)的设计权衡与工程逻辑,并提供了单位统一、速度范围设定等实用避坑指南,帮助工程师高效完成雷达系统性能的前期验证与优化。

weixin_29292535的博客 502

iPhone6、iPad Pro惯性传感器性能对比

iPhone6、iPad Pro惯性传感器性能对比引言1.标定2.结果4.对比分析4.Allan Variance分析5.结果6.TODO 引言 厉害!原文是github.io制作的博客页,估计博主那边能正常显示公式,但是我这边不能,转贴一下! 机型 iPhone6 iPad Pro 上市时间 2014.9 2015.9 操作系统 iOS 11.0 beta2 iOS 11.0...

fb_941219的博客 1429

用Linkboy玩转Arduino:3小时搞定智能倒车雷达(附仿真文件下载)

本文详细介绍了如何利用Linkboy图形化编程工具,在3小时内快速搭建一个基于Arduino的智能倒车雷达项目。通过仿真环境,初学者无需硬件即可学习超声波测距原理、报警逻辑设计,并完成从虚拟仿真到实体硬件的完整流程。文章提供了清晰的步骤、调试技巧及功能扩展思路,并附有仿真文件,是入门Arduino和智能硬件制作的绝佳实践指南。

weixin_29159441的博客 402

Java使用easyExcel生成excel文件直接写入邮件附件并发送

1.引入pom依赖 <!-- email --> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> <!-- easyexcel需要依赖poi jar包 --> <depe

weixin_50493320的博客 3909

四轴飞控DIY调试起飞简明步骤

四轴飞控DIY调试起飞简明步骤

lida2003的专栏 4474

手把手教你学Simulink--Simulink智能驾驶场景挑战:高速公路入口匝道汇入仿真

高速公路入口匝道汇入在智能驾驶中的作用是当车辆从入口匝道进入主干道时,系统能够自主决策并执行汇入操作,确保安全和高效。目标识别与跟踪:如检测前方障碍物、识别车道线。路径规划:如计算最优汇入路径。动态控制:如调整速度、转向等以完成汇入动作。本示例将展示如何使用Simulink构建一个用于智能车辆高速公路入口匝道汇入的仿真模型,并进行验证。通过本指南,我们介绍了如何基于Simulink搭建一个用于智能车辆高速公路入口匝道汇入的仿真模型,并进行仿真和性能评估。背景介绍。

MHD0815的博客 261

加速计和陀螺仪

前言 最近因为工作需要对加速计和陀螺仪进行学习和了解,过程中有所收获。 正文 一、加速计 iPhone在静止时会受到地球引力,以屏幕中心为坐标原点,建立一个三维坐标系(如右图),此时iPhone收到的地球引力会分布到三个轴上。 iOS开发者可以通过CoreMotion框架获取分布到三个轴的值。如果iPhone是如图放置,则分布情况为x=0,y=-1.0,z=0。 在CoreMotion中地...

努力,可能成功!放弃,注定失败! 782

数据治理——详解元数据、资源目录、主数据、数据元、元数据管理、主数据管理【附全文阅读】

摘要:数据中心建设的核心是元数据管理,即"描述数据的数据",包含内容、质量、所有者等关键信息。元数据在数据仓库中记录数据源、转换规则等,是管理基础;主数据管理则确保核心业务数据的准确一致。二者共同构建高效的数据资源目录,为数据服务提供支撑。(99字)

cdfunlove的博客 98

损失函数大汇总(六十一)(Signed Distance Map Loss附公式推导与代码)

摘要 本文介绍了Signed Distance Map (SDM) Loss,一种将形状先验直接融入分割任务的方法。SDM将每个像素表示为到目标边界的带符号距离(内部为负,外部为正),相比二值mask能更连续地表达形状几何信息。SDM Loss的核心思想是让网络学习这个隐式形状场,通过可微的Heaviside函数近似将SDM转换为分割结果。文中重点分析了一种product-based regression loss,它能同时关注距离数值和内外符号的正确性,对边界区域尤为敏感。SDM Loss通常与传统的分割

悦学共鸣,温柔以待,汇聚光芒,共同成长 186

加速计.陀螺仪的使用

加速计 加速计用来检测手机受到加速度的方向和大小.但是主要用于重力感应,对于运动中得过受力情况就无法准确感应,所以对于运动过程中的感应方向,我们使用陀螺仪. iPhone内置的加速计也叫方向感应器. 感应器通过跟踪期在X.Y.Z轴上面的重力加速度的方向,检测当前设备的方向,比如是平躺着还是倒立着,平面是向上还是向下,手持时iPhone的home键的方向.  还可以通过加速侦测晃动事件. 对应

iosYangming的博客 1911

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

iOS 加速计和陀螺仪

一、概念 加速计:通过感知特定方向的惯性力总量,测量x,y,z轴三个方向的加速度。 陀螺仪:测量绕x、y、z 三个方向的旋转的值。特性:如果保持手机平放的同时旋转它,加速计的值不会改变,此时它将是绕 z 轴的旋转值发生改变。顺时针旋转设备将生成负值,逆时针旋转生成正值。 二、 CoreMotion框架 加速计和陀螺仪是通过 Core Motion 框架访问的。此框架...

402

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

陀螺仪、加速计、磁力计等传感器汇总

http://blog.youkuaiyun.com/a345017062/article/details/6459643 陀螺仪就是内部有一个陀螺,它的轴由于陀螺效应始终与初始方向平行,这样就可以通过与初始方向的偏差计算出实际方向。手机里陀螺仪实际上是一个结构非常精密的芯片,内部包含超微小的陀螺。 加速计是用来检测手机受到的加速度的大小和方向的,而手机静置的时候是只受到重力加速度(这个高中学过)

Gabby 3266

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

iOS学习笔记 加速计和陀螺仪

一、CoreMotion框架介绍 我们知道有一些iOS的应用,会有一些特殊的要求,比如: 电子罗盘指南针之类的应用:让我们知道方向。运动类型软件:让我们知道我们跑步多少公里。社交软件中的摇一摇功能。游戏中扮演角色类中根据设备的晃动等进行操作。 其实,他们多半是使用了iOS中的一个核心运动框架CoreMotion.framework 使用iOS提供给我们的CoreMoti

sifenkesi1的专栏 2748

加速计与陀螺仪

转载:http://www.cnblogs.com/wayne23/p/3671101.html 加速计与陀螺仪 设备静止时受到的地球引力为1g,1g是物体在地球的海平面上受到的下拉力(9.8米/秒²)。假如设备从高处掉落,其加速计测量到的加速度将为0g。假如设备水平放在桌面上,则加速计测量出的加速度为1g,且方向朝上。 加速计测量3个轴(x、y和z)上的值,如图所示:

xiaotian9959的专栏 959

iOS加速计和陀螺仪

iOS系统提供了加速计和陀螺仪支持,如果iOS设备提供了这些硬件支持,iOS即可通过CoreMotion框架提供的加速计来获取设备当前的加速度数据、陀螺仪数据、所处的磁场以及设备的方位等信息; 对于iOS应用开发者来说,开发传感器应用十分简单,CoreMotion框架的核心API是CMMotionManager,开发者只要创建一个CMMotionManager对象,接下来即可采用定时器周期性

上孟的专栏 7528

iOS学习笔记34-加速计和陀螺仪

一、CoreMotion框架介绍我们知道有一些iOS的应用,会有一些特殊的要求,比如: 1. 电子罗盘指南针之类的应用:让我们知道方向。 2. 运动类型软件:让我们知道我们跑步多少公里。 3. 社交软件中的摇一摇功能。 4. 游戏中扮演角色类中根据设备的晃动等进行操作。其实,他们多半是使用了iOS中的一个核心运动框架CoreMotion.framework 使用iOS提供给我们的CoreMo

执着丶执念的博客 2967

iOS 传感器(加速计 + 陀螺仪)

iOS中常用的传感器主要有以下2种  (1)加速计  加速计使用度量单位g,这是重力(gravity)的简称。1g是物体在地球的海平面上收到的下拉力(9.8米/秒)  加速计以相对于自由落体的方式度量加速度。  这意味着如果将iOS设备在能够持续自由落体的地方丢下,在下落过程中,其加速计测量到的加速度将为0g。  另一方面,放在左面上的设备的加速度计测量出的加速度为1

司马懿的西山居 3852
上一篇: UIImage 加载方式及优化
下一篇: 常用 Git 命令
直隶码农
博客等级 码龄19年 95粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值