- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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轴: %+
您可能关注的文档
- 移动互联工程实训-2017 首页布局的设计 单元教教学设计- 首页布局的设计.doc
- 移动互联网络组建 典型应用案例 农业物联网应用案例.docx
- 移动商务视觉设计2 移动商务视觉设计2 案例:图片制作-抠图.doc
- 移动商务视觉设计2 移动商务视觉设计2 案例:图片制作-图片锐化.doc
- 移动商务视觉设计2 移动商务视觉设计2 案例:图片制作-图片修复.doc
- 移动通信接入网运行与维护 IUB接口与协议栈-控制面 实验八 RNC IUB接口控制面数据配置(仿真环境).docx
- 移动通信接入网运行与维护 IUB接口与协议栈-用户面 实验九 RNC IUB接口用户面数据配置(仿真环境).docx
- 移动通信接入网运行与维护 NodeB传输层数据配置 实验十二 NODEB传输数据配置(仿真环境).docx
- 移动通信接入网运行与维护 UMTS系统 实验一 WCDMA-RAN系统介绍(仿真环境).docx
- 移动应用服务器端开发(基于JSP技术)-2017 样式 样式和主题.docx
文档评论(0)