基于Android的智能乒乓球拍系统设计
2017-01-12宋童瑶郭书军
宋童瑶++郭书军
摘 要:针对传统乒乓球拍只能击球,无法获知击球动作、力度、位置、速度等运动参数的问题,对传感器技术、蓝牙技术、手机应用开发进行研究,构建了一个便于人机交互的Android平台,利用蓝牙4.0低功耗(BLE)技术将智能乒乓球拍一端采集的数据传输到手机端,实现对乒乓球比赛或训练中速度、旋转角度、方位等关键运动参数的计算,通过对运动数据的分析就如何提高击球精确度给出了相应的依据,使运动更加高效并具有娱乐性,该产品的市场前景广阔。
关键词:智能乒乓球拍;Android;蓝牙BLE;运动参数
中图分类号:TP311.1 文献标识码:A 文章编号:2095-1302(2016)10-0-03
0 引 言
近年来,随着国家体育战略的牵引,职业体育数字化训练和全民健身的市场需求越来越大,基于数字化运动的周边商品也日渐增多。乒乓球作为中国的国球,其发展之路必然一片光明。在智能化到来的今天,传统的乒乓球运动已经不能满足人们对精确化运动的需求。来自美国最大的风险投资机构KPCB的数据显示,全球智能手机出货量已经远高于台式机与笔记本出货量的总和。而其中Android手机更成为智能手机市场的主导力量。本文针对这种现象,在Android平台上设计了一个包含数据采集与分析的交互系统,在传统的球拍中增加采集运动参数的功能,利用蓝牙BLE技术将运动数据传输到手机中,通过分析击球速度、击球旋转角度、击球方位等运动参数,使用户可以随时随地通过手机方便查看运动数据并对击球好坏和击打姿势做出相应的评价,进一步提高运动效率,为客户提供更完善的服务。
1 乒乓球拍发展史
乒乓球拍因其板面质地与拍面覆盖物的组合不同,因此也被认为是运动员唯一能够发挥主观能动性的核心器材。乒乓球球拍的发展演变经历了从羊皮长柄拍到木板拍,到胶皮拍、海绵拍,再到反胶、长胶、生胶、防弧拍,最后到目前的碳纤维底板拍等过程。由于乒乓球在前进方向上处于高速旋转状态,它的运行路线既不是直线也不是由于重力造成的抛物线,而是一种质心运动加上阻力和强烈旋转作用形成的特殊弧形路线,因此好的球拍可以利用粗糙的表面来增大摩擦,从而增加弹性和攻击力量,使打出的球更快更有力的同时提高攻球的稳定性。球拍的标准化与多样化塑造了乒乓球运动的个性化,使从事这一运动的人有了更多的个性化选择。
2 蓝牙低功耗技术
Google在发布Android 4.3系统时添加了对蓝牙4.0的支持。蓝牙低功耗(Bluetooth Low Energy,BLE)是将传统蓝牙技术、高速技术和低耗能技术三种规格集为一体的新产物,与之前的版本相比,其最大的不同之处在于低功耗,功耗降低了90%,一粒纽扣电池即可连续工作数年之久。可将BLE简单分为单模(Bluetooth Smart)设备和双模(Bluetooth Smart Ready)设备两种类型。单模设备的芯片往往是一个带有单模蓝牙协议栈的产品。双模设备既可以支持BLE,也可以支持传统蓝牙BR/EDR,但在使用时需要用一个外部处理器才可以实现蓝牙协议栈。使用蓝牙设备进行通信时,往往需要提前对产品中蓝牙的版本进行描述,本设计考虑到内置处理器及乒乓球拍内部空间有限等问题,采用单模类型的蓝牙设备进行设备间的通信。
3 系统整体设计
该系统主要由采集端和手机客户端两部分组成。
3.1 采集端
采集端主要包含传感器模块和无线通信模块两大部分。
(1)传感器模块由九自由度传感器和薄膜压力传感器构成,用于收集运动数据。
(2)无线通信模块使用蓝牙通信模块与手机客户端进行无线通信和传输运动数据。
3.2 客户端
客户端使用Eclipse作为开发环境,使用ADT(Android Development Tools,ADT)作为开发插件,利用Android操作系统提供的各种资源实现。用户首先设置手机蓝牙的开关状态,完成注册登录等用户操作。然后便可在手机或平板电脑上查看显示的运动数据及相关分析功能。用户使用触摸屏与系统进行交互,通过手机随时查看运动数据,该系统具备的各项功能可媲美私人运动教练,使运动变得高效、灵活。
3.3 采集端整体设计
采集端部分主要包括惯性传感器模块、薄膜压力检测模块、无线通信模块、主控微处理器及电源模块。系统硬件方框图如图1所示。
薄膜压力传感器模块用于采集球拍的击球位置和击球力度,九自由度传感器模块用于监测球拍的运动加速度、角速度等惯性参数,实现对击球速度及轨迹的拟合回归。蓝牙通信模块采用TI公司的CC2451,其非常适合需要超低能耗的系统,而针对单模式蓝牙低能耗(BLE)的解决方案符合4.0协议的堆栈。微处理器模块选择TI公司生产的具有16位超低功耗与精简指令集(RISC)的混合信号处理器MSP430。此模块作为智能监测系统的核心,必须能够高效控制压力传感器和九自由度传感器对相应的运动参数进行检测,并将大量数据实时传到智能手机进行处理。因此,需要有较快的处理速度,以便于在挥拍的一瞬间就将各种运动数据传输到手机的软件界面中并进行分析与计算。
3.4 客户端整体设计
客户端作为一种查看运动数据的工具,其具有用户验证、蓝牙匹配、保存运动数据、查看运动数据等功能。图2所示为系统的总体功能结构图。
客户端设计主要涉及用户UI界面、蓝牙通信、线程和SQLite数据库的设计与使用。客户端可以分为注册登录模块、蓝牙配对模块、计时模块、分析模块和统计模块。客户端流程图如图3所示。
整个设计使用了Activity、TabActivity、Service、ProcessBar、Handler、ListView、SharePreference等多种组件,每个组件完成相应的任务,并采取不同的布局方式进行UI界面显示。进入客户端首页时,首先显示的是注册登录界面,用户需要输入正确的用户名及密码进入蓝牙匹配界面,开启蓝牙并选择要连接的蓝牙设备,即可跳转到分析与统计界面,分析界面主要显示击球加速度、击球角度、打球时间及消耗的能量,随时对自身的运动状态进行监督。统计界面主要以图表的形式将数据进行可视化处理,显示速度变化曲线图、速度统计图、旋转角度曲线图、击球方位统计图和击球类型统计图,用户可以根据自己的需求,点击相应的图标按钮进行查看。
4 系统具体实现
在本系统中,首先需要将小米MI2手机与智能乒乓球拍进行设备配对,在手机里打开智能乒乓球拍数据处理App后显示欢迎界面,如果是新用户,则需要先点击新用户按钮进行信息注册,注册成功后点击注册按钮返回登录界面,利用新注册的用户信息登录,之后点击登录按钮进入蓝牙通信界面。使用智能乒乓球拍进行乒乓球运动,在击球的同时,手机已将相关运动数据储存到SQLite数据库中,用户可随时在手机中根据导航界面的提示点击分析按钮进入数据显示界面,点击统计按钮查看可视化运动数据。
4.1 蓝牙通信模块实现
在蓝牙低功耗通信中定义了重要的角色。一个Service包含一个或者多个Characteristic,而Include方式则包含其它Service。Characteristic则是GATT profile中最基本的数据单位,由一个Properties、一个Value、一个或多个Descriptor组成。Characteristic Properties定义了characteristic的Value如何被使用,以及characteristic的Descriptor如何被访问。Characteristic Value是特征的实际值,例如温度特征,Characteristic Value就是温度值。Characteristic Descriptor则保存了一些和Characteristic Value相关的信息。
首先,判断蓝牙设备是否支持蓝牙4.0技术,若支持则每隔10 s扫描周边设备,利用广播更新的方法实时接收周边的characteristics。如果UUID和设定的一样就接收数据,然后通过标志位进行分割后储存到数据库中。
4.2 数据处理模块实现
运动数据的处理在本系统中起着至关重要的作用。运动数据和用户登录信息储存到SQLite数据库中,这是一款轻型数据库,占用资源非常低且支持Windows/Linux/Unix等主流操作系统,具有很好的可移植性。SQLite不同于大多数数据库的地方在于它支持动态数据类型,即数据类型取决于数据本身而并非它的容器,因此它能做到一些传统刚性类型数据库无法做到的事。
将三轴加速度、三轴陀螺仪、三轴磁力、压力等运动数据储存到SQLite数据库中,在分析与统计界面将数据从数据库中读出来并在此界面进行数据的相关处理。将得到的加速度值结合运动时间进行卡尔曼滤波,根据自定义的估计值和权值建立物理模型并与测量值进行比较,有效找出加速度真值的准确估计。由于加速计和陀螺仪都含有固有噪声,虽然可以通过陀螺仪的值进行时间积分得到角度值,但陀螺仪的噪声和偏移会在计算角度时引入很大的误差,因此采取一种传感器融合算法,称之为平衡滤波器或互补滤波器,即将陀螺仪获取的角度通过高通滤波器消除漂移,再与平滑过的加速计和磁力计的结果相加,即可得到准确的旋转角度值。
4.3 数据显示模块实现
直观的运动数据可以更好地指引用户提高技术动作,因此需要将复杂的运动数据进行可视化处理。AChartEngine是Android系统上制作图表的框架,它为Android开发者提供了很多实用的图表绘制工具类,可以在应用中添加可视化统计的功能,应用在本系统中尤为合适。它支持绘制折线图、饼图、气泡图、柱状图、散点图、面积图等多种类型的统计图表。
运作机制主要包括两个方面。一个是dataset即数据集,比如x/y轴的数值等。另一个是renderer即渲染器,比如字体颜色、大小等一些样式。在父类里建立dataset和renderer的基本方法,当然也可以根据实际需求进行修改。最后通过ChartFactory类的相应方法生成对应的图表,比如getLineChartIntent()生成线性表,返回一个Intent即可直接启动。不过要在manifest文件中进行注册后才可使用。此外,还可通过ChartFactory的getLineChartView()返回一个线性表的View对象,这样就可把此处的View对象放在一个布局中展示。
系统最终对用户的动作进行分析,给出速度变化曲线图、速度统计图、旋转角度曲线图、击球方位统计图和击球类型统计图。图4所示为数据显示模块具体实现的一部分。图4(a)所示为速度统计图,图4(b)所示为击球类型统计图。用户结合击球类型统计图与速度统计图即可看出本次运动使用的击球类型多为哪种,并且结合击球力量的变化进一步分析出自己属于哪种技术选手。
5 结 语
通过研究智能惯性运动传感器、压力传感器及多融合算法,并根据传感器信号对调理电路进行开发,对使用者运动时的加速度、速度、击球压力等关键数据实施采集、监测和分析,最终在Android手机应用中进行展示和分析,运用人机交互技术使其兼具娱乐交际功能,并有针对性的提出改进建议。相对于传统的乒乓球运动,新型智能乒乓球拍可将运动动作特性一目了然的展示在手机中,并添加了分析技术要领、计算消耗卡路里等功能,使人们更加喜爱乒乓球运动,从而更有利于智能乒乓球拍的推广。
参考文献
[1]Bill Phillips,Brian Hardy.Android编程权威指南[M].王明发,译.北京:人民邮电出版社,2014.
[2]明日科技.Java从入门到精通[M].北京:清华大学出版社,2012.
[3]李刚.疯狂Android讲义(第三版)[M].北京:电子工业出版社,2015.
[4]Greg Milette,Adam Stroud.Android传感器高级编程[M].裴佳迪,译.北京:清华大学出版社,2013.
[5]王长青.Android智能穿戴设备开发指南[M].北京:人民邮电出版社,2015.
[6]朱生,牟星亮,单康康,等.基于Android平台的应用程序开发研究[J].网络安全技术与应用,2013(10):46-47,64.