




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于MATLAB和Android智能手机传感器的计步器的设计徐文力,李明辉(陕西科技大学机电工程学院,陕西 西安)摘 要:本文设计的是一种基于MATLAB和Android智能手机传感器的计步器,首先分析了人体运动时加速度的变化规律,通过手机传感器获取三维加速度值,然后由sensorudp APP以UDP数据包的形式通过无线网络发送给运行着MATLAB软件的计算机,利用MATLAB软件强大的科学计算功能对数据包进行解析得到加速度的值,并进行滤波和样条插值等处理,最后得出运动的步数,进而求出运动的距离以及能耗,为健康运动提供了判断依据。关键词:智能手机;计步器;无线网络;滤波中图分类号:TN91
2、文献标识码:BDesign of pedometer based on MATLAB and the smartphone sensorsLi ,Xu (College of Mechanical and Electrical Engineering,Shaanxi University of Science & Technology,xian shaanxi ,China)ABSTRACT: This paper designs a pedometer based on MATLAB and the Android smartphones sensor. First analysis the
3、 change law of acceleration of the human body when people exercise, obtaining 3D acceleration through mobile phone sensor, and then send to the computer which running MATLAB software in the form of UDP packets through the wireless network by the sensorudp APP, and use the powerful MATLAB software to
4、 decode the packets to get the acceleration, and then execute the filter and spline interpolation, and get the number of steps , the distance and energy consumption, which can provide the basis to judge the movement. KEYWORDS: Smartphones; Pedometer; Wireless network; Filter;0 引言Android智能手机自推出以来,其内置
5、传感器逐渐增多,传感器所实现的功能也日益多样化,极大的满足了用户对智能手机功能的需求,从依赖于重力传感器的各种游戏,到依靠距离传感器实现的通话灭屏,再到指南针功能下的电子罗盘等等,小小的一个Android智能手机以各种传感器为依托实现了许多有趣的功能。因此,手机已经不再是一个简单的通讯工具,而是具有综合功能的便携式的电子设备。在这种情况下,各种传感器在手机上的应用应运而生。本文就是利用Android智能手机中的G-sensor传感器,结合MATLAB软件的强大计算功能,设计了一种计步器,通过对传感器数据进行分析处理得到运动的步数,进一步计算就可以得到运动速度、距离和能耗等数据。在全民健康意识普
6、遍提高的背景下,各种运动器具变得炙手可热,而计步器的应用可有效辅助提高运动效果,达到健康运动的目的。1 计步器原理要实现检测步数首先要对人走路的姿态有一定了解。以步伐特征的研究为基础,考虑到人体行走时脚、腿、腰部和手臂都在运动,它们的运动都会产生相应的加速度,趋势就是不断地上下起伏近似为正弦过程。测量正弦波的频率就可以得出运动的步数,进而可以计算出速度,距离,和消耗卡路里。从脚的加速度来检测步数是最准确的,但是考虑到携带的方便,选择利用腰部的运动来检测步数,因为,行走时腰部有上下的垂直运动,所以会产生一个上下波动比较大的加速度值。由于采用的是智能手机中的加速度传感器(如图1所示),它有三个轴可
7、以对应人体运动的三个方向,因此首先规定人体前进方向为y轴,左右运动为x轴,上下运动为z轴。无论手机如何放置,总会检测到三个方向的加速度值、和,从而求出合加速度a:(1-1)当手机静止不动时,a的理想值为重力加速度g。当检测到有动作时a值就会在g值上下变化,为了计算方便可以取变量A=a-g,使A值在0上下波动。以人体重心为参考点,只考虑z轴方向,则可以将行走的过程分为两个阶段:重心由最低到最高的过程和重心由最高到最低的过程。在重心由最低到最高的过程中,人体z轴方向的速度由零上升到某一值,然后又从该值减少到零,在整个过程中速度为正,即方向为z轴正方向。所以,加速度的变化应该从到最后又回到,其中为正
8、值。在重心由最高到最低的过程中,人体z轴方向速度由零上升到某一值,然后又从该值减少到零,在整个过程中速度为负,即方向为z轴负方向。所以,加速度的变化应该从到最后到又回到,其中为正值。由此可以得出变量A一个周期内的变化过程近如图2所示:图1 手机三维加速度方向Fig.1 3D acceleration direction of mobile phone图2 A的变化规律Fig.2 change law of A可以看出参数A的变化曲线近似为一个正弦信号,所以只需求出正弦信号的频率就可知道所走的总的步数。但是上图只是理想的波形,实际中传感器会产生抖动,得到的波形含有大量干扰信号,必须进行处理才能得
9、到较好的波形。2 建立通讯MATLAB支持从Android设备的内置传感器中获得数据,通过MATLAB对Android传感器的支持包,可以从Android设备所支持的传感器中记录数据或者查看最新的可用数据,进而通过分析数据可以开发不同的应用。这样做的前提是必须事先在手机上安装sensorudp APP,同时必须保证运行MATLAB软件的计算机和安装sensorudp APP的智能手机处于同一个网络中。这里面提到的Sensorudp是由Takashi SASAKI开发的一款智能手机应用(如图3所示),可以获取手机各种传感器的数据,包括:三维方向的加速度;三维方向的角速度;方位角、横倾角以及纵倾角
10、;维度,经度,高度和速度;图3 sensorudp APP界面Fig.3 Interface of sensorudp APP首先在计算机上建立WiFi网络,然后打开手机中的WLAN功能并连接到所建立的WiFi网络。手机和计算机之间实现无线通讯之后, MATLAB就可以接收sensorudp发出UDP数据包,通过编写好的函数命令来解析这些数据包。这些函数命令可以从mathworks官网上下载,并放在MATLAB的工作路径中。其中最重要的函数命令为obj=sensorgroup(deviceType),该命令会提示对sensorudp进行设置以建立通讯,如图4所示。其中有两个重要的属性需要根据提
11、示进行设置:IPAddress用于设置主机的以太网接口的IP地址,本文中设置为192.168.191.1;Port用于设置主机的以太网端口,本文中设置为50000;做完这些设置后选择所需要的传感器数据发送到MATLAB。本文中只用到的加速度值,因此只需要选择accelerometer cvs line即可。图4 通讯设置提示Fig.4 Communication tips3 数据的测量和分析处理数据的测量和分析处理是计步器设计的关键步骤,贯穿整个过程,具体的计步器程序流程如图5所示:开始建立通讯计时记录加速度求出合加速度a并计算A=a-g均值滤波样条插值取上半面图形判断极值点计算个数更新图形终
12、止YN时间到图5 程序流程图Fig.5 Program flow chart通讯建立好之后,就可以获取传感器数据了,首先需要得到本地重力加速度的值。由于一个地方的重力加速度跟纬度和海拔有关,所以不同地方的重力加速度取值不一样。同时,由于手机本身的原因以及周围环境的影响都可能对传感器的检测造成干扰。本文采用实验的方法利用智能手机中的G-sensor传感器得到检测值并求取平均值。具体方法是将手机静止放在地面上,取三个不同的位置在每个位置处将手机正面,反面,侧面放置并各测量一次,每次接收20秒钟的数据,共测量9次,每一次测量都会得到一系列的数值,对其求取平均值,最后将得到的9个平均值相加再求取平均值
13、,该值可以看作本地的重力加速度值。最后的测量结果为:=9.8269,9.8208,9.8220,9.8310,9.8142,9.8151,9.8188,9.8189,9.8180,求平均值后取g=9.8206。接下来将手机固定于身体腰部,开始走路并运行程序,一段时间后停下并记录所走的步数为16步,同时程序记录下在整个过程中三个方向的加速度的变化,其中有两个方向的加速度变化较小,有一个方向的加速度变化较大,如图6所示:图7 变量A的曲线Fig.7 Curve of A图6 三维加速度曲线Fig.6 3D acceleration curve根据公式(2-1)求出合加速度a之后,可以得到变量A的图
14、像,如图7所示:A值总体上有规律地进行波动,但局部极大值极小值较多需要剔除。首先对变量A进行滤波,然后进行样条插值处理,在此过程中插入了10倍的数据点,可以得到图8:图8 滤波和插值后的A曲线Fig.8 The curve of A after filer and interpolation可以看出曲线平滑了好多,接下来取大于零的部分并找出拐点,由此可以确定波的个数即为步行数,部分程序为:abovezero=A0;%取大于零的部分zerocrossing=diff(abovezero)=1;%找出拐点zerocrossingIndex=find(zerocrossing);%获取拐点坐标ste
15、ps=numel(zerocrossingIndex);%计算拐点个数图9 计算拐点个数Fig.9 Calculate the number of inflection point最后结果: 图9 计算结果Fig.9 The final resultsteps =16,即行走步数为16步,与我们记录的一样。另外,在步数一定的情况下,由于每个人的身高和体重的不同,运动的步长也就不同,消耗的卡路里也就不同。因此可以手动输入这些值就能很容易计算出距离和能耗,当然也可以通过统计的方法来确定。4 结论本文在分析了人体运动时加速度的变化规律基础上,将MATLAB软件和Android智能手机传感器相结合,在二者之间建立无线网络,实现数据的通讯。对从传感器得到的加速度信号进行了滤波和插值等处理,得出的运动步数和记录的步数相吻合。随着智能手机的兴起,各种手机传感器的功能也越来越强大,若将其与功能强大的MATLAB软件相结合,将会为各种应用的开发提供便利,本文也是基于此做的一次有益的尝试。参考文献1 刘华洲.基于智能手机传感器的图像匹配技术研究D.西安电子科技大学 20132 张
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陕西省西安市长安区2024-2025学年七年级下学期期末历史试题(含答案)
- 湖南省衡阳市常宁市2024-2025学年八年级下学期期末考试英语试卷(含答案无听力原文及音频)
- 智能音箱市场竞争分析报告
- “一带一路”:全球治理的中国智慧知到智慧树答案
- 汉字书课件模板法
- 2025标准抵押担保借款合同范本
- 汉中市消防知识培训课件
- 机电设备安装设备搬运与吊装方案
- 研学基地师生互动与沟通机制方案
- 养鹅场饲料管理优化方案
- 语音主播协议合同
- 蜜雪冰城加盟合同(2025年版)
- 河道人工保洁作业指导书
- (一模)2025年3月济南市2025届高三模拟考试历史试卷(含答案解析)
- 拆除重建工程施工方案
- 油田突发污染事件应急预案
- Codesys培训课件教学课件
- 甲方业主项目管理手册
- 句法 课件-初升高衔接英语课程
- 安装聚氨酯冷库板施工方案
- 医院培训课件:《黄帝内针临床运用》
评论
0/150
提交评论