宋童瑤++郭書軍
摘 要:針對傳統(tǒng)乒乓球拍只能擊球,無法獲知擊球動作、力度、位置、速度等運(yùn)動參數(shù)的問題,對傳感器技術(shù)、藍(lán)牙技術(shù)、手機(jī)應(yīng)用開發(fā)進(jìn)行研究,構(gòu)建了一個便于人機(jī)交互的Android平臺,利用藍(lán)牙4.0低功耗(BLE)技術(shù)將智能乒乓球拍一端采集的數(shù)據(jù)傳輸?shù)绞謾C(jī)端,實(shí)現(xiàn)對乒乓球比賽或訓(xùn)練中速度、旋轉(zhuǎn)角度、方位等關(guān)鍵運(yùn)動參數(shù)的計(jì)算,通過對運(yùn)動數(shù)據(jù)的分析就如何提高擊球精確度給出了相應(yīng)的依據(jù),使運(yùn)動更加高效并具有娛樂性,該產(chǎn)品的市場前景廣闊。
關(guān)鍵詞:智能乒乓球拍;Android;藍(lán)牙BLE;運(yùn)動參數(shù)
中圖分類號:TP311.1 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2016)10-0-03
0 引 言
近年來,隨著國家體育戰(zhàn)略的牽引,職業(yè)體育數(shù)字化訓(xùn)練和全民健身的市場需求越來越大,基于數(shù)字化運(yùn)動的周邊商品也日漸增多。乒乓球作為中國的國球,其發(fā)展之路必然一片光明。在智能化到來的今天,傳統(tǒng)的乒乓球運(yùn)動已經(jīng)不能滿足人們對精確化運(yùn)動的需求。來自美國最大的風(fēng)險投資機(jī)構(gòu)KPCB的數(shù)據(jù)顯示,全球智能手機(jī)出貨量已經(jīng)遠(yuǎn)高于臺式機(jī)與筆記本出貨量的總和。而其中Android手機(jī)更成為智能手機(jī)市場的主導(dǎo)力量。本文針對這種現(xiàn)象,在Android平臺上設(shè)計(jì)了一個包含數(shù)據(jù)采集與分析的交互系統(tǒng),在傳統(tǒng)的球拍中增加采集運(yùn)動參數(shù)的功能,利用藍(lán)牙BLE技術(shù)將運(yùn)動數(shù)據(jù)傳輸?shù)绞謾C(jī)中,通過分析擊球速度、擊球旋轉(zhuǎn)角度、擊球方位等運(yùn)動參數(shù),使用戶可以隨時隨地通過手機(jī)方便查看運(yùn)動數(shù)據(jù)并對擊球好壞和擊打姿勢做出相應(yīng)的評價,進(jìn)一步提高運(yùn)動效率,為客戶提供更完善的服務(wù)。
1 乒乓球拍發(fā)展史
乒乓球拍因其板面質(zhì)地與拍面覆蓋物的組合不同,因此也被認(rèn)為是運(yùn)動員唯一能夠發(fā)揮主觀能動性的核心器材。乒乓球球拍的發(fā)展演變經(jīng)歷了從羊皮長柄拍到木板拍,到膠皮拍、海綿拍,再到反膠、長膠、生膠、防弧拍,最后到目前的碳纖維底板拍等過程。由于乒乓球在前進(jìn)方向上處于高速旋轉(zhuǎn)狀態(tài),它的運(yùn)行路線既不是直線也不是由于重力造成的拋物線,而是一種質(zhì)心運(yùn)動加上阻力和強(qiáng)烈旋轉(zhuǎn)作用形成的特殊弧形路線,因此好的球拍可以利用粗糙的表面來增大摩擦,從而增加彈性和攻擊力量,使打出的球更快更有力的同時提高攻球的穩(wěn)定性。球拍的標(biāo)準(zhǔn)化與多樣化塑造了乒乓球運(yùn)動的個性化,使從事這一運(yùn)動的人有了更多的個性化選擇。
2 藍(lán)牙低功耗技術(shù)
Google在發(fā)布Android 4.3系統(tǒng)時添加了對藍(lán)牙4.0的支持。藍(lán)牙低功耗(Bluetooth Low Energy,BLE)是將傳統(tǒng)藍(lán)牙技術(shù)、高速技術(shù)和低耗能技術(shù)三種規(guī)格集為一體的新產(chǎn)物,與之前的版本相比,其最大的不同之處在于低功耗,功耗降低了90%,一粒紐扣電池即可連續(xù)工作數(shù)年之久??蓪LE簡單分為單模(Bluetooth Smart)設(shè)備和雙模(Bluetooth Smart Ready)設(shè)備兩種類型。單模設(shè)備的芯片往往是一個帶有單模藍(lán)牙協(xié)議棧的產(chǎn)品。雙模設(shè)備既可以支持BLE,也可以支持傳統(tǒng)藍(lán)牙BR/EDR,但在使用時需要用一個外部處理器才可以實(shí)現(xiàn)藍(lán)牙協(xié)議棧。使用藍(lán)牙設(shè)備進(jìn)行通信時,往往需要提前對產(chǎn)品中藍(lán)牙的版本進(jìn)行描述,本設(shè)計(jì)考慮到內(nèi)置處理器及乒乓球拍內(nèi)部空間有限等問題,采用單模類型的藍(lán)牙設(shè)備進(jìn)行設(shè)備間的通信。
3 系統(tǒng)整體設(shè)計(jì)
該系統(tǒng)主要由采集端和手機(jī)客戶端兩部分組成。
3.1 采集端
采集端主要包含傳感器模塊和無線通信模塊兩大部分。
(1)傳感器模塊由九自由度傳感器和薄膜壓力傳感器構(gòu)成,用于收集運(yùn)動數(shù)據(jù)。
(2)無線通信模塊使用藍(lán)牙通信模塊與手機(jī)客戶端進(jìn)行無線通信和傳輸運(yùn)動數(shù)據(jù)。
3.2 客戶端
客戶端使用Eclipse作為開發(fā)環(huán)境,使用ADT(Android Development Tools,ADT)作為開發(fā)插件,利用Android操作系統(tǒng)提供的各種資源實(shí)現(xiàn)。用戶首先設(shè)置手機(jī)藍(lán)牙的開關(guān)狀態(tài),完成注冊登錄等用戶操作。然后便可在手機(jī)或平板電腦上查看顯示的運(yùn)動數(shù)據(jù)及相關(guān)分析功能。用戶使用觸摸屏與系統(tǒng)進(jìn)行交互,通過手機(jī)隨時查看運(yùn)動數(shù)據(jù),該系統(tǒng)具備的各項(xiàng)功能可媲美私人運(yùn)動教練,使運(yùn)動變得高效、靈活。
3.3 采集端整體設(shè)計(jì)
采集端部分主要包括慣性傳感器模塊、薄膜壓力檢測模塊、無線通信模塊、主控微處理器及電源模塊。系統(tǒng)硬件方框圖如圖1所示。
薄膜壓力傳感器模塊用于采集球拍的擊球位置和擊球力度,九自由度傳感器模塊用于監(jiān)測球拍的運(yùn)動加速度、角速度等慣性參數(shù),實(shí)現(xiàn)對擊球速度及軌跡的擬合回歸。藍(lán)牙通信模塊采用TI公司的CC2451,其非常適合需要超低能耗的系統(tǒng),而針對單模式藍(lán)牙低能耗(BLE)的解決方案符合4.0協(xié)議的堆棧。微處理器模塊選擇TI公司生產(chǎn)的具有16位超低功耗與精簡指令集(RISC)的混合信號處理器MSP430。此模塊作為智能監(jiān)測系統(tǒng)的核心,必須能夠高效控制壓力傳感器和九自由度傳感器對相應(yīng)的運(yùn)動參數(shù)進(jìn)行檢測,并將大量數(shù)據(jù)實(shí)時傳到智能手機(jī)進(jìn)行處理。因此,需要有較快的處理速度,以便于在揮拍的一瞬間就將各種運(yùn)動數(shù)據(jù)傳輸?shù)绞謾C(jī)的軟件界面中并進(jìn)行分析與計(jì)算。
3.4 客戶端整體設(shè)計(jì)
客戶端作為一種查看運(yùn)動數(shù)據(jù)的工具,其具有用戶驗(yàn)證、藍(lán)牙匹配、保存運(yùn)動數(shù)據(jù)、查看運(yùn)動數(shù)據(jù)等功能。圖2所示為系統(tǒng)的總體功能結(jié)構(gòu)圖。
客戶端設(shè)計(jì)主要涉及用戶UI界面、藍(lán)牙通信、線程和SQLite數(shù)據(jù)庫的設(shè)計(jì)與使用。客戶端可以分為注冊登錄模塊、藍(lán)牙配對模塊、計(jì)時模塊、分析模塊和統(tǒng)計(jì)模塊??蛻舳肆鞒虉D如圖3所示。
整個設(shè)計(jì)使用了Activity、TabActivity、Service、ProcessBar、Handler、ListView、SharePreference等多種組件,每個組件完成相應(yīng)的任務(wù),并采取不同的布局方式進(jìn)行UI界面顯示。進(jìn)入客戶端首頁時,首先顯示的是注冊登錄界面,用戶需要輸入正確的用戶名及密碼進(jìn)入藍(lán)牙匹配界面,開啟藍(lán)牙并選擇要連接的藍(lán)牙設(shè)備,即可跳轉(zhuǎn)到分析與統(tǒng)計(jì)界面,分析界面主要顯示擊球加速度、擊球角度、打球時間及消耗的能量,隨時對自身的運(yùn)動狀態(tài)進(jìn)行監(jiān)督。統(tǒng)計(jì)界面主要以圖表的形式將數(shù)據(jù)進(jìn)行可視化處理,顯示速度變化曲線圖、速度統(tǒng)計(jì)圖、旋轉(zhuǎn)角度曲線圖、擊球方位統(tǒng)計(jì)圖和擊球類型統(tǒng)計(jì)圖,用戶可以根據(jù)自己的需求,點(diǎn)擊相應(yīng)的圖標(biāo)按鈕進(jìn)行查看。
4 系統(tǒng)具體實(shí)現(xiàn)
在本系統(tǒng)中,首先需要將小米MI2手機(jī)與智能乒乓球拍進(jìn)行設(shè)備配對,在手機(jī)里打開智能乒乓球拍數(shù)據(jù)處理App后顯示歡迎界面,如果是新用戶,則需要先點(diǎn)擊新用戶按鈕進(jìn)行信息注冊,注冊成功后點(diǎn)擊注冊按鈕返回登錄界面,利用新注冊的用戶信息登錄,之后點(diǎn)擊登錄按鈕進(jìn)入藍(lán)牙通信界面。使用智能乒乓球拍進(jìn)行乒乓球運(yùn)動,在擊球的同時,手機(jī)已將相關(guān)運(yùn)動數(shù)據(jù)儲存到SQLite數(shù)據(jù)庫中,用戶可隨時在手機(jī)中根據(jù)導(dǎo)航界面的提示點(diǎn)擊分析按鈕進(jìn)入數(shù)據(jù)顯示界面,點(diǎn)擊統(tǒng)計(jì)按鈕查看可視化運(yùn)動數(shù)據(jù)。
4.1 藍(lán)牙通信模塊實(shí)現(xiàn)
在藍(lán)牙低功耗通信中定義了重要的角色。一個Service包含一個或者多個Characteristic,而Include方式則包含其它Service。Characteristic則是GATT profile中最基本的數(shù)據(jù)單位,由一個Properties、一個Value、一個或多個Descriptor組成。Characteristic Properties定義了characteristic的Value如何被使用,以及characteristic的Descriptor如何被訪問。Characteristic Value是特征的實(shí)際值,例如溫度特征,Characteristic Value就是溫度值。Characteristic Descriptor則保存了一些和Characteristic Value相關(guān)的信息。
首先,判斷藍(lán)牙設(shè)備是否支持藍(lán)牙4.0技術(shù),若支持則每隔10 s掃描周邊設(shè)備,利用廣播更新的方法實(shí)時接收周邊的characteristics。如果UUID和設(shè)定的一樣就接收數(shù)據(jù),然后通過標(biāo)志位進(jìn)行分割后儲存到數(shù)據(jù)庫中。
4.2 數(shù)據(jù)處理模塊實(shí)現(xiàn)
運(yùn)動數(shù)據(jù)的處理在本系統(tǒng)中起著至關(guān)重要的作用。運(yùn)動數(shù)據(jù)和用戶登錄信息儲存到SQLite數(shù)據(jù)庫中,這是一款輕型數(shù)據(jù)庫,占用資源非常低且支持Windows/Linux/Unix等主流操作系統(tǒng),具有很好的可移植性。SQLite不同于大多數(shù)數(shù)據(jù)庫的地方在于它支持動態(tài)數(shù)據(jù)類型,即數(shù)據(jù)類型取決于數(shù)據(jù)本身而并非它的容器,因此它能做到一些傳統(tǒng)剛性類型數(shù)據(jù)庫無法做到的事。
將三軸加速度、三軸陀螺儀、三軸磁力、壓力等運(yùn)動數(shù)據(jù)儲存到SQLite數(shù)據(jù)庫中,在分析與統(tǒng)計(jì)界面將數(shù)據(jù)從數(shù)據(jù)庫中讀出來并在此界面進(jìn)行數(shù)據(jù)的相關(guān)處理。將得到的加速度值結(jié)合運(yùn)動時間進(jìn)行卡爾曼濾波,根據(jù)自定義的估計(jì)值和權(quán)值建立物理模型并與測量值進(jìn)行比較,有效找出加速度真值的準(zhǔn)確估計(jì)。由于加速計(jì)和陀螺儀都含有固有噪聲,雖然可以通過陀螺儀的值進(jìn)行時間積分得到角度值,但陀螺儀的噪聲和偏移會在計(jì)算角度時引入很大的誤差,因此采取一種傳感器融合算法,稱之為平衡濾波器或互補(bǔ)濾波器,即將陀螺儀獲取的角度通過高通濾波器消除漂移,再與平滑過的加速計(jì)和磁力計(jì)的結(jié)果相加,即可得到準(zhǔn)確的旋轉(zhuǎn)角度值。
4.3 數(shù)據(jù)顯示模塊實(shí)現(xiàn)
直觀的運(yùn)動數(shù)據(jù)可以更好地指引用戶提高技術(shù)動作,因此需要將復(fù)雜的運(yùn)動數(shù)據(jù)進(jìn)行可視化處理。AChartEngine是Android系統(tǒng)上制作圖表的框架,它為Android開發(fā)者提供了很多實(shí)用的圖表繪制工具類,可以在應(yīng)用中添加可視化統(tǒng)計(jì)的功能,應(yīng)用在本系統(tǒng)中尤為合適。它支持繪制折線圖、餅圖、氣泡圖、柱狀圖、散點(diǎn)圖、面積圖等多種類型的統(tǒng)計(jì)圖表。
運(yùn)作機(jī)制主要包括兩個方面。一個是dataset即數(shù)據(jù)集,比如x/y軸的數(shù)值等。另一個是renderer即渲染器,比如字體顏色、大小等一些樣式。在父類里建立dataset和renderer的基本方法,當(dāng)然也可以根據(jù)實(shí)際需求進(jìn)行修改。最后通過ChartFactory類的相應(yīng)方法生成對應(yīng)的圖表,比如getLineChartIntent()生成線性表,返回一個Intent即可直接啟動。不過要在manifest文件中進(jìn)行注冊后才可使用。此外,還可通過ChartFactory的getLineChartView()返回一個線性表的View對象,這樣就可把此處的View對象放在一個布局中展示。
系統(tǒng)最終對用戶的動作進(jìn)行分析,給出速度變化曲線圖、速度統(tǒng)計(jì)圖、旋轉(zhuǎn)角度曲線圖、擊球方位統(tǒng)計(jì)圖和擊球類型統(tǒng)計(jì)圖。圖4所示為數(shù)據(jù)顯示模塊具體實(shí)現(xiàn)的一部分。圖4(a)所示為速度統(tǒng)計(jì)圖,圖4(b)所示為擊球類型統(tǒng)計(jì)圖。用戶結(jié)合擊球類型統(tǒng)計(jì)圖與速度統(tǒng)計(jì)圖即可看出本次運(yùn)動使用的擊球類型多為哪種,并且結(jié)合擊球力量的變化進(jìn)一步分析出自己屬于哪種技術(shù)選手。
5 結(jié) 語
通過研究智能慣性運(yùn)動傳感器、壓力傳感器及多融合算法,并根據(jù)傳感器信號對調(diào)理電路進(jìn)行開發(fā),對使用者運(yùn)動時的加速度、速度、擊球壓力等關(guān)鍵數(shù)據(jù)實(shí)施采集、監(jiān)測和分析,最終在Android手機(jī)應(yīng)用中進(jìn)行展示和分析,運(yùn)用人機(jī)交互技術(shù)使其兼具娛樂交際功能,并有針對性的提出改進(jìn)建議。相對于傳統(tǒng)的乒乓球運(yùn)動,新型智能乒乓球拍可將運(yùn)動動作特性一目了然的展示在手機(jī)中,并添加了分析技術(shù)要領(lǐng)、計(jì)算消耗卡路里等功能,使人們更加喜愛乒乓球運(yùn)動,從而更有利于智能乒乓球拍的推廣。
參考文獻(xiàn)
[1]Bill Phillips,Brian Hardy.Android編程權(quán)威指南[M].王明發(fā),譯.北京:人民郵電出版社,2014.
[2]明日科技.Java從入門到精通[M].北京:清華大學(xué)出版社,2012.
[3]李剛.瘋狂Android講義(第三版)[M].北京:電子工業(yè)出版社,2015.
[4]Greg Milette,Adam Stroud.Android傳感器高級編程[M].裴佳迪,譯.北京:清華大學(xué)出版社,2013.
[5]王長青.Android智能穿戴設(shè)備開發(fā)指南[M].北京:人民郵電出版社,2015.
[6]朱生,牟星亮,單康康,等.基于Android平臺的應(yīng)用程序開發(fā)研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2013(10):46-47,64.