html5读取运动传感器,一种基于六轴传感器的脚步运动识别方法与流程

本发明涉及脚步运动识别技术领域,尤其涉及一种基于六轴传感器的脚步运动识别方法。

背景技术:

现代人很多非常注重自己的日常锻炼,计步作为一种有效记录、监控锻炼的监控手段,被广泛应用在智能跑鞋中。现有的智能跑鞋在其内安装有三轴加速度传感器,但是它只能简单的计步,不能识别人运动时脚的落地姿态,不利于用户了解自己的走姿或跑姿。

技术实现要素:

本发明的目的是克服目前智能跑鞋中安装三轴加速度传感器,只能简单计步,不能识别人运动时脚的落地姿态的技术问题,提供了一种基于六轴传感器的脚步运动识别方法,其能够识别人运动时脚的落地姿态,便于用户了解自己的走姿或跑姿。

本发明的一种基于六轴传感器的脚步运动识别方法,包括以下步骤:

微处理器读取六轴传感器输出的检测数据,绘制XYZ三轴合加速度的合加速度变化曲线图,检测合加速度变化曲线图中的波峰,当某个波峰对应的XYZ三轴合加速度小于或等于设定值F时,将该波峰去除,当相邻两个波峰之间的采样点小于设定值K时,将这两个波峰中XYZ三轴合加速度最小的波峰去除,波峰对应的时间点为脚落地的时刻;

微处理器判断每个脚落地时刻的脚落地姿态,判断某个脚落地时刻的脚落地姿态的方法包括以下步骤:查找出该脚落地时刻之后的连续N个采样时间点对应的Y轴角速度值,找出这N个Y轴角速度值中的最小值MIN(Gy),从这N个Y轴角速度值中选出位于最小值MIN(Gy)所在的采样时间点之后的采样时间点对应的Y轴角速度值,从选出的这些Y轴角速度值中找出最大值MAX(Gy),计算最小值MIN(Gy)和最大值MAX(Gy)的平均值AVG(Gy),如果AVG(Gy)大于M1或MAX(Gy)大于M2,则判断该脚落地时刻的脚落地姿态为前脚落地姿态,否则判断该脚落地时刻的脚落地姿态为后脚落地姿态。

在本技术方案中,本方法的六轴传感器设置在鞋体内,六轴传感器的X轴正方向朝向鞋体前方,Y轴正方向朝向鞋体左侧,Z轴正方向竖直向上,通过检测人体单脚的运动情况计算出脚落地姿态。

本方法根据合加速度变化曲线图中变化曲线的极大值来判断波峰,当XYZ三轴合加速度超过设定值F时,即可进入波峰的判断条件里面,同时也会引入伪波峰,由于人走路或者跑步的极限频率可以估算出来,波峰之间的间距不会小于K个采样点,所以当两个波峰之间的间距小于K时,即可根据波峰值大小,选取较大的值作为一个计步的波峰,即数值较大的波峰为真波峰,数值较小的波峰为伪波峰。

波峰对应的时间点为脚落地的时刻,通过前面计算的波峰,可以得到脚落地的时刻,从理论上分析,前后脚落地的过程基本都是在绕Y轴旋转的过程,绕Y轴逆时针方向旋转,值为正,绕Y轴顺时针方向旋转,值为负。本方法提取脚落地时刻之后的连续N个采样时间点对应的Y轴角速度值,先找出这N个Y轴角速度值中的最小值MIN(Gy),再找出最小值MIN(Gy)所在采样时间点之后的剩余采样时间点对应的Y轴角速度值中的最大值MAX(Gy),计算最小值MIN(Gy)和最大值MAX(Gy)的平均值AVG(Gy),如果AVG(Gy)大于M1或MAX(Gy)大于M2,则判断该脚落地时刻的脚落地姿态为前脚落地姿态,否则判断该脚落地时刻的脚落地姿态为后脚落地姿态。

