安 明,劉玉慶,周伯河,胡福超
(1.中國(guó)航天員科研訓(xùn)練中心人因工程重點(diǎn)實(shí)驗(yàn)室,北京100094;2.中國(guó)航天員科研訓(xùn)練中心,北京100094)
神舟十號(hào)任務(wù)中,航天員在太空中的精彩授課鼓舞人心舉世矚目,尤其通過(guò)旋轉(zhuǎn)陀螺的定軸運(yùn)動(dòng)淺顯易懂地展示了陀螺儀定向的物理原理[1],向世人展現(xiàn)了太空的神奇魅力。
我國(guó)載人航天的實(shí)踐表明,事先對(duì)任務(wù)的設(shè)計(jì)和訓(xùn)練可以為任務(wù)規(guī)劃和順利開(kāi)展提供重要的支持,是改善和預(yù)防航天活動(dòng)操作欠缺的根本保障所在[2-3]。而太空中最顯著的特點(diǎn)是失重,目前在地面采用實(shí)物模擬失重環(huán)境主要有中性浮力水槽[4]、失重飛機(jī)[5]等方法,但中性浮力水槽中存在水的阻力和黏性作用無(wú)法呈現(xiàn)太空授課中如陀螺的高速旋轉(zhuǎn)等現(xiàn)象,失重飛機(jī)采用拋物線(xiàn)飛行每次只能形成約15~40 s失重時(shí)間,一般只用于失重的體驗(yàn)性訓(xùn)練。
近年來(lái),隨著虛擬現(xiàn)實(shí)技術(shù)的發(fā)展,虛擬訓(xùn)練已廣泛應(yīng)用于國(guó)外載人航天領(lǐng)域,并起著越來(lái)越重要的作用,美國(guó)航天局NASA早在20世紀(jì)80年代就開(kāi)始了航天員虛擬訓(xùn)練的研究[6],其約翰遜航天中心開(kāi)發(fā)的虛擬訓(xùn)練系統(tǒng)可進(jìn)行艙外活動(dòng)衛(wèi)星捕獲訓(xùn)練以及空間站任務(wù)訓(xùn)練,國(guó)內(nèi)中國(guó)航天員中心劉玉慶等人開(kāi)發(fā)了航天員艙外活動(dòng)虛擬訓(xùn)練原型系統(tǒng),可用于艙外活動(dòng)全流程的訓(xùn)練[7],上海交通大學(xué)范秀敏[8]等人以載人機(jī)動(dòng)裝置的設(shè)計(jì)與開(kāi)發(fā)為背景,開(kāi)發(fā)了一個(gè)進(jìn)行預(yù)測(cè)、訓(xùn)練的虛擬樣機(jī)仿真實(shí)驗(yàn)環(huán)境。
為將虛擬現(xiàn)實(shí)技術(shù)應(yīng)用于旋轉(zhuǎn)陀螺交互操作訓(xùn)練,需要解決精度較高的人體運(yùn)動(dòng)跟蹤方法,以及建立符合失重特性的人體及操作物體的動(dòng)力學(xué)模型的關(guān)鍵技術(shù)問(wèn)題。本文在研究人機(jī)交互技術(shù)和PhysX物理引擎的基礎(chǔ)上,使用虛擬現(xiàn)實(shí)設(shè)備數(shù)據(jù)手套和位置跟蹤儀獲取人體精細(xì)的實(shí)時(shí)運(yùn)動(dòng)數(shù)據(jù),并使用物理引擎進(jìn)行動(dòng)力學(xué)仿真,最終使用計(jì)算出的物體運(yùn)動(dòng)狀態(tài)實(shí)時(shí)驅(qū)動(dòng)虛擬場(chǎng)景中的三維模型,從而實(shí)現(xiàn)了旋轉(zhuǎn)陀螺的實(shí)時(shí)交互操作仿真。
圖1 上肢運(yùn)動(dòng)跟蹤中傳感器放置Fig.1 Allocation of sensors in tracking the upper limb motion
由于在地面訓(xùn)練時(shí)受訓(xùn)者基本采用坐姿并主要使用手進(jìn)行交互操作,因此對(duì)使用Flock Of Bird電磁式位置跟蹤儀采集人體上肢運(yùn)動(dòng)進(jìn)行了研究。
2.1.1 跟蹤儀傳感器佩戴方式設(shè)計(jì)[9]
位置跟蹤儀傳感器r1,r2,r3能同時(shí)獲取位置和姿態(tài)數(shù)據(jù),其放置如圖1所示,圖1中B代表軀體(Body),S代表肩關(guān)節(jié)(Shoulder),E代表肘關(guān)節(jié)(Elbow),W代表腕關(guān)節(jié)(Wrist)。r1用于獲取軀體B體坐標(biāo)系的全局位置和姿態(tài),并作為人體基坐標(biāo)系,r2和r3分別用于獲取左右前臂末端腕關(guān)節(jié)W體坐標(biāo)系的全局位置和姿態(tài),同時(shí)不受腕關(guān)節(jié)活動(dòng)影響。
2.1.2 基于預(yù)設(shè)姿勢(shì)的傳感器校正
由于人體各關(guān)節(jié)位置和姿態(tài)解算需要上臂長(zhǎng)度LSE和前臂長(zhǎng)度LEW作為輸入,通過(guò)記錄3個(gè)如圖2所示的預(yù)設(shè)姿勢(shì)的測(cè)量值來(lái)計(jì)算當(dāng)前受訓(xùn)人員上臂和前臂的長(zhǎng)度,并實(shí)現(xiàn)對(duì)傳感器的校正。
圖2 上肢運(yùn)動(dòng)跟蹤預(yù)設(shè)姿勢(shì)1-3Fig.2 Preset posture 1 - 3 for upper limb motion tracking
三種姿勢(shì)下上肢各節(jié)段所成位置和角度關(guān)系,如圖3所示,其中字母上標(biāo)表示對(duì)應(yīng)的預(yù)設(shè)姿勢(shì)i。
圖3 預(yù)設(shè)姿勢(shì)下上肢各節(jié)段位置和角度關(guān)系Fig.3 Position and angle relationship of different segments of the upper limb with preset posture
從而得到式(1)所示受訓(xùn)者上臂和前臂的計(jì)算公式:
利用上臂和前臂的尺寸數(shù)據(jù),以及傳感器的實(shí)時(shí)捕獲數(shù)據(jù),可直接求解軀體和肘關(guān)節(jié)的位置和姿態(tài)。
2.1.3 基于逆向運(yùn)動(dòng)學(xué)的肩關(guān)節(jié)姿態(tài)求解
對(duì)于肩關(guān)節(jié)的姿態(tài),研究采用基于逆向運(yùn)動(dòng)學(xué)的方法進(jìn)行解算,以右臂為例,根據(jù)人體關(guān)節(jié)運(yùn)動(dòng)特性,肩關(guān)節(jié)有彎曲/伸展及內(nèi)收/外展兩個(gè)自由度,設(shè)為分別繞x軸和z軸轉(zhuǎn)動(dòng)的歐拉角變換,旋轉(zhuǎn)順序?yàn)橄壤@x軸旋轉(zhuǎn)角度γ,再繞z軸旋轉(zhuǎn)角度α,肩關(guān)節(jié)旋轉(zhuǎn)變換的效果是使肘關(guān)節(jié)從姿勢(shì)1的初始位置變換到當(dāng)前位置,即要滿(mǎn)足如式(2)所示約束方程:
為避免SPE0和SPE0init可能出現(xiàn)向量長(zhǎng)度不同而導(dǎo)致計(jì)算出現(xiàn)無(wú)解或多解的情況,先對(duì)兩向量進(jìn)行單位化,其中SPE0init為姿勢(shì)1下肘關(guān)節(jié)位置在肩關(guān)節(jié)坐標(biāo)系下的單位化坐標(biāo)向量,繞x軸旋轉(zhuǎn)角度γ,再繞z軸旋轉(zhuǎn)角度α后,將其變換為當(dāng)前點(diǎn)SPE0的單位化向量,進(jìn)行單位化之后,該變換就轉(zhuǎn)化為對(duì)一個(gè)單位化向量的旋轉(zhuǎn)變換,該方程組的關(guān)聯(lián)矩陣Rx(g)Rz(a)為兩個(gè)旋轉(zhuǎn)矩陣的乘積,同樣滿(mǎn)足旋轉(zhuǎn)矩陣的性質(zhì),因此該關(guān)聯(lián)矩陣可逆,方程組有解。為避免多重解的問(wèn)題,根據(jù)三角函數(shù)性質(zhì),分SPE0.y≤ 0和SPE0.y > 0兩種情況求解。
受訓(xùn)者與虛擬物體的交互主要依賴(lài)手部,且進(jìn)行觸碰、抓握等均需要精細(xì)的手部操作,因此重點(diǎn)對(duì)基于數(shù)據(jù)手套的手部運(yùn)動(dòng)精確跟蹤進(jìn)行研究。
根據(jù)手部的解剖學(xué)特性,將每只手分解為16個(gè)節(jié)段,各節(jié)段間采用相應(yīng)的關(guān)節(jié)進(jìn)行連接,相鄰節(jié)段靠近腕部節(jié)段作為父節(jié)段,靠近指端節(jié)段為子節(jié)段,父節(jié)段的運(yùn)動(dòng)直接傳遞到子節(jié)段,從而實(shí)現(xiàn)正向運(yùn)動(dòng)控制??紤]不同人手間差異,為使采集數(shù)據(jù)符合人手部的個(gè)性特征,設(shè)計(jì)并實(shí)現(xiàn)了基于7個(gè)預(yù)設(shè)手勢(shì)的數(shù)據(jù)手套校正,7個(gè)預(yù)設(shè)手勢(shì)如圖4所示。
圖4 數(shù)據(jù)手套標(biāo)定手勢(shì)Fig.4 Calibration gestures of the data gloves
其中手勢(shì)1為標(biāo)準(zhǔn)手勢(shì),記錄標(biāo)準(zhǔn)手勢(shì)對(duì)應(yīng)手部各傳感器的讀取數(shù)據(jù)為數(shù)組Offset,并通過(guò)其余不同手勢(shì)分別記錄手部各關(guān)節(jié)相對(duì)手勢(shì)1的最大彎曲幅值,記為數(shù)組maxData,結(jié)合文獻(xiàn)和實(shí)際測(cè)量試驗(yàn)得人手各關(guān)節(jié)相對(duì)標(biāo)準(zhǔn)手勢(shì)的最大張開(kāi)角度,記為數(shù)組maxAngle,則可得手部各關(guān)節(jié)校準(zhǔn)參數(shù)數(shù)組Gain如式(3)所示。
則根據(jù)校準(zhǔn)參數(shù)Gain和Offset,以及當(dāng)前讀取的傳感器原始數(shù)值rawData,即可求解得到如式(4)所示的各關(guān)節(jié)角度值(弧度表示)radianData。
物理引擎是用于仿真物理系統(tǒng)的軟件,最初應(yīng)用于游戲領(lǐng)域,后隨著引擎的發(fā)展,其計(jì)算功能和仿真能力越來(lái)越強(qiáng)大,近年來(lái)在工程仿真領(lǐng)域的應(yīng)用也逐漸成為研究熱點(diǎn),其主要功能模塊包括碰撞檢測(cè)、剛體動(dòng)力學(xué)以及數(shù)值計(jì)算等[10]。
其中碰撞檢測(cè)模塊用于獲取虛擬物體間的接觸情況,包括接觸點(diǎn)、刺入深度以及接觸點(diǎn)法向量等數(shù)據(jù),根據(jù)這些數(shù)據(jù)可計(jì)算得出相互間的接觸力大小及方向。剛體動(dòng)力學(xué)將現(xiàn)實(shí)世界中變形很小或變形可忽略的物體簡(jiǎn)化看作剛體,并將其運(yùn)動(dòng)分解為質(zhì)心的平移運(yùn)動(dòng)和繞質(zhì)心的旋轉(zhuǎn)運(yùn)動(dòng),相應(yīng)建立兩套微分方程組對(duì)其進(jìn)行描述。
對(duì)于質(zhì)心的平移運(yùn)動(dòng),可采用質(zhì)點(diǎn)運(yùn)動(dòng)定律,即牛頓第二運(yùn)動(dòng)定律F=ma進(jìn)行描述,而加速度a即為位置 x對(duì)時(shí)間t的二階導(dǎo)數(shù),由此可得式(5)。
對(duì)于剛體繞質(zhì)心的轉(zhuǎn)動(dòng)規(guī)律,如式(6)描述。
式中L(t)為剛體的角動(dòng)量,I(t)為慣性張量,用來(lái)描述物體的質(zhì)量分布,引擎會(huì)根據(jù)物體的形狀及質(zhì)量、密度等設(shè)置計(jì)算得出,ω(t)為剛體的角速度。
在一個(gè)物理仿真流程中,對(duì)于每一個(gè)仿真的剛體,引擎會(huì)計(jì)算得出其所受合外力,如力的作用方向未指向質(zhì)心,就會(huì)分解為作用于質(zhì)心的力和扭轉(zhuǎn)力矩,分別用于上述方程進(jìn)行解算,對(duì)于高階微分方程的數(shù)值解,一般采用降解、離散化等方法進(jìn)行優(yōu)化求解。
使用3D Max軟件對(duì)人體分別建立骨骼和皮膚層模型,并通過(guò)骨骼綁定技術(shù)將皮膚層模型與骨骼綁定到一起,如圖5所示,從而通過(guò)設(shè)置骨骼姿態(tài)實(shí)現(xiàn)皮膚層的變形隨動(dòng)。
圖5 人體骨骼及皮膚層模型Fig.5 Human skeleton and skin model
人體的碰撞體是建立在人體的內(nèi)骨骼模型基礎(chǔ)上,如此不僅提高了建模效率,且保證了碰撞體和骨骼控制系統(tǒng)的一致性。PhysX物理引擎對(duì)可移動(dòng)物體只支持凸多面體形狀,且要求單個(gè)碰撞體的三角面片數(shù)限制在256以?xún)?nèi),因此注意碰撞體在滿(mǎn)足基本形體的前提下應(yīng)盡量簡(jiǎn)化,以提高碰撞檢測(cè)的實(shí)時(shí)性。對(duì)各骨骼節(jié)段分別生成其碰撞體模型,并通過(guò)腳本技術(shù)靈活設(shè)定各碰撞體的質(zhì)量、密度、質(zhì)心位置等動(dòng)力學(xué)參數(shù),使用PhysX引擎中的D6Joint關(guān)節(jié)將各碰撞體連接到一起,并為關(guān)節(jié)系統(tǒng)添加slerp_drive驅(qū)動(dòng)器,該驅(qū)動(dòng)器可直接設(shè)置關(guān)節(jié)的姿態(tài)來(lái)逆向求解使關(guān)節(jié)轉(zhuǎn)動(dòng)到該角度所需力矩,從而可直接采用人體運(yùn)動(dòng)跟蹤的數(shù)據(jù)來(lái)驅(qū)動(dòng)物理學(xué)人體的運(yùn)動(dòng)[11]。
對(duì)陀螺的碰撞體建模,分別建立陀螺內(nèi)轉(zhuǎn)軸和外環(huán)模型,如圖6所示,采用設(shè)置group的方式將各部分固連到一起,從而可作為一個(gè)整體進(jìn)行物理仿真。
圖6 陀螺的物理碰撞體建模Fig.6 Modelling of top’s physical collision body
為體現(xiàn)失重狀態(tài),在物理引擎中首先通過(guò)場(chǎng)景描述對(duì)象將重力設(shè)置為0,程序編寫(xiě)如下:
sceneDesc.gravity.set(0,0,0);
對(duì)于旋轉(zhuǎn)的陀螺,如不受外力矩的作用,則它的轉(zhuǎn)動(dòng)軸總指向確定的方向,即旋轉(zhuǎn)陀螺的定軸特性[1],對(duì)該特性的仿真,采用在每一物理仿真流程結(jié)束時(shí),采用setAngularVelocity()方法手動(dòng)設(shè)置其旋轉(zhuǎn)角速度為固定值實(shí)現(xiàn)。
在每一物理仿真步長(zhǎng)內(nèi),如圖7所示,首先獲取人體實(shí)時(shí)的運(yùn)動(dòng)跟蹤數(shù)據(jù),用以驅(qū)動(dòng)人體各節(jié)段碰撞體,接下來(lái)通過(guò)精確的碰撞檢測(cè)結(jié)果得到的碰撞點(diǎn)及刺入深度,計(jì)算陀螺的受力方向及受力大小,最終通過(guò)剛體動(dòng)力學(xué)算法計(jì)算此次仿真結(jié)束后物體的位置和姿態(tài),如當(dāng)前接觸陀螺處于旋轉(zhuǎn)狀態(tài),則手動(dòng)設(shè)置其旋轉(zhuǎn)角速度為初始值。
平臺(tái)硬件部分包括:移動(dòng)圖形工作站一臺(tái)(HP EliteBook 8770w),CyberGlove數(shù)據(jù)手套(22傳感器)兩只,F(xiàn)lock Of Bird位置跟蹤儀一套(4傳感器);軟件部分包括3Ds Max建模軟件、PhysX SDK開(kāi)發(fā)包,OGRE圖形引擎以及其他功能插件,開(kāi)發(fā)環(huán)境采用Microsoft Visual Studio 2008。
根據(jù)神舟十號(hào)任務(wù)中太空授課視頻錄像,如圖8所示,航天員在天宮一號(hào)實(shí)驗(yàn)艙中演示了旋轉(zhuǎn)陀螺的定軸特性,具體為航天員用手指分別觸碰面前的靜止和繞定軸旋轉(zhuǎn)陀螺后,靜止陀螺發(fā)生平動(dòng)和不規(guī)則轉(zhuǎn)動(dòng),而繞定軸旋轉(zhuǎn)的陀螺產(chǎn)生平動(dòng)且仍保持原有軸向轉(zhuǎn)動(dòng)。
圖7 物理計(jì)算仿真流程Fig.7 Flowchart of physical calcuation simulation
圖8 神舟十號(hào)太空授課任務(wù)中陀螺操作Fig.8 Top operation during space class in Shenzhou 10 mission
本文以此作為驗(yàn)證實(shí)驗(yàn)情景,建立天宮一號(hào)實(shí)驗(yàn)艙、航天員及實(shí)驗(yàn)陀螺的三維模型,實(shí)驗(yàn)開(kāi)始前受訓(xùn)者穿戴位置跟蹤儀和數(shù)據(jù)手套進(jìn)行預(yù)設(shè)姿勢(shì)的標(biāo)定,仿真開(kāi)始后視鏡顯示切換到虛擬航天員的第一視角,受訓(xùn)者通過(guò)運(yùn)動(dòng)跟蹤實(shí)時(shí)控制虛擬航天員的運(yùn)動(dòng),并分別用虛擬手觸碰面前的兩個(gè)陀螺(左側(cè)為旋轉(zhuǎn),右側(cè)為靜止)。從圖9所示的實(shí)驗(yàn)截圖可以看出,虛擬手與兩個(gè)陀螺觸碰后,左側(cè)旋轉(zhuǎn)陀螺保持了定軸的性質(zhì)產(chǎn)生平動(dòng)和定軸轉(zhuǎn)動(dòng),右側(cè)靜止陀螺則不僅產(chǎn)生平動(dòng),且根據(jù)接觸位置發(fā)生了軸向變化即不規(guī)則轉(zhuǎn)動(dòng),實(shí)驗(yàn)結(jié)果與實(shí)際太空授課任務(wù)中表現(xiàn)基本一致,程序幀速率保持在200幀/秒以上。
圖9 陀螺交互操作仿真實(shí)驗(yàn)Fig.9 Simulaiton experiment of interactive top operation
仿真結(jié)果表明:
1)通過(guò)人機(jī)交互技術(shù)及物理仿真技術(shù),實(shí)現(xiàn)了太空失重環(huán)境的模擬,很好的實(shí)現(xiàn)了陀螺的交互操作仿真;
2)人機(jī)交互流暢且無(wú)卡頓現(xiàn)象,其實(shí)時(shí)性和準(zhǔn)確性都滿(mǎn)足虛擬訓(xùn)練的要求;
3)該仿真方法可應(yīng)用于后續(xù)空間站任務(wù)中,進(jìn)行空間操作任務(wù)演練及航天員的技能及流程性訓(xùn)練。
[1]王楚,李椿,周樂(lè)柱,等.力學(xué)[M].北京:北京大學(xué)出版社,1999:95-97.
[2]賈司光,梁宏.航天員艙外活動(dòng)的工效學(xué)問(wèn)題[J].中華航空航天醫(yī)學(xué)雜志,2001,12(4):246-249.
[3]Comfort D,F(xiàn)owler B,Bock O.Is dual task performance impaired in space Proceedings of the Human Factors and Ergonomics[C]//Society 43rd Annual Meting,1999:1383.
[4]馮慶義,李俊峰,王天舒.水下模擬失重動(dòng)力學(xué)研究綜述[J].力學(xué)與實(shí)踐,2004,26(3):10-14.
[5]劉巍,張磊,趙維.載人低重力模擬技術(shù)現(xiàn)狀與研究進(jìn)展[J]. 航天醫(yī)學(xué)與醫(yī)學(xué)工程,2012,25(6):463-468
[6]周前祥,曲戰(zhàn)勝.航天虛擬現(xiàn)實(shí)仿真技術(shù)的研究進(jìn)展[J].科學(xué)導(dǎo)報(bào),1998:35-37
[7]An M,Chen S,Liu Y.Study on Extra Vehicular Spacewalk Simulation Technology[C]//Proceedings of the 2011 Workshop on Digital Media and Digital Content Management.IEEE Computer Society,2011:53-56.
[8]徐安,范秀敏,洪鑫,等.交互式宇航員太空行走仿真系統(tǒng)的研究與開(kāi)發(fā)[J].系統(tǒng)仿真學(xué)報(bào),2004,16(9):1953-1956.
[9]安明,陳善廣,劉玉慶.基于數(shù)據(jù)手套的虛擬手精確建模的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)仿真,2010,27(1):241-244.
[10]有人,陳定方.虛擬現(xiàn)實(shí)環(huán)境中的物理模擬及物理引擎應(yīng)用的研究[J].湖北工業(yè)大學(xué)學(xué)報(bào),2008,23(2):7-9.
[11]于佳民,劉玉慶,周伯河.PhysX物理引擎在航天員虛擬現(xiàn)實(shí)訓(xùn)練系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2011,31(s):155-159.