APP下载

自行车运动员智能辅助训练系统的设计与开发

2015-12-25,韩,孙

体育科研 2015年3期
关键词:手势心率功率

张 菡 ,韩 旭 ,孙 路

自行车越来越成为一种风靡全球的运动,不仅有大量的业余骑行爱好者,活跃在世界各地的骑行路线,每年,更是有各种各样的世界级专业自行车赛事,让世界各地的自行车运动员们一展拳脚。对于专业运动员来说,为了提高自身的竞技水平,不仅需要专业的教练进行指导,合适的训练场地也是必不可少的。而且各种各样的科学技术逐渐地融入到体育行业,大量的比赛事实证明,通过对运动员的体能和训练数据进行科学的处理和分析,从而制定的训练方案能够更加高效地提高运动员的体能和竞技水平。本文根据自行车赛事的特点、运动员的体能水平和长久以来的自行车训练的经验,开发了一套能够辅助自行车运动员进行更加科学高效训练的系统。结合硬件设备和软件系统,该系统具有方便快捷、交互友好、科学高效、节能环保的特点,可以克服专业教练和训练场地的制约,帮助运动员在更短的时间内更快地提高竞技水平,具有很好的应用价值。

自行车运动员为了在各大赛事中获取更好的成绩,日常的训练尤为重要。日常训练大致上可以分为两种:基本技能训练和赛道模拟训练。基本技能训练主要锻炼运动员的体能和骑行技巧,赛道模拟训练可以帮助运动员更加熟悉道路情况,从而制定相应的竞技策略。

1 系统概况

系统的主要目的是辅助运动员进行更好地训练,其功能分为3个部分:日常训练模块,公路赛模拟训练模块,历史记录模块。在进行日常训练之前,运动员需要进行一次体能测试,系统根据测试结果将运动员的体能划分成不同的等级,并根据不同的等级为运动员提供不同程度的训练计划,以达到高效训练的效果。公路赛模拟训练模块一方面还原了真实的比赛地形和环境,另一方面还能提供视觉和感官上的体验。运动员在使用系统时产生的数据都会保存在系统数据库中,经过系统的处理后,一方面会在历史记录模块进行分类展示,让运动员能够随时查看自己的训练情况,另一方面,这些数据经过一定的分析,还可以反馈出运动员在一段时间内的训练水平和体能变化,并以此作为训练的依据,从而制定出更加科学合理的日常训练计划。

2 系统架构

2.1 硬件层

硬件层是包括自行车骑行台、嵌入式开发平台以及各种传感器在内的所有硬件设备,是整个系统的基础。自行车上安装了地磁偏角、加速度计、光电码盘等十余个高性能传感器,用以检测运动员的骑行速度、车把偏角、踏频、心率等数据。为了运动员能在自行车上与系统自然方便地交互,系统还安装了Leap Motion体感控制器。Leap Motion可以采集运动员双手的位置、速度、旋转角度和移动方向等信息,以实现高精度的手势控制。另外,在系统底部的发电机同时可以收集骑行时产生的能量,经过斩波和逆变等一系列电力电子模块,再配合大容量聚合物锂离子电池,实现了能量的转化、存储和利用。不但实现了系统本身的自供电,还可以为其他小型电器供电,起到了节能环保的效果。

2.2 中间层

中间层是连接硬件层和应用层的桥梁,主要实现了数据融合与分析、人机交互和控制指令传递等3个功能。传感器采集到的数据汇总到单片机中进行简单的处理和融合,得到准确的速度、车把偏角、心率等数据,再由嵌入式开发平台进行二次处理,得到骑行功能阈值功率、平均心率等专业骑行训练数据,提供给上层应用使用。

除了上述硬件上的数据接口,中间层还提供了一个软件数据接口,支持不同格式的赛道数据导入,经过统一的格式化处理之后,再与其他环境变量进行融合,形成最终的模拟环境数据集,同样提供给上层应用使用。

相反的,在应用中对于骑行阻力控制,需要由嵌入式开发平台把控制指令传递给单片机,以控制电机的转矩,改变骑行阻力。同时,中间层还负责处理Leap Motion体感控制器传递的手势数据,并加以处理,实现多种不同手势的识别,以方便运动员与应用的交互。