作为优选,所述一种基于六轴传感器的脚步运动识别方法还包括以下步骤:微处理器根据合加速度变化曲线图中的波峰数目A计算出当前计步步数B,B=(A-1)×2,当步数B小于c时,缓存步数B的数值,微处理器不输出步数B的数值,当步数B大于或等于c时,微处理器输出步数B的数值。

c≥6,由于只在一只鞋子上设置六轴传感器,合加速度变化曲线图上出现一次波峰,人左右脚各走了一步,所以,波峰与步数是1比2的关系,即一个波峰对应走路2步。由于存在伪波峰,所以最后一个波峰不能判断是否是真波峰,本方法在最新出现一个波峰时,才计算前一个波峰是否是真波峰,所以本方法计步有一个波峰的滞后。缓存步数主要用在判断何时开始进入计步状态,为了避免一些扰动,比如脚的任意晃动等,这里设计了缓存步数就是当步数大于或等于c步时候开始进入计步模式,微处理器输出步数B的数值到显示屏等模块,后面产生的步数将进行累加,在没有达到c步的时候则先暂时缓存这些步数。

作为优选,所述一种基于六轴传感器的脚步运动识别方法还包括以下步骤:当合加速度变化曲线图中的最后一个波峰之后连续d个采样点都没有出现新的波峰时,微处理器结束本次计步,将合加速度变化曲线图清零,如果此时步数B大于或等于c,计算出本次计步的总步数C=B+2。

c≥6,当最后一个波峰之后连续d(如80)个采样点都没有出现新的波峰时,判断人体停止运动,结束计步,总步数加2,即把滞后的最后一个波峰换算成步数加进总步数。

作为优选,所述六轴传感器的检测频率为25HZ ,K为8-15。

作为优选,所述N为8-12。

作为优选,所述M1为80-120度/秒,所述M2为30-50度/秒。

作为优选,微处理器读取六轴传感器输出的检测数据时,采用卡尔曼滤波方法对六轴传感器输出的数据进行滤波。卡尔曼滤波方法使得到的数据更加平滑,计算复杂度更低,效率更快。

作为优选,六轴传感器的数据上报模式采用FIFO模式。

本发明的有益效果是:能够识别人运动时脚的落地姿态,便于用户了解自己的走姿或跑姿,进而矫正走姿或跑姿,避免运动扭伤。

附图说明

图1是本发明的一种工作流程图。

具体实施方式

下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。

实施例:本实施例的一种基于六轴传感器的脚步运动识别方法,如图1所示,包括以下步骤:

微处理器读取六轴传感器输出的检测数据,采用卡尔曼滤波方法对六轴传感器输出的数据进行滤波,绘制XYZ三轴合加速度的合加速度变化曲线图,检测合加速度变化曲线图中的波峰,当某个波峰对应的XYZ三轴合加速度小于或等于1.5g时,将该波峰去除,当相邻两个波峰之间的采样点小于设定值10时,将这两个波峰中XYZ三轴合加速度最小的波峰去除,保留XYZ三轴合加速度最大的波峰,波峰对应的时间点为脚落地的时刻;

微处理器判断每个脚落地时刻的脚落地姿态,判断某个脚落地时刻的脚落地姿态的方法包括以下步骤:查找出该脚落地时刻之后的连续10个采样时间点对应的Y轴角速度值,找出这10个Y轴角速度值中的最小值MIN(Gy),从这10个Y轴角速度值中选出位于最小值MIN(Gy)所在的采样时间点之后的采样时间点对应的Y轴角速度值,从选出的这些Y轴角速度值中找出最大值MAX(Gy),计算最小值MIN(Gy)和最大值MAX(Gy)的平均值AVG(Gy),如果AVG(Gy)大于100度/秒或MAX(Gy)大于40度/秒,则判断该脚落地时刻的脚落地姿态为前脚落地姿态,否则判断该脚落地时刻的脚落地姿态为后脚落地姿态。

