基于加速度计的虚拟电子呼啦圈的实现方法 |
|||||||
申请号 | CN201610326360.X | 申请日 | 2016-05-16 | 公开(公告)号 | CN105999611A | 公开(公告)日 | 2016-10-12 |
申请人 | 浙江工业大学; | 发明人 | 毛科技; 方凯; 方飞; | ||||
摘要 | 本 专利 公开了一种基于 加速 度计 的虚拟呼啦圈的实现方法。通过采集呼啦圈运动的加速度计数据做为训练样本,利用卡尔曼 滤波器 对训练样本进行滤波,采用朴素贝叶斯分类器作为分类 算法 。当运动人员在腰部佩戴虚拟呼啦圈做扭腰运动时,分类算法能判断运动人员的扭腰 力 度和幅度是否能达到真实呼啦圈运动的 水 平,如果达到则虚拟呼啦圈计1圈,最后通过蓝牙设备将运动结果发送到手机端方便用户查看。 | ||||||
权利要求 | 1.基于加速度计的虚拟电子呼啦圈的实现方法,包括如下步骤: |
||||||
说明书全文 | 基于加速度计的虚拟电子呼啦圈的实现方法技术领域背景技术[0002] 目前呼啦圈运动非常流行,它对身体健康非常有益,但是传统的呼啦圈非常笨重且不方便携,在狭小的空间内不能进行运动。很多人每天都需要进行这项运动,但是呼啦圈的局限性使得他们不能每天都进行。同时传统呼啦圈的笨重也会对运动者的腰部造成一定程度的损伤。 [0003] 针对上述问题,我们利用嵌入式技术设计了一种基于加速度计的虚拟电子呼啦圈,该电子设备的电路板尺寸非常小,方便携带,将其佩戴在腰间或置于上衣口袋即可进行呼啦圈运动。如果运动者的扭腰力度达到转传统呼啦圈的水平,该电子设备会自动计数一圈,否则不计数,并且运动者能通过电子设备的蓝牙模块与手机相连接查看运动结果。此项发明替代了传统的呼啦圈,使得这项运动能随时随进行,因此非常有意义。 发明内容[0004] 本发明要解决现有呼啦圈不方便使用的问题,提供一种基于加速度计的虚拟电子呼啦圈实现方法,该方法通过分析加速度计在呼啦圈运动中的波形特征判断是否完成一次呼啦圈运动,从而彻底解决了传统呼啦圈的不方便使用的问题。 [0006] 1.硬件方案 [0007] 本发明的硬件部分主要由16位超低功耗微控制器MSP430、adxl345加速度计、HC-05蓝牙设备和电池四部分组成。低功耗的adxl345加速度计可以对高达±16g的加速度进行高分辨率测量。MSP430单片机通过spi总线驱动加速度计,采集加速度计X、Y、Z轴的数据,采集频率为100Hz。MSP430单片机通过串口驱动蓝牙设备与用户的手机进行连接,并将结果发送到手机端方便用户查看。本发明采用800mA的锂电池供电。由于硬件功耗低,因此设备能运行较长时间。硬件大小为30mm*40mm*15mm,体积小非常方便用户携带。 [0008] 2.软件方案 [0009] 本发明设计了一套算法能准确判断出加速度产生的数据是否完成了一次呼啦圈运动。算法主要由卡尔曼滤波器和朴素贝叶斯分类器组成。卡尔曼滤波器对加速度计产生的数据进行滤波,去掉一些异常数据。呼啦圈运动训练样本的X、Y、Z轴波形呈周期性变化,在数据采集频率为100Hz的条件下,一个周期由m个点组成。通过分离出每个周期,然后提取每个周期的波形特征(均值、方差、有效值、峰值因子、三轴的相关性),最后利用提取的样本特征训练朴素贝叶斯分类器,训练结束后该分类器就能对实时加速度计数据集进行判断是否完成一次完整的呼啦圈运动。 [0010] 在虚拟电子呼啦圈运行的时候加速度计会产生大量的数据,该数据是一串时间相关的数据,如何高效的处理这些数据,产生有效的实时数据集非常关键,本发明采用滑动窗口的方法解决这个问题。一个完整的呼啦圈运动加速度计的每个轴会产生m个数据,我们就设置滑动窗口的大小为m,然后将滑动窗口中这3*m个数据分别提取上述的波形特征送入朴素贝叶斯分类器中判断滑动窗口内的数据是否能构成一次完整的呼啦圈运动,如果能则计一圈,否则滑动窗口向后滑动m/4个数据。该方法使得算法能实时判断正在进行的运动是否完成一次呼啦圈运动。 [0011] 基于加速度计的虚拟电子呼啦圈的实现方法,包括如下步骤: [0012] 步骤1:训练样本的特征提取; [0013] 11.首先招募10名志愿者做传统的转呼啦圈运动,将硬件佩戴在志愿者的腰部,每名志愿者转500圈,收集运动过程中的加速度数据作为训练样本,加速度计读取数据的频率为100Hz; [0014] 12.然后利用卡尔曼滤波器滤除训练样本中一些异常数据,通过滤波得到了可用的训练集。训练集中的数据分为3类,分别是加速度计X、Y、Z轴的数据。每个轴的数据在时间上是连续的,以时间为横坐标,数值为纵坐标是一串连续的周期性不规则波形。通过分析可知每个波代表转一次呼啦圈。接着对连续波形进行分割,求出每位志愿者转一次呼啦圈需要的加速度数据个数,并求取平均值m作为后续滑动窗口大小。最后求出每个波形的特征,包括均值、方差、有效值、峰值因子、三轴的相关性,这些波形特征呈现一定分布,以这些波形特征值作为输入训练步骤2中朴素贝叶斯分类算法。 [0015] 121.处理加速度计X轴数据; [0016] 假设X轴产生一个波形的数据为x1、x2、x3……xn,各个特征值计算方法如下: [0017] 101.均值: [0018] [0019] 102.方差 [0020] [0021] 103.有效值 [0022] [0023] 104.峰值因子 [0024] [0025] 式(1)、(2)、(3)(4)中n为加速度计X轴产生数据的数量, [0026] 式(4)中xp为x1…xn的最大值,E为有效值。 [0027] 122.以步骤121的方法,计算加速度计Y轴和Z轴的波形特征。 [0028] 123.加速度计X、Y、Z轴相关性计算 [0029] 假设Y轴产生的数据为y1、y2、y3…yn。相关性包括X和Y轴、X和Z轴、Y和Z轴的相关性,X和Y轴相关性如式子(5)所示, [0030] [0031] 式(5)中Jy为Y轴波形的平均值,Jx为X轴波形的平均值,xi为加速度计X轴产生的数据,yi为加速度计Y轴产生的数据。 [0032] 124.以步骤123的方法计算X和Z轴、Y和Z轴的相关性。 [0033] 步骤2:训练分类算法; [0034] 十名志愿者总共生成r圈的训练数据,对应的X、Y、Z轴分别有r个波形。这些波形基本包括了转呼啦圈的各种状态,因此训练的分类算法能适应不同人的要求。同时为了区分呼啦圈运动和其他运动,又收集非呼啦圈运动的动作的样本数据作为反面的训练样本。以这两组训练样本训练朴素贝叶斯分类器, [0035] 21.做波形均值的朴素贝叶斯分类器训练;假设采集走w步的数据为非呼啦圈运动的训练样本,并且以波形特征的均值为例,其他四个波形特征处理方法一致,具体训练过程如下所示: [0036] 呼啦圈运动波形特征的平均值为JJ={J1、J2、J3、…Jr},以dj为梯度对JJ进行划分,dj表达式如式(6)所示。 [0037] [0038] 式(6)中JJmax表示集合JJ的最大值,JJmin表示集合JJ的最小值,s表示划分JJ的区间数量。将JJ集合中的元素从大到小划分为s个区间,集合JJ中的元素在每个区间中的元素个数分别为num1、num2、num3…nums。则每个区间内元素的数量占集合JJ总数量的比例分别为p1、p2、p3…ps,这表示呼啦圈运动的波形特征值在s个区间中的概率分布情况。然后对非呼啦圈运动以同样的方式求出概率分布,概率分别为fp1、fp2、fp3…fps。最后求出呼啦圈运动占总运动的概率cp1,如式子(7)所示,对应的非呼啦圈运动占总运动的概率cp2,如式子(8)所示。 [0039] [0040] cp2=1-cp1 (8) [0041] 式(7)中r为呼啦圈运动的数量,w为非呼啦圈运动的数量。 [0042] 经过上述步骤,朴素贝叶斯分类器已经训练结束,上述求出的所有概率即为朴素贝叶斯分类器训练的结果。 [0043] 22.按照步骤21的方法,分别做方差、有效值、峰值因子、相关性的朴素贝叶斯分类器训练; [0044] 步骤3:呼啦圈运动判断 [0045] 结合图2,说明步骤3的实现过程。当虚拟电子呼啦圈佩戴在运动者腰部进行转呼啦圈运动时,电子呼啦圈的加速度计会产生大量的实时数据流,如何快速的处理数据流而不导致数据丢失是重点研究问题。本发明采用滑动窗口技术,如图2所示,滑动窗口内包含数据流中一段连续的数据,滑动窗口大小为m,m的取值在步骤1中说明。滑动窗口内的数据量为一次呼啦圈运动的数据量。我们将滑动窗口内的数据提取步骤1中的波形特征,然后放到朴素贝叶斯分类算法中判断这些数据是否符合能完成一次呼啦圈运动的数据,如果是呼啦圈运动则计一圈,滑动窗口向新产生的数据方向滑动m个数据,否则不计圈,滑动窗口移动m/4个数据,判断方法如下: [0046] A1.提取滑动窗口内数据的特征,包括均值、方差、有效值、峰值因子、三轴的相关性。 [0047] A2.查找加速度计生成的X轴数据的均值、方差、有效值、峰值因子、三轴相关性这五个波形特征属于步骤2中s个区间的具体区间,然后查找该区间对应的概率,假设所述的五个波形特征在呼啦圈运动情况下所属区间的概率分别为pj、pf、pe、pc、px,在非呼啦圈运动情况下所属区间的概率分别为fpj、fpf、fpe、fpc、fpx。 [0048] A3.按照步骤A2的方法分别查找到加速度计Y轴、Z轴对应在呼啦圈运动和非呼啦圈运动情况下的概率。 [0049] A4.根据概率判断滑动窗口内数据是否属于呼啦圈运动,xp、yp、zp分别为X轴、Y轴和Z轴在呼啦圈运动下对应的概率,xp1、yp1、zp1分别为X轴、Y轴和Z轴在非呼啦圈运动下对应的概率,xp和xp1如式子(9)、(10)所示,对应的yp、yp1、zp、zp1处理方法一致,如果Ps>Pt,则是呼啦圈运动,否则不是,Ps和Pt表达式如式(11)、(12)所示: [0050] xp=pj*pf*pe*pc*px (9) [0051] xp1=fpj*fpf*fpe*fpc*fpx (10) [0052] Ps=xp*yp*zp*cp1 (11) [0053] Pt=xp1*yp1*zp1*cp2 (12) [0054] 式(11)、(12)中的cp1和cp2在步骤2中求得。 [0055] 本发明的有益效果 [0056] (1)解决传统呼啦圈笨重不易携带的问题。 [0057] (2)虚拟电子呼啦圈能减少呼啦圈运动对运动者腰部的损害。 [0059] 图1是本发明方法的流程图。 [0060] 图2是本发明的滑动窗口与数据流图。 具体实施方式[0061] 结合附图说明,下面阐述本发明。 [0062] 图1为虚拟电子呼啦圈的原理图,本发明的原理从整体上分为以下3个步骤,如下: [0063] 步骤1:训练样本的特征提取 [0064] 首先招募10名志愿者做传统的转呼啦圈运动,将硬件佩戴在志愿者的腰部,每名志愿者转500圈,收集运动过程中的加速度数据作为训练样本,加速度计读取数据的频率为100Hz。然后利用卡尔曼滤波器滤除训练样本中一些异常数据,通过滤波得到了可用的训练集。训练集中的数据分为3类,分别是加速度计X、Y、Z轴的数据。每个轴的数据在时间上是连续的,以时间为横坐标,数值为纵坐标是一串连续的周期性不规则波形。通过分析可知每个波代表转一次呼啦圈。接着对连续波形进行分割,求出每位志愿者转一次呼啦圈需要的加速度数据个数,并求取平均值m作为后续滑动窗口大小。最后求出每个波形的特征,包括(均值、方差、有效值、峰值因子、三轴的相关性),这些波形特征呈现一定分布,以这些波形特征值作为输入训练步骤2中朴素贝叶斯分类算法。假设X轴产生一个波形的数据为x1、x2、x3……xn,X轴的各个特征值计算方法如下: [0065] 101.均值: [0066] [0067] 102.方差 [0068] [0069] 103.有效值 [0070] [0071] 104.峰值因子 [0072] [0073] 式(1)、(2)、(3)(4)中n为加速度计X轴产生数据的数量, [0074] 式(4)中xp为x1…xn的最大值,E为有效值。 [0075] 122.以步骤121的方法,计算加速度计Y轴和Z轴的波形特征。 [0076] 123.加速度计X、Y、Z轴相关性计算 [0077] 假设Y轴产生的数据为y1、y2、y3…yn。相关性包括X和Y轴、X和Z轴、Y和Z轴的相关性,X和Y轴相关性如式子(5)所示, [0078] [0079] 式(5)中Jy为Y轴波形的平均值,Jx为X轴波形的平均值,xi为加速度计X轴产生的数据,yi为加速度计Y轴产生的数据。 [0080] 124.以步骤123的方法计算X和Z轴、Y和Z轴的相关性。 [0081] 步骤2:训练分类算法 [0082] 十名志愿者总共生成r圈的训练数据,对应的X、Y、Z轴分别有r个波形。这些波形基本包括了转呼啦圈的各种状态,因此训练的分类算法能适应不同人的要求。同时为了区分呼啦圈运动和其他运动,如走路、跳跃、跑步和一些其他动作,我们又收集了大量的这些动作的样本数据作为反面的训练样本。以这两组训练样本训练朴素贝叶斯分类器,这里以走路动作代表非呼啦圈运动作为说明,其他动作的训练方法一致,假设采集走w步的数据为非呼啦圈运动的训练样本,并且以波形特征中的平均值为例,其他四个波形特征处理方法一致,具体训练过程如下所示: [0083] 呼啦圈运动波形特征的平均值为JJ={J1、J2、J3、…Jr},以dj为梯度对JJ进行划分,dj表达式如式(6)所示。 [0084] [0085] 式(6)中JJmax表示集合JJ的最大值,JJmin表示集合JJ的最小值,s表示划分JJ的区间数量。将JJ集合中的元素从大到小划分为s个区间,集合JJ中的元素在每个区间中的元素个数分别为num1、num2、num3…nums。则每个区间内元素的数量占集合JJ总数量的比例分别为p1、p2、p3…ps,这表示呼啦圈运动的波形特征值在s个区间中的概率分布情况。然后对非呼啦圈运动以同样的方式求出概率分布,概率分别为fp1、fp2、fp3…fps。最后求出呼啦圈运动占总运动的概率cp1,如式子(7)所示,对应的非呼啦圈运动占总运动的概率cp2,如式子(8)所示。 [0086] [0087] cp2=1-cp1 (8) [0088] 式(7)中r为呼啦圈运动的数量,w为非呼啦圈运动的数量。 [0089] 经过上述步骤,朴素贝叶斯分类器已经训练结束,上述求出的所有概率即为朴素贝叶斯分类器训练的结果。 [0090] 步骤3:呼啦圈运动判断 [0091] 结合图2,说明步骤3的实现过程。当虚拟电子呼啦圈佩戴在运动者腰部进行转呼啦圈运动时,电子呼啦圈的加速度计会产生大量的实时数据流,如何快速的处理数据流而不导致数据丢失是重点研究问题。本发明采用滑动窗口技术,如图2所示,滑动窗口内包含数据流中一段连续的数据,滑动窗口大小为m,m的取值在步骤1中说明。滑动窗口内的数据量为一次呼啦圈运动的数据量。我们将滑动窗口内的数据提取步骤1中的波形特征,然后放到朴素贝叶斯分类算法中判断这些数据是否符合能完成一次呼啦圈运动的数据,如果是呼啦圈运动则计一圈,滑动窗口向新产生的数据方向滑动m个数据,否则不计圈,滑动窗口移动m/4个数据,判断方法如下: [0092] A1.提取滑动窗口内数据的特征(均值、方差、有效值、峰值因子、三轴的相关性)。 [0093] A2.查找加速度计生成的X轴数据的五个波形特征属于步骤2中s个区间的具体区间,然后查找该区间对应的概率,假设五个波形特征在呼啦圈运动情况下所属区间的概率分别为pj、pf、pe、pc、px,在非呼啦圈运动情况下所属区间的概率分别为fpj、fpf、fpe、fpc、fpx。 [0094] A3.按照步骤A2的方法分别查找到加速度计Y轴、Z轴对应在呼啦圈运动和非呼啦圈运动情况下的概率。 [0095] A4.根据概率判断滑动窗口内数据是否属于呼啦圈运动,xp、yp、zp分别为X轴、Y轴和Z轴在呼啦圈运动下对应的概率,xp1、yp1、zp1分别为X轴、Y轴和Z轴在非呼啦圈运动下对应的概率,xp和xp1如式子(9)、(10)所示,对应的yp、yp1、zp、zp1处理方法一致,如果Ps>Pt,则是呼啦圈运动,否则不是,Ps和Pt表达式如式(11)、(12)所示: [0096] xp=pj*pf*pe*pc*px (9) [0097] xp1=fpj*fpf*fpe*fpc*fpx (10) [0098] Ps=xp*yp*zp*cp1 (11) [0099] Pt=xp1*yp1*zp1*cp2 (12) [0100] 式(11)、(12)中的cp1和cp2在步骤2中求得。 |