2.3 应用层

应用层是在中间层的基础上,利用识别到的手势和处理后的骑行数据,为运动员提供实时的训练指导以及模拟的赛道骑行环境。运动员采用不同的手势,就可以完成与系统的交互,操作十分便捷。赛道骑行环境实现了视觉和感官上的模拟,一方面可以图像化的显示预先导入的赛道数据,给运动员一种直观的体验,另一方面还会根据当时的天气状况计算出空气阻力,从而对骑行阻力进行调节,让模拟的骑行训练更加接近真实赛道的训练效果。

3 系统设计与开发

3.1 硬件实现方案

系统采用的嵌入式开发板和单片机分别为Intel公司的Galileo和Bay Trail开发平台。Intel Galileo开发板与Bay Trail开发平台通过串行接口连接,实现全双工数据交换。硬件安装位置如图1,对于HMC5883电子罗盘模块,Galileo通过IIC总线实现方向矢量的读取;对于握把、坐姿等人体姿态传感器以及心率、电流等传感器,通过I/O接口连接即可实现Galileo对模拟量和数字量的读取;对于车速以及踏频的测量,MSP430通过串行接口与Galileo相连,不过由于MSP430为3.3V单片机,因此串行总线需要进行简单电平转换。

图1 硬件位置图Figure 1 Hardware Location

3.1.1 能源管理系统

运动员在骑行时会消耗自身能量,那么就可以靠自身发电装置来满足系统的用电需求。我们选用直流发电机作为系统电源,通过电力电子装置进行电能变换,产生12 V直流电和220 V交流电满足系统要求,另外弱电部分所需的5 V和3.3 V电源可由Galileo开发板提供。

3.1.1.1 阻尼控制

在真实的骑行运动中,骑行阻力主要源自4个方面:自行车机械结构摩擦,车轮与地面之间滚动摩擦,上、下坡时重力分量以及空气阻力。在我们的系统中,由于使用了真实自行车,而且车轮与飞轮滚筒之间的传动可以模拟与路面之间的滚动摩擦,因此只需要通过电机产生空气阻力和重力分量带来的阻力即可让运动员有真实的骑行体验。

根据直流电机特性方程:

式中,CT、Ce为常值。

我们可以近似认为发电机的转矩与电流成正比,输出电压与转速成正比,因此需要对电流进行跟踪控制以实现对空气阻力的模拟。图2为阻控制原理图。

图2 阻力控制原理图Figure 2 Principles of Resistance Control

3.1.1 .2电能变换

直流发电机输出电压与转速成正比例关系,输出功率也随时间不停变化,因此需要大量电能转换和存储装置才能保证系统的稳定运行。我们的电能变换装置主要分为以下几个部分:DC-DC变换装置、直流储能环节以及DC-AC逆变器。

DC-DC变换部分由两套降压斩波电路组成,降压斩波电路通过控制电路中开关管的导通时间和占空比对输出电压和电流进行控制,简单高效。其一选用12 V30 A降压变换器,只有当发电机输出电压超过12 V时该变换器才开始工作,为系统提供稳定的12 V直流电源,满足系统的用电需求;另外为了保持系统功率平衡,我们选用6~90 V宽电压输入,最大15 A电流输出的可调降压电路和功率电阻构成可调负载。在负载电阻一定的情况下,只需要控制变换器的输出电压即可控制负载消耗的功率,即控制流过可调负载的电流。

在实际测试中,电机输出电压小于6 V时,自行车处于低转速状态,此时空气阻力理论值远小于机械摩擦,因此可以忽略此处带来的误差。

系统内部的电源全部源自DC-DC变换器的12 V电压输出,因此当电机电压小于12V时变换器无电压输出,系统电源将会中断,因此为了保证系统稳定运行,我们选用电池作为储能环节,其参数如表1。

表1 电池参数表Table Ⅰ Battery Parameters

这样即使人体输出功率较低的情况下,仍可以维持系统运行一段时间,而当人体输出功率达到系统启动门限,系统会自动转换为电机供电,同时为电池充电,保证电池的电量达到要求。

