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