微处理器根据合加速度变化曲线图中的波峰数目A计算出当前计步步数B,B=(A-1)×2,当步数B小于6时,缓存步数B的数值,微处理器不输出步数B的数值,当步数B大于或等于6时,微处理器输出步数B的数值并保存。

当合加速度变化曲线图中的最后一个波峰之后连续80个采样点都没有出现新的波峰时,微处理器结束本次计步,将合加速度变化曲线图清零,如果此时步数B大于或等于6,计算出本次计步的总步数C=B+2。

六轴传感器采用MPU6500这款传感器来举例说明,MPU6500传感器设置采样率为25Hz、采集的计算轴为AxAyAz和GxGyGz、加速度的量程设置为正负8g、陀螺仪的角速度量程为正负500度/s和数据上报模式采用FIFO模式等。出于省电考虑,传感器在不工作情况下将进入低功耗模式。在这种低功耗模式场景下还可以被唤醒,这里主要采用运动中断唤醒的方法,就是当XYZ三轴合加速度超过一定阈值(如250mg)时,传感器重新进入工作模式。

本方法的六轴传感器设置在鞋体内,六轴传感器的X轴正方向朝向鞋体前方,Y轴正方向朝向鞋体左侧,Z轴正方向竖直向上,通过检测人体单脚的运动情况计算出脚落地姿态以及运动的步数。六轴传感器输出的检测数据经过卡尔曼滤波方法滤波后,再由微处理器处理识别。卡尔曼滤波方法使得到的数据更加平滑,计算复杂度更低,效率更快。

本方法根据滤波后合加速度变化曲线图中变化曲线的极大值来判断波峰,当XYZ三轴合加速度超过1.5g时,即可进入波峰的判断条件里面,同时也会引入伪波峰,由于人走路或者跑步的极限频率可以估算出来,波峰之间的间距不会小于10个采样点,所以当两个波峰之间的间距小于10时,即可根据波峰值大小,选取较大的值作为一个计步的波峰,即数值较大的波峰为真波峰,数值较小的波峰为伪波峰。

波峰对应的时间点为脚落地的时刻,通过前面计算的波峰,可以得到脚落地的时刻,从理论上分析,前后脚落地的过程基本都是在绕Y轴旋转的过程,绕Y轴逆时针方向旋转,值为正,绕Y轴顺时针方向旋转,值为负。本方法提取脚落地时刻之后的连续10个采样时间点对应的Y轴角速度值,先找出这10个Y轴角速度值中的最小值MIN(Gy),再找出最小值MIN(Gy)所在采样时间点之后的剩余采样时间点对应的Y轴角速度值中的最大值MAX(Gy),计算最小值MIN(Gy)和最大值MAX(Gy)的平均值AVG(Gy),如果AVG(Gy)大于M1或MAX(Gy)大于M2,则判断该脚落地时刻的脚落地姿态为前脚落地姿态,否则判断该脚落地时刻的脚落地姿态为后脚落地姿态。

由于只在一只鞋子上设置六轴传感器,合加速度变化曲线图上出现一次波峰,人左右脚各走了一步,所以,波峰与步数是1比2的关系,即一个波峰对应走路2步。由于存在伪波峰,所以最后一个波峰不能判断是否是真波峰,本方法在最新出现一个波峰时,才计算前一个波峰是否是真波峰,所以本方法计步有一个波峰的滞后。缓存步数主要用在判断何时开始进入计步状态,为了避免一些扰动,比如脚的任意晃动等,这里设计了缓存步数就是当步数超过5步时候开始进入计步模式,微处理器输出步数B的数值到显示屏等模块,显示屏显示步数,后面产生的步数将进行累加,在没有达到5步的时候则先暂时缓存这些步数,微处理器不输出步数B的数值到显示屏等模块,显示屏不显示步数。

当最后一个波峰之后连续80个采样点都没有出现新的波峰时,判断人体停止运动,结束计步,总步数加2,即把滞后的最后一个波峰换算成步数加进总步数。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值