3.1.2 传感与测量系统

为了实现系统功能,需要大量的传感器来识别人体姿势、车把转向、车轮转速、踏频、心率、输出功率等信号,因此传感与测量在系统实现中起着重要的作用。

3.1.2.1 转向测量

我们选择HMC5883芯片作为方向传感器。HMC5883模块能够采集地磁场在3个轴向上的分量并转换成数字信号,通过IIC总线传送给Galileo开发板。由于自行车把的实际转向方式不仅仅是水平方向的旋转,还涉及到垂直方向的旋转和翻滚运动,因此单纯的磁场分量检测不能完全反映车把的旋转。考虑到系统对车把信号的精度要求不高,同时考虑到系统实现的难易程度,这里对传感器信号进行简单软件处理即可。

3.1.2.2 车速及踏频测量

传统的车速测量方法是在车轮辐条上安装磁铁,通过霍尔效应检测车轮转速,传统的踏频测试方法也是如此,只不过磁铁安装在曲柄上。但是由于在实际骑行运动中,人体采取制动措施后尽管车轮被抱死,由于惯性作用自行车仍然在向前运动,因此传统的依靠检测车轮转速测量车速的方法不能准确反映自行车运动状态,另外由于传统测速方式只有当车轮转过一周才能得到一次脉冲,因此低速情况下响应较慢,而且需要根据不同自行车型号输入轮胎直径,操作复杂。

基于以上缺点,我们对测速装置进行了改进,将测速装置安装在电机主轴上而不是车轮上,由于飞轮滚筒能够很好地模拟大地与自行车之间的相对运动(包括滚动与滑动),电机与飞轮传动比恒定,因此电机主轴转速能够直接反应自行车的实际车速。在电机上安装了光电码盘和光电对管,在码盘转动时光栅会间歇性地使光电对管导通和关断,只需要测量光电对管的输出频率即可得到相应转速。对于踏频测试,由于系统对踏频的动态性能测试不做过多要求,只考虑稳态情况即可,因此这里选用霍尔元件测量,简单易行。

3.1.2.3 心率测量

采用光学心率传感器对心率进行测量,该传感器实际上是一款集成了放大电路和噪声消除电路的光学传感器,运动员使用时只需将该传感器粘贴在车把上,手指轻轻压在传感器上,传感器即可将人体心跳信号转换为电信号,通过Galileo模拟信号接口即可实现电压测量。

上位机接收到电压信号之后还要对波形进行简单的处理和分析才能够得到心率数值,具体做法是先根据电信号的平均值规划出一个阈值电压,将心率电压波形与阈值相比较即可得出脉冲式数字信号,通过测量相邻脉冲之间的时间间隔即可求出运动员当前的心率值。

3.1.2.4 功率测量

人体骑行产生的功率通过两方面消耗,一方面是机械结构产生的机械损耗,另一方面通过发电机产生电能供给系统使用。对于机械损耗,由于大多数情况所占比重较小,且摩擦阻力基本保持恒定,因此我们对这部分功率测量要求不高,将发电机运行在电动状态带动自行车轻载运行,监测电机的电压和电流即可得出机械功率,再根据车速即可求出机械阻力值。对于电功率的测量,只需要实时监测电机的输出电压和输出电流即可准确求出功率大小。

3.2 数据传输

图3为系统的数据传输架构图。

图3 数据传输架构图Figure 3 Data Transfer Structure

在数据传输部分,系统主要运用了3项技术:node.js,串行接口通信和Websocket通信。利用node.js的serialport模块实现了Galileo开发板到Bay Trail嵌入式平台波特率为9600的全双工通信。利用node.js的socket.io模块可以非常方便快速地把Galileo开发板发送过来的骑行数据推送到前端网页应用上面,而并不需要长轮询方式的发送请求。

3.3 交互

Leap Motion具有外形小巧、易于安装、识别度较高等特点,非常适合实现手势交互的应用。根据系统的操作需求,设计了这些操作手势。

3.3.1 上下左右滑动

手势:手掌在Leap Motion上进行上下左右的滑动。

