关于乒乓球/羽毛球运动状态识别手表的设计

工程师吴畏 发表于 2018-06-13 15:44:00 收藏 已收藏
赞(0) •  评论(0

关于乒乓球/羽毛球运动状态识别手表的设计

工程师吴畏 发表于 2018-06-13 15:44:00

0 引言

近年来穿戴式设备是开发的热点项目,各种品牌的运动手表、手环层出不穷,穿戴式运动状态识别设备的应用前景可观。现在市场上的产品对运动状态识别集中在识别某个时间段进行的某种运动,如走路、跑步、睡眠,缺少对乒乓球、羽毛球运动识别的设备。而专业的运动识别的设备集中在视频图像的分析[1]和不同部位多传感器装置检测分析[2-3]两种方式,两种方式设备体积大、成本高,只适合在实验室中使用,不适合向普通大众推广。目前运动状态分类识别算法主要有动态K近邻、决策树、随机森林、支持向量机、神经网络等[4-6]。

为了满足乒乓球和羽毛球业余运动爱好者对运动过程动作状态识别记录的要求,本文将介绍一种运动手表的设计。它由简单硬件构成,利用在时域上分析的随机森林分类算法就可以识别乒乓球和羽毛球运动的多种状态。本设计具有体积小、功耗低、成本低的特点,可以嵌入到现在已有的智能手表中,做到功能升级。

1 运动状态识别总体方案

1.1 运动手表硬件设计

乒乓球/羽毛球运动状态识别手表的硬件主要由控制处理核心STM32单片机、MPU6050传感器模块、BLE 蓝牙模块、按键模块、显示模块、电源管理模块6部分组成。手表系统工作原理为: 控制处理核心STM32F103通过IIC接口读取MPU6050的加速度计和陀螺仪数据,利用数字运动处理器(DMP)输出四元数后解算得到3轴欧拉角[7]。经过数据滤波后用相应的识别算法对运动状态进行识别,将识别的信息用OLED显示屏显示并通过蓝牙模块发送到上位机。各个模块的功能如下。

(1)控制处理核心:选择意法半导体STM32F103C8T6,它控制整个系统的各个模块工作状态、传感器数据的处理和识别算法的实现。它运算速度快、体积小、功耗低、外设丰富,满足腕戴式手表对体积、速度、功耗的要求。

(2)传感器模块:传感器采用MEMS数字传感器MPU6050,它由整合了加速度计、陀螺仪的6轴传感器和一个可扩展的DMP组成。相比于多传感器的方案,它避免了时间轴之差的问题,并减小了体积[8]。传感器通过IIC接口将数据传输到单片机中。

(3)BLE蓝牙模块:选用型号为CC2541的BLE蓝牙串口模块,BLE技术具有低成本、低功耗、短距离的特点。该蓝牙模块最高支持2 Mbit/s的传输速率,工作电流小于20 mA,满足系统UART串口设计的115 200 bit/s波特率的通信要求。

(4)按键模块:主要完成模式选择以及手表的开关机。

(5)显示模块:选用0.96英寸OLED显示屏,显示单元能够自发光。全屏点亮时功耗为0.08 W,正常全屏显示汉字仅需0.06 W,很符合手表低功耗的要求。

(6)电源管理模块:选用 TD8208升压芯片将3.7 V锂电池升压到5 V,再经过AP2125K-3.3芯片降压到3.3 V。两款电源芯片均有输出使能端,可通过控制使能端实现对其他模块的电源管理。

手表硬件连接图如图1所示。

关于乒乓球/羽毛球运动状态识别手表的设计

1.2 运动手表系统状态设计

系统设计主要有关机状态、时间显示状态、模式选择状态、乒乓球模式、羽毛球模式、自识别模式6个状态,各个状态通过按键选择进行切换,状态转换图如图2所示。

关于乒乓球/羽毛球运动状态识别手表的设计

由图2可知,系统初始状态为关机状态,通过长按开关机键使系统开机并进入时间显示状态。如果不进行按键选择,系统将保持在时间显示状态。如果按动选择按键,系统将跳转到模式选择状态,再通过按动模式选择按键进入对应的工作模式。如果进入乒乓球模式或羽毛球模式,就对运动中挥臂、挥拍、正反手等动作进行识别。如果选择自识别模式,系统先识别当前运动是乒乓球运动还是羽毛球运动,识别成功后再自动跳转到对应的模式下进行运动状态识别。如果需要重新选择运动模式,通过返回按键使系统返回到时间显示状态,重复上述选择方法进行模式选择。

2 运动状态识别算法设计

运动状态识别主要由数据采集、数据预处理、特征提取、分类识别4部分组成。识别流程及结构如图3所示。

关于乒乓球/羽毛球运动状态识别手表的设计

2.1 数据采集

STM32F103C8T6单片机通过IIC接口读取MPU6050的加速度、角速度、角度数据,将采集的数据缓冲到各自对应的数组中,完成基本的数据采集。

2.2 数据预处理

数据预处理分3步完成,依次为重力加速度分离、过滤平滑、数据分窗[4]。

(1)重力加速度分离:加速度传感器输出的原始数据中包含重力加速度分量,而X、Y、Z轴是固定的,运动手表发生普通旋转和翻转时,重力加速度则对3个轴产生加速度分量。为了避免重力加速度分量引进的干扰,本设计对传感器采集的3轴加速度进行重力加速度分离。重力加速度分离采用高通滤波的方法[5],求解公式如下:

关于乒乓球/羽毛球运动状态识别手表的设计

式中G代表各轴重力加速度分量,A代表加速度传感器原始测量数值。提取出重力加速度分量后,用加速度传感器原始数值减去重力加速度分量得到实际运动产生的加速度值。

(2)过滤平滑:数据的平滑与过滤是为了过滤噪声和异常数据,本设计采用连续滑动20点均值做平滑滤波,即设置一个容量为20个数据点的FIFO,把FIFO内的20个数据点的均值作为一个新的采样点,且滤波后使得提取的特征具有更明显的区分度。数据平滑处理前后波形图如图4所示。

关于乒乓球/羽毛球运动状态识别手表的设计

(3)数据分窗:本设计采用动态窗口的方法对数据进行分窗处理,窗口大小的设置是一个不定的参数,通过实验事先设置好3轴加速度的阈值,当X、Y、Z任一个轴加速度值大于对应的阈值时,触发开启窗口,当触发开启窗口的那个轴的加速度值小于对应的阈值时就关闭窗口。即系统窗口只显示加速度大于阈值的这段时间内的数据。因为只有运动时才会产生相对较大的加速度,而系统主要识别运动过程中的不同状态,所以这样就无需对非运动状态下进行识别,减少识别误差。加速度动态分窗示例图如图5所示。

关于乒乓球/羽毛球运动状态识别手表的设计

2.3 特征提取

特征提取集中在窗口开启的这段时间内,主要提取各轴加速度、角速度、角度的最大及最小值和角度的积分面积等主要特征[9]。

以乒乓球横板握法正反手的一组数据为例,如图6所示,X轴角速度的最小值在正反手挥拍中有明显差别,所以将X轴角速度的最小值作为识别正反手的一个重要特征。

关于乒乓球/羽毛球运动状态识别手表的设计

本设计只使用了最大值、最小值、积分面积3个统计量作为特征,并没有使用复杂的时频特征和频域特征,主要有两个原因:

(1)经过试验发现,最大值、最小值、积分面积这3个特征在运动状态的识别中区分度较大,已经能够达到一个较好的识别效果;

(2)本手表是基于STM32单片机平台设计的,其浮点计算能力有限,不适合提取计算量较大的时频特征和频域特征[4]。

所以本设计中没有使用时频特征和频域特征,而把前期的数据处理作为识别的重要前提,并通过基于时间跨度的动态分窗方式,结合随机森林算法,对不同的运动状态进行分类识别。

2.4 分类识别

基于本设计自身硬件属性,对比并试验了当前普遍使用的识别分类算法,结果发现随机森林分类算法在本系统上有着计算效率和识别准确率较高的特点,因此选择随机森林作为本系统的分类算法。随机森林算法实现原理图如图7所示。

关于乒乓球/羽毛球运动状态识别手表的设计

通过大量的测试实验最终确定本设计选取X轴角速度最大值和最小值、X轴角度最小值和积分面积、Y轴角速度最小值、Y轴角度最大值和最小值、Z轴角速度最大值8个有着明显区分度的特征值。每次在动态窗口中提取上述8个特征,将提取的特征依次和每个运动状态的特征树进行拟合,拟合特征最多的那棵树就识别为本次运动的状态。

特征区间的设定上,本设计以专业运动员的训练数据为参考,如图6所示的数据,横板握法的正反手各自特征树上X轴角速度特征区间分别为[-150 -80],[-70 0]。其他特征区间的参数整定方法同上,这里不再赘述。

3 手表测试

本次测试方法为随机选取乒乓球和羽毛球业余运动员各一位,使用本手表在相应的运动中进行测试,主要记录人工识别计数和设备识别计数,并做比对,分析误差。具体测试数据如表1、表2所示。

关于乒乓球/羽毛球运动状态识别手表的设计

关于乒乓球/羽毛球运动状态识别手表的设计

从实验结果可以看出,设备识别计数准确率在90%以上。运动中对正手挥拍识别比实际挥拍数多,而反手挥拍识别计数要实际挥拍数少,分析原因发现,因为系统动态窗口开启的阈值是预先设定值,反手挥拍中动作幅度比较小时加速度值没有达到开启阈值,所以计数要小于实际数。可以通过减小开启阈值来提升反手挥拍的识别率,但同样不能使开启阈值太小,否则手腕部一些非运动状态也会触发开启窗口引起识别误差,使正手挥拍识别数远大于实际数。因此窗口开启阈值的设定也是设计的关键。本系统乒乓球模式下阈值为1 m/s2,羽毛球模式下阈值为1.2 m/s2。

4 结论

本文设计的手表采用STM32F103+MPU6050方案,成本低、功耗低、体积小,且对乒乓球和羽毛球运动过程中主要运动特征识别较为准确,效果较好,识别率均在90%以上。该手表满足普通大众的应用,可进一步推广。

收藏

相关话题
文章来源专栏
+关注

评论(0)

加载更多评论

参与评论

分享到

QQ空间 QQ好友 微博
取消