基于Android的智能乒乓球拍系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引 言
近年來,隨著國家體育戰(zhàn)略的牽引,職業(yè)體育數(shù)字化訓(xùn)練和全民健身的市場需求越來越大,基于數(shù)字化運(yùn)動的周邊商品也日漸增多。乒乓球作為中國的國球,其發(fā)展之路必然一片光明。在智能化到來的今天,傳統(tǒng)的乒乓球運(yùn)動已經(jīng)不能滿足人們對精確化運(yùn)動的需求。來自美國最大的風(fēng)險(xiǎn)投資機(jī)構(gòu)KPCB 的數(shù)據(jù)顯示,全球智能手機(jī)出貨量已經(jīng)遠(yuǎn)高于臺式機(jī)與筆記本出貨量的總和。而其中Android 手機(jī)更成為智能手機(jī)市場的主導(dǎo)力量。本文針對這種現(xiàn)象,在Android 平臺上設(shè)計(jì)了一個(gè)包含數(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ù),使用戶可以隨時(shí)隨地通過手機(jī)方便查看運(yùn)動數(shù)據(jù)并對擊球好壞和擊打姿勢做出相應(yīng)的評價(jià),進(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)作用形成的特殊弧形路線,因此好的球拍可以利用粗糙的表面來增大摩擦,從而增加彈性和攻擊力量,使打出的球更快更有力的同時(shí)提高攻球的穩(wěn)定性。球拍的標(biāo)準(zhǔn)化與多樣化塑造了乒乓球運(yùn)動的個(gè)性化, 使從事這一運(yùn)動的人有了更多的個(gè)性化選擇。
2 藍(lán)牙低功耗技術(shù)
Google 在發(fā)布Android 4.3 系統(tǒng)時(shí)添加了對藍(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è)備的芯片往往是一個(gè)帶有單模藍(lán)牙協(xié)議棧的產(chǎn)品。雙模設(shè)備既可以支持BLE,也可以支持傳統(tǒng)藍(lán)牙BR/EDR,但在使用時(shí)需要用一個(gè)外部處理器才可以實(shí)現(xiàn)藍(lán)牙協(xié)議棧。使用藍(lán)牙設(shè)備進(jìn)行通信時(shí),往往需要提前對產(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ī)隨時(shí)查看運(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í)時(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ì)與使用??蛻舳丝梢苑譃樽缘卿浤K、藍(lán)牙配對模塊、計(jì)時(shí)模塊、分析模塊和統(tǒng)計(jì)模塊??蛻舳肆鞒虉D如圖 3 所示。
整個(gè)設(shè)計(jì)使用了Activity、TabActivity、Service、ProcessBar、Handler、ListView、SharePreference 等多種組件, 每個(gè)組件完成相應(yīng)的任務(wù),并采取不同的布局方式進(jìn)行 UI 界面顯示。進(jìn)入客戶端首頁時(shí),首先顯示的是注冊登錄界面,用戶需要輸入正確的用戶名及密碼進(jìn)入藍(lán)牙匹配界面,開啟藍(lán)牙并選擇要連接的藍(lán)牙設(shè)備,即可跳轉(zhuǎn)到分析與統(tǒng)計(jì)界面,分析界面主要顯示擊球加速度、擊球角度、打球時(shí)間及消耗的能量,隨時(shí)對自身的運(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)動,在擊球的同時(shí),手機(jī)已將相關(guān)運(yùn)動數(shù)據(jù)儲存到SQLite 數(shù)據(jù)庫中,用戶可隨時(shí)在手機(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)牙低功耗通信中定義了重要的角色。一個(gè)Service 包含一個(gè)或者多個(gè) Characteristic,而 Include 方式則包含其它Service。Characteristic 則是 GATT profile 中最基本的數(shù)據(jù)單位, 由一個(gè) Properties、一個(gè)Value、一個(gè)或多個(gè) 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í)時(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)動時(shí)間進(jìn)行卡爾曼濾波,根據(jù)自定義的估計(jì)值和權(quán)值建立物理模型并與測量值進(jìn)行比較,有效找出加速度真值的準(zhǔn)確估計(jì)。由于加速計(jì)和陀螺儀都含有固有噪聲,雖然可以通過陀螺儀的值進(jìn)行時(shí)間積分得到角度值,但陀螺儀的噪聲和偏移會在計(jì)算角度時(shí)引入很大的誤差,因此采取一種傳感器融合算法,稱之為平衡濾波器或互補(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ī)制主要包括兩個(gè)方面。一個(gè)是 dataset 即數(shù)據(jù)集,比如 x/y 軸的數(shù)值等。另一個(gè)是 renderer 即渲染器,比如字體顏色、大小等一些樣式。在父類里建立dataset 和renderer 的基本方法,當(dāng)然也可以根據(jù)實(shí)際需求進(jìn)行修改。最后通過 ChartFactory 類的相應(yīng)方法生成對應(yīng)的圖表, 比如getLineChartIntent() 生成線性表,返回一個(gè) Intent 即可直接啟動。不過要在manifest 文件中進(jìn)行注冊后才可使用。此外, 還可通過 ChartFactory 的getLineChartView() 返回一個(gè)線性表的View 對象,這樣就可把此處的View 對象放在一個(gè)布局中展示。
系統(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ù)選手。
結(jié) 語
通過研究智能慣性運(yùn)動傳感器、壓力傳感器及多融合算法,并根據(jù)傳感器信號對調(diào)理電路進(jìn)行開發(fā),對使用者運(yùn)動時(shí)的加速度、速度、擊球壓力等關(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)動,從而更有利于智能乒乓球拍的推廣。