应用:此手势用在初始菜单的选择,以及在某些复选框表示确定或取消。

实现:滑动是Leap Motion本身就可以识别的手势,没有过多处理。当type属性为swipe时,direction属性即为滑动的空间向量,直接根据向量在x,y,z三轴分量就得到了滑动的方向。

3.3.2 连续抓握两次

手势:手掌从打开到握紧的过程为一次抓握,连续两次,类似于鼠标双击。

应用:该手势用于表示确定进入某一应用。

实现:grabStrength属性表示了当前手掌的握紧程度,0为完全打开,1为完全握紧。每当grabStrength为1时,我们提取前10帧的数据,看是否出现了0->1->0->1这样一个过程,若有,证明该手势出现。

3.3.3 双手放大或缩小

手势:双手反向远离滑动即为放大,双手相向滑动即为缩小。

应用:该手势主要用于地图的缩放。

实现:该手势实现与滑动手势基本相同,但是利用了两只手来实现。Leap Motion可以识别当前手掌为左右还是右手。当左手滑动方向向右,右手滑动方向向左时,为缩小指令。当左手滑动方向向左,右手滑动方向向右时,为放大指令。

3.3.4 抓握移动

手势:单手握紧,移动,类似于鼠标的拖拽动作。

应用:该手势应用于地图的移动,用于选定地图起始坐标点。

实现:当 grabStrength为1时,利用translation函数,得到当前帧与上一帧的手掌移动向量translation。根据每帧之间的手掌移动即可实现对地图的抓握移动。

3.3.5 单手转动

手势:手在Leap Motion的X,Y平面内做圆周运动。

应用:控制历史记录模式内的日历转盘。

实现:根据食指指尖在X,Y平面内的位置变化,计算与之对应的旋转角度:设当前坐标为(x,y),坐标变化量为(Δx,Δy),转动角为 θ,则有

3.3.6 暂停手势

手势:类似于篮球比赛的暂停手势,右手五指并拢,左手食指指向右手掌心。

应用:在动感单车模式内,控制视频的播放暂停。

实现:当左手食指的方向向量与右手手掌的法向量角度约为180°,且食指指尖坐标与右手手掌中心位置距离小于10时,认为该手势有效。

利用上述几种手势,可以非常方便且高效地完成我们需要的所有控制。

3.4 应用实现

3.4.1 专业训练模块

专业训练模块是一个基于FTP测试的功率训练课程。在初次使用系统,以及每到一个30 d的大周期时,都需要进入FTP测试阶段,以检测运动员当前的骑行水平,从而及时地更新训练计划。

FTP测试的具体过程为:骑行者进入系统,首先热身,之后进入测试页面开始测试。系统自动监测骑行者的实时功率、心率、里程等,汇总为平均数据。如果测试者不能坚持测试到1 h,取20 min的数据,如果能坚持到1 h,取1 h的数据。

相对于功率来说,心率数据更能反映个人当前的身体状况是否能进行/坚持训练。因此,在本训练系统中,心率是一个训练中的辅助数据。在FTP测试中,同样监测了平均心率数据,作为有氧阈值心率(LTHR)。我们利用《The Cyclist’s Training Bible》提供的方法建立了一个有氧阈值心率的测试方法(见表2),与FTP测试同时完成。

表2 有氧阈值心率测试Table Ⅱ Aerobic Threshold Heart Rate Test

测试页面分为5个部分:速度曲线、心率曲线、功率曲线、累计距离和累计时间。

训练系统:耐力训练是一种有氧训练,自行车运动是一项有氧无氧混合的运动,拥有好的有氧能力,是应对比赛中不时出现的无氧拉扯的基础。对于一般的以锻炼目的为基础的业余骑手,有氧训练更加重要,这是提高他们心肺功能很好的方式。本训练课程按骑手的水平从低到高设定了不同时长的耐力训练。

在间歇训练中,运动员先骑一段时间的高于FTP的功率输出,然后一段时间低于FTP的功率输出的训练方式,两者交替进行,这是自行车训练中不可缺少的一环(见表3)。通过长期的运动训练实践,人们发现对于已经经过长期训练的耐力运动员来说,再进行次高强度的训练对他们的成绩提高微乎其微,只有进行间歇训练才能进一步提高他们的运动能力。

