本文闡述了一種通用肢體訓(xùn)練系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。該系統(tǒng)使用Kinect作為動(dòng)作捕捉輸入源,使用Unity3D作為輸出平臺(tái),可實(shí)時(shí)捕捉人體骨骼動(dòng)作并進(jìn)行動(dòng)作匹配,同時(shí)反饋匹配結(jié)果,通過(guò)保存動(dòng)作并共享的方式解決了訓(xùn)練者在訓(xùn)練時(shí)必須依賴教練、教練必須重復(fù)輔導(dǎo)多個(gè)訓(xùn)練者的弊端。
【關(guān)鍵詞】肢體訓(xùn)練 動(dòng)作捕捉 Kinect Unity3D
1 緒論
Kinect作為一種體感設(shè)備,可以獲取到運(yùn)動(dòng)捕捉時(shí)的動(dòng)態(tài)骨骼數(shù)據(jù),同時(shí)支持影像識(shí)別,語(yǔ)言輸入,語(yǔ)音識(shí)別等多種功能,官方也提供了內(nèi)含的運(yùn)行驅(qū)動(dòng)、擁有程序開(kāi)發(fā)接口(Raw Sensor Streams API)、方便的安裝文件以及完整的開(kāi)發(fā)手冊(cè),可讓軟件開(kāi)發(fā)人員使用主流的高級(jí)程序設(shè)計(jì)語(yǔ)言在visual studio開(kāi)發(fā)平臺(tái)下輕易開(kāi)發(fā)體感系統(tǒng)和支持自然人機(jī)交互的應(yīng)用。本文正是在這樣的背景下,在基于對(duì)Kinect體感識(shí)別技術(shù)研究的基礎(chǔ)上,設(shè)計(jì)實(shí)現(xiàn)一款通用肢體訓(xùn)練體感教育系統(tǒng)
2 系統(tǒng)設(shè)計(jì)
2.1 系統(tǒng)分析
本文旨在為肢體訓(xùn)練領(lǐng)域研究一個(gè)通用式的解決方案,若是僅僅單一的以教練員或者以訓(xùn)練者為主都不能實(shí)現(xiàn)這一目的。因此本課題計(jì)劃為不同用戶開(kāi)發(fā)不同的使用端,多個(gè)終端通過(guò)網(wǎng)絡(luò)連接到服務(wù)器,使用服務(wù)器上傳下載動(dòng)作文件從而實(shí)現(xiàn)文件的共享。文件共享之后,打破了傳統(tǒng)訓(xùn)練者和教練員一一對(duì)應(yīng)的關(guān)系,訓(xùn)練者可以練習(xí)來(lái)自所有教練的所有動(dòng)作,而教練員的動(dòng)作也可以供所有訓(xùn)練者下載練習(xí)。
系統(tǒng)業(yè)務(wù)流程如圖1所示。
2.2 系統(tǒng)設(shè)計(jì)
根據(jù)以上分析,可以將系統(tǒng)分為一個(gè)服務(wù)器端和三個(gè)客戶端,分別為標(biāo)準(zhǔn)動(dòng)作采集端、訓(xùn)練端和手機(jī)無(wú)線控制端。服務(wù)器端負(fù)責(zé)存儲(chǔ)文件,實(shí)現(xiàn)文件的共享;標(biāo)準(zhǔn)動(dòng)作采集端負(fù)責(zé)錄制教練員的標(biāo)準(zhǔn)動(dòng)作,并將動(dòng)作信息轉(zhuǎn)換成數(shù)據(jù)記錄到文件,再將文件上傳到服務(wù)器;訓(xùn)練端則從服務(wù)器下載文件并解析成動(dòng)作數(shù)據(jù)并將其應(yīng)用于虛擬人物,實(shí)現(xiàn)動(dòng)作的回放。訓(xùn)練端還需要獲取訓(xùn)練者的動(dòng)作,并將自身動(dòng)作數(shù)據(jù)與標(biāo)準(zhǔn)動(dòng)作數(shù)據(jù)進(jìn)行比對(duì),得到比對(duì)結(jié)果后再反饋給訓(xùn)練者;考慮到訓(xùn)練者在訓(xùn)練時(shí)需要遠(yuǎn)離電腦,在訓(xùn)練時(shí)也無(wú)法通過(guò)鼠標(biāo)或者鍵盤(pán)控制播放狀態(tài),所以在這里引入手機(jī)無(wú)線控制端,手機(jī)端通過(guò)無(wú)線與訓(xùn)練端進(jìn)行連接,主要負(fù)責(zé)控制動(dòng)作回放時(shí)的播放和暫停,作為訓(xùn)練端的控制器而存在。
就整個(gè)系統(tǒng)而言,可以將系統(tǒng)分為輸入部分、存儲(chǔ)部分、輸出部分和控制部分,系統(tǒng)結(jié)構(gòu)圖如圖2 所示。
3 系統(tǒng)實(shí)現(xiàn)
系統(tǒng)的主要功能,可以通過(guò)模型綁定、數(shù)據(jù)驅(qū)動(dòng)、切換數(shù)據(jù)源、動(dòng)作匹配等主要步驟來(lái)實(shí)現(xiàn)。
3.1 模型綁定
真實(shí)人物與虛擬人物的動(dòng)作綁定主要考慮如何通過(guò)Kinect獲取到真實(shí)人物的骨骼動(dòng)作,再將真實(shí)的骨骼動(dòng)作同步到虛擬人物上從而實(shí)現(xiàn)虛擬人物與真實(shí)動(dòng)作的同步。系統(tǒng)要實(shí)現(xiàn)的所有功能模塊幾乎都需要在此基礎(chǔ)上進(jìn)行。所以首先需要通過(guò)Kinect獲取到人物的骨架以及每個(gè)骨架結(jié)點(diǎn)的坐標(biāo)。但是Kinect使用的坐標(biāo)與Unity內(nèi)部使用的坐標(biāo)不一樣,所以需要進(jìn)行必要的轉(zhuǎn)換,將人物相對(duì)于Kinect傳感器的坐標(biāo)轉(zhuǎn)換成虛擬人物相對(duì)于屏幕的坐標(biāo)。此轉(zhuǎn)換完成之后,即可對(duì)應(yīng)真實(shí)人物與虛擬人物的關(guān)節(jié)點(diǎn)。
關(guān)節(jié)點(diǎn)同步之后,虛擬人物還需要根據(jù)關(guān)節(jié)點(diǎn)來(lái)移動(dòng)骨骼模型。此時(shí)才可以實(shí)現(xiàn)虛擬人物的運(yùn)動(dòng)效果。該功能通過(guò)Unity提供的Avatar骨骼系統(tǒng)來(lái)實(shí)現(xiàn)。Avatar系統(tǒng)可以根據(jù)人物骨骼結(jié)點(diǎn)的Rotation來(lái)使骨骼進(jìn)行平滑的移動(dòng)。使用Dictionary
3.2 數(shù)據(jù)驅(qū)動(dòng)
真實(shí)人物與虛擬人物的動(dòng)作綁定后,可以實(shí)現(xiàn)使用虛擬人物骨骼的關(guān)節(jié)結(jié)點(diǎn)與真實(shí)人物的關(guān)節(jié)點(diǎn)進(jìn)行關(guān)聯(lián),下一步要實(shí)現(xiàn)虛擬人物根據(jù)真實(shí)人物的動(dòng)作進(jìn)行運(yùn)動(dòng)。
這里用到的是在單位時(shí)間內(nèi)對(duì)各個(gè)人體骨骼結(jié)點(diǎn)的位置進(jìn)行采樣。通過(guò)對(duì)單位時(shí)間段內(nèi)不同關(guān)節(jié)點(diǎn)位置做補(bǔ)間動(dòng)畫(huà)來(lái)實(shí)現(xiàn)同步真實(shí)人物動(dòng)作的動(dòng)畫(huà)效果。
3.3 切換數(shù)據(jù)源
在真實(shí)人物與虛擬人物動(dòng)作對(duì)應(yīng)的過(guò)程中,可認(rèn)為動(dòng)作的數(shù)據(jù)流從真實(shí)人物流到虛擬人物中。要實(shí)現(xiàn)保存動(dòng)作,只需要?jiǎng)幼鲾?shù)據(jù)流附與虛擬人物時(shí)將數(shù)據(jù)流拷貝一份副本進(jìn)行序列化再保存到本地即可。若要實(shí)現(xiàn)動(dòng)作的播放,只需要將虛擬人物的數(shù)據(jù)源切換到文件流即可。動(dòng)作的保存與播放結(jié)構(gòu)如圖4所示。
3.4 動(dòng)作匹配
動(dòng)作匹配是指比較訓(xùn)練者的姿勢(shì)與播放的教練的姿勢(shì)是否匹配。高效且精確度滿足需求的評(píng)估方法尤為重要。系統(tǒng)需要對(duì)同一空間下的兩個(gè)不同虛擬人物模型的相對(duì)應(yīng)的關(guān)節(jié)點(diǎn)進(jìn)行比較匹配,以驗(yàn)證訓(xùn)練者的某個(gè)關(guān)節(jié)點(diǎn)的移動(dòng)距離和方向是否與標(biāo)準(zhǔn)動(dòng)作一致。本文通過(guò)兩個(gè)向量的差來(lái)判斷其匹配度。即通過(guò)比較兩個(gè)虛擬模型相應(yīng)結(jié)點(diǎn)的相對(duì)位置來(lái)判斷結(jié)點(diǎn)是否匹配并返回匹配結(jié)果,按此方式遍歷所有結(jié)點(diǎn),便可以得到該動(dòng)作的匹配情況。
可由方程(1)來(lái)計(jì)算誤差值:
△Z=((a-b)-(c-d))2 (1)
對(duì)于任意一個(gè)骨骼結(jié)點(diǎn),θ1表示訓(xùn)練者的某個(gè)關(guān)節(jié)點(diǎn),θ2表示教練模型上與θ1相對(duì)應(yīng)的結(jié)點(diǎn)。向量a表示坐標(biāo)原點(diǎn)到骨骼結(jié)點(diǎn)θ1的向量;向量c表示坐標(biāo)原點(diǎn)到骨骼結(jié)點(diǎn)θ2的向量,b和d分別表示訓(xùn)練者模型和教練員模型的根結(jié)點(diǎn)△表示兩個(gè)結(jié)點(diǎn)的相似度,如果△的值比允許的誤差值小,那么可以認(rèn)為該結(jié)點(diǎn)的匹配是達(dá)標(biāo)的。但是,若向量足夠小,即便兩向量方向相反,他們的差也有可能小于誤差值,這顯然是不被允許的。因此在計(jì)算向量的差值之前還需要對(duì)兩個(gè)向量的方向的夾角進(jìn)行判定。此時(shí)需要引入向量的余弦相似度,即兩個(gè)向量夾角的余弦值越接近1,表明兩個(gè)向量越相近。當(dāng)余弦相似度達(dá)不到要求時(shí),可直接判定當(dāng)前節(jié)點(diǎn)為不匹配。
動(dòng)作匹配結(jié)果如圖5所示。
4 結(jié)束語(yǔ)
基于Kinect的通用式肢體訓(xùn)練系統(tǒng)為教練員和訓(xùn)練者分別開(kāi)發(fā)了兩個(gè)功能不同的客戶端。教練端通過(guò)Kinect捕捉獲取到教練人員的骨骼動(dòng)作后,使用Unity將骨骼動(dòng)作的數(shù)據(jù)流轉(zhuǎn)換成文件流保存成文件再通過(guò)網(wǎng)絡(luò)將動(dòng)作文件上傳至云空間進(jìn)行共享;訓(xùn)練端則是下載并播放動(dòng)作文件,將播放的動(dòng)作文件與Kinect獲取的自身的動(dòng)作進(jìn)行比對(duì),并反饋各個(gè)關(guān)節(jié)點(diǎn)匹配的結(jié)果。與傳統(tǒng)的肢體訓(xùn)練相比,使用兩個(gè)客戶端互相配合,訓(xùn)練者可以靈活的增加、刪除和選擇要練習(xí)的動(dòng)作,避免了需要為訓(xùn)練不同的動(dòng)作開(kāi)發(fā)不同軟件的弊端。
后期擬在錄制教練員動(dòng)作時(shí)同時(shí)也以視頻的形式錄制下來(lái)。如此訓(xùn)練者可以通過(guò)觀看視頻獲取更精確的動(dòng)作細(xì)節(jié)信息,使用骨骼信息來(lái)進(jìn)行比對(duì)測(cè)試自身練習(xí)的動(dòng)作是否到位。這樣給予訓(xùn)練者一個(gè)更全面的練習(xí)環(huán)境。另外,擬增加開(kāi)發(fā)一款動(dòng)作剪輯軟件,使得專業(yè)人員可以像剪輯視頻一樣剪輯動(dòng)作,丟棄冗余、錯(cuò)誤的動(dòng)作,給訓(xùn)練者一個(gè)更專業(yè)的標(biāo)準(zhǔn)動(dòng)作。
參考文獻(xiàn)
[1]蔡俊.基于Kinect的上肢康復(fù)訓(xùn)練系統(tǒng)的研究[D].廣東工業(yè)大學(xué),2015.
[2]鄔冠上.基于Kinect的交互式健身游戲的設(shè)計(jì)與實(shí)現(xiàn)[D].中國(guó)科學(xué)院大學(xué)(工程管理與信息技術(shù)學(xué)院),2014.
[3]黃彧.相似性度量的研究及其在數(shù)據(jù)挖掘中的應(yīng)用[D].福建師范大學(xué),2009.
[4]余濤.Kinect應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn):用最自然的方式與機(jī)器對(duì)話[M].北京:機(jī)械工業(yè)出版社,2013.
[5]商宇浩,李一帆,張吉祥.Unity 5.x完全自學(xué)手冊(cè)[M].北京:電子工業(yè)出版社,2016.
[6]吳國(guó)斌.KINEC人機(jī)交互開(kāi)發(fā)實(shí)踐[M].北京:人民郵電出版社,2013.
[7]陳泉宏.Unity API解析[M].北京:人民郵電出版社,2014.
[8](美)Alan, Shalloway.設(shè)計(jì)模式解析[M].北京:人民郵電出版社,2016.
[9]Erich,Gamma.設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)[M].北京:機(jī)械工業(yè)出版社,2007.
[10]陳綏陽(yáng),張娓娓,李繼C#面向?qū)ο蟪绦蛟O(shè)計(jì)[M].北京:清華大學(xué)出版社,2014.
[11]李紅波,丁林建,冉光勇.基于Kinect深度圖像的人體識(shí)別分析[J].專題策劃,2012(04).
[12]王瑩.基于Kinect的Tri-tracking視頻跟蹤算法研究[D].大連:大連理工大學(xué),2012.
[13]代艾波,瞿暢,朱小龍,于陳陳.體感交互技術(shù)在運(yùn)動(dòng)康復(fù)領(lǐng)域的應(yīng)用[J].中國(guó)康復(fù)理論與實(shí)踐,2014(01).
[14]David M.Frost,Tyson A.C.Beach,Troy L.Campbell,Jack P.Callaghan,Stuart M.McGill.Can the Functional Movement Screen? be used to capture changes in spine and knee motion control following 12 weeks of training?[J]. Physical Therapy in Sport,2016.
[15]向澤銳,支錦亦,徐伯初,李娟.運(yùn)動(dòng)捕捉技術(shù)及其應(yīng)用研究綜述[J].計(jì)算機(jī)應(yīng)用研究,2013(08):2241-2245.
作者簡(jiǎn)介
曲毅,女,淮海工學(xué)院計(jì)算機(jī)工程學(xué)院,副教授,主研方向?yàn)橛?jì)算機(jī)圖形學(xué)、虛擬現(xiàn)實(shí)、人機(jī)交互。
張承凱,男,計(jì)算機(jī)工程學(xué)院軟件工程專業(yè)2017屆本科畢業(yè)生。
作者單位
江蘇省連云港市淮海工學(xué)院計(jì)算機(jī)工程學(xué)院 江蘇省連云港市 222002endprint