表3 根据FTP划分的等级以及每个等级对应的训练强度Table Ⅲ Levels according to the Division of FTP and the Corresponding Training Intensity to Each Level

对于一般的业余骑手来说,间歇训练是快速提高他们高强度运动承受能力的一种途径,在中等强度的骑行中穿插几组间歇,既使得训练过程不那么枯燥,又能够显著提高运动能力,这是纯耐力训练无法替代的。

考虑到间歇训练会给肌肉带来的巨大负担,本训练课程的一个训练周期末端安排了恢复训练骑行,恢复骑行的要素是,以小强度的骑行,放松肌肉,排除肌肉前一天因间歇产生的大量乳酸。恢复训练没有功率上的要求,基本按心率的第二分区骑行就能满足恢复骑的要求。

前文已经提到,心率在反映人当前的身体状况上优于功率,因此我们还设置了一个疲劳监测的模块去检验骑手能否坚持当天的训练课程。简单来说,就是当骑手在训练时,在达到正常训练的心率基础上,功率低于正常训练平均值的80%,就应停止训练。这个情况表明了当前骑手的肌肉处于疲劳状态,在同样的氧气摄入量下无法输出正常的功率。另外,早晨起床的晨间静止心率也在考虑之中,如果晨间静止心率高于正常的110%,说明前一天的训练量过大,身体较为疲劳,当天应该进行恢复骑行。

3.4.2 模拟赛道模块

这里面包含了3个主要的模块:数据格式转换模块、数据融合模块、赛道重现模块。模块之间的联系如图4。

图4 模块连接图Figure 4 Module Connection

3.4.2.1 数据格式转换模块

我们需要的数据来源于两个方面,真实的赛道数据和天气数据。公路自行车赛的形式有很多,获取赛道数据的渠道也不尽相同,所以源数据的格式存在一定的差异,为了实现统一的数据导入形式,需要统一的源数据格式。数据格式转换模块中包含了针对不同类型源数据的适配器,经过处理后的源数据统一输出为json格式,用于后续的数据需求。一旦出现新的源数据形式,只需要增加相应的源数据适配器。

同样地,能够提供天气查询的API有很多种,数据格式转换模块中还有针对天气数据的适配器,从中提取我们所需要的风速、风向等数据,并输出为统一的json格式。

3.4.2.2 数据融合模块

经过格式化的源数据是相对独立的,但是实际比赛过程中呈现的是一个整体。数据融合模块的功能就是将这些相对独立的数据,通过一定的逻辑融合在一起,从而实现对真实情景的最佳模拟。

天气的数据是根据时间获取的,也就是所导入赛事的实际比赛时间,模拟情景中天气变化的依据是从比赛开始后的相对时间。那么,决定当前环境的因素就有两个:时间和位置。时间决定了当前环境的风速和方向,位置决定了当前环境的地势、排名等因素。

数据融合模块将这两方面的数据结合在一起之后,会提供一个接口,这个接口的输入是时间和位置,输出是控制当前环境因素的所有变量。

3.4.2.3 赛况重现模块

赛况重现模块通过调用前两个模块,提供赛道数据的可视化和体感上的体验。赛道数据的可视化主要表现为数据的图形化表达,体感部分主要表现为转角和阻力上的变化。

3.4.3 历史记录模块

这是骑行数据的主要展示模块,分别以天、月为单位,为运动员提供各个时间段的骑行数据查看。并且统计出了运动员的各项数据平均值和和值,例如平均速度、平均功率、总时间、总里程、总能量等。

4 系统测试

4.1 骑行数据准确率测试

4.1.1 测试方案

选取10名志愿者进行骑行测试,每人骑行10 min,每分钟统计一次骑行过程中的速度、角度、心率、功率、踏频,再对比专业自行车仪表测试出来的数据,验证其准确性。对于姿态和握把数据,每人做10次测试,统计正确次数。

4.1.2 测试工具

自行车码表、心率计、踏频计、功率计。

4.1.3 测试结果(见表4)

4.1.4 结果分析

在姿态和握把上,因为数据量很低,且传感器稳定性较高,但在串口数据通信时出现了一次错误,因此数据正确率达到了99%。对于速度和踏频,因为传感器的精度足够高,基本没有错误,但在速度极低的情况下,踏频会出现较长时间未更新数据的情况,因此准确度有所下降。由于机械损耗的原因,电机测得的功率与功率计测得的功率由一定的偏差,经过软件修正,达到了88%的正确率,基本符合要求。而心率的测量出现了一定的问题,因为心率传感器是安装在车把上的,与用户的手型、握紧程度等因素有很大的关系,因此出现了很长时间信号缺失的情况。若要测得较好的数据,需要多次摸索,掌握测量要领。

表4 骑行数据测试结果Table Ⅳ Cycling Data Test Result

4.2 势识别率测试

4.2.1 测试方案

选取5名志愿者,分别对系统中涉及到的6种手势进行20次测试,统计正确识别次数。

4.2.2 测试结果(见表5)

表5 手势识别结果Table Ⅴ Result of Gesture Recognition

4.2.3 结果分析

手势识别的结果基本令人满意,但因Leap Motion的识别精度过高,有时会产生误操作的现象。这在双手放大缩小手势上比较明显,有时识别不到,有时又会连续放大或缩小两次。其他手势的正确率都达到80%以上,基本达到了正常使用的要求。

5 小结

随着科技的发展和进步,智能设备将越来越快地融入到人们的工作生活中,为人们带来更加方便快捷、科学高效的使用体验。本系统正是立足于这一点,旨在通过运用合适的科学技术来帮助运动员更好地完成训练,更快地提高自身的竞技水平。结合运动员自身的体能特点,通过大量训练数据的统计和分析,从而制定出的更加合理的训练计划,也体现了本系统智能化的特点。同时,本系统具有交互友好、使用便捷、节能环保等优点,具有较好的应用价值。

[1] Shelley Powers,谢春祥译.JavaScript学习指南[M].北京:人民邮电出版社,2013.

[2] Adams,Cameron等,郑文涛译.JavaScript艺术与科学[M].北京:电子工业出版社,2010.

[3] 马谦.智慧地球:Google Earth/Maps/KML核心开发技术揭秘[M].北京:电子工业出版社,2010.

[4] 朴灵.深入浅出Node.js[M].北京:人民邮电出版社,2013.

[5] BYVoid.Node.js开发指南[M].北京:人民邮电出版社,2012.

[6] 张锡山,徐铁华.带传动技术[M].北京:纺织工业出版社,1989

[7] 蕴璆.电机学(第四版)[M].北京:机械工业出版社,2011.

[8] 兆安.电力电子技术(第五版)[M].北京:机械工业出版社,2009

[9] 劲松,陶生桂.电力电子技术[M].北京:中国铁道出版社,2010.

[10] 胡宁博,李剑,赵榉云.基于HMC5883的电子罗盘设计[J].传感器世界,2011,17(6):35-38.

[11] 赵思宏.电机转矩转速测量方法的分析[J].光学精密工程,2002,10(3):290-294.

[12] 阮毅,陈伯时.电力拖动自动控制系统:运动控制系统(第4版)[M].北京:机械工业出版社,2010

[13] Joe Friel.(2009).The Cyclist's Training Bible.VeloPress.

[14] Allen,Hunter.et al.(2010).Training and Racing with a Power Meter.Ingram Publications Services.

[15] Google Earth."Google Earth API".[EB/OL].https://developers.google.com/earth/.2014/1/10.

[16] "JavaScript SDK Documentation"[EB/OB](2014).[Online]Available:https://developer.leapmotion.com/documentation/skeletal/javascript/index.html#

[17] "three.js docs"[EB/OB](2014).[Online]Available:http://threejs.org/docs.

猜你喜欢

手势心率功率
心率多少才健康
离心率
挑战!神秘手势
基于大数据分析的船舶功率优化应用
探索圆锥曲线离心率的求解
胜利的手势
“功率”练习
功和功率的常用计算方法
化解功和功率疑问
认手势说数字