安 明,劉玉慶,周伯河,胡福超
(1.中國航天員科研訓練中心人因工程重點實驗室,北京100094;2.中國航天員科研訓練中心,北京100094)
神舟十號任務中,航天員在太空中的精彩授課鼓舞人心舉世矚目,尤其通過旋轉陀螺的定軸運動淺顯易懂地展示了陀螺儀定向的物理原理[1],向世人展現了太空的神奇魅力。
我國載人航天的實踐表明,事先對任務的設計和訓練可以為任務規劃和順利開展提供重要的支持,是改善和預防航天活動操作欠缺的根本保障所在[2-3]。而太空中最顯著的特點是失重,目前在地面采用實物模擬失重環境主要有中性浮力水槽[4]、失重飛機[5]等方法,但中性浮力水槽中存在水的阻力和黏性作用無法呈現太空授課中如陀螺的高速旋轉等現象,失重飛機采用拋物線飛行每次只能形成約15~40 s失重時間,一般只用于失重的體驗性訓練。
近年來,隨著虛擬現實技術的發展,虛擬訓練已廣泛應用于國外載人航天領域,并起著越來越重要的作用,美國航天局NASA早在20世紀80年代就開始了航天員虛擬訓練的研究[6],其約翰遜航天中心開發的虛擬訓練系統可進行艙外活動衛星捕獲訓練以及空間站任務訓練,國內中國航天員中心劉玉慶等人開發了航天員艙外活動虛擬訓練原型系統,可用于艙外活動全流程的訓練[7],上海交通大學范秀敏[8]等人以載人機動裝置的設計與開發為背景,開發了一個進行預測、訓練的虛擬樣機仿真實驗環境。
為將虛擬現實技術應用于旋轉陀螺交互操作訓練,需要解決精度較高的人體運動跟蹤方法,以及建立符合失重特性的人體及操作物體的動力學模型的關鍵技術問題。本文在研究人機交互技術和PhysX物理引擎的基礎上,使用虛擬現實設備數據手套和位置跟蹤儀獲取人體精細的實時運動數據,并使用物理引擎進行動力學仿真,最終使用計算出的物體運動狀態實時驅動虛擬場景中的三維模型,從而實現了旋轉陀螺的實時交互操作仿真。

圖1 上肢運動跟蹤中傳感器放置Fig.1 Allocation of sensors in tracking the upper limb motion
由于在地面訓練時受訓者基本采用坐姿并主要使用手進行交互操作,因此對使用Flock Of Bird電磁式位置跟蹤儀采集人體上肢運動進行了研究。
2.1.1 跟蹤儀傳感器佩戴方式設計[9]
位置跟蹤儀傳感器r1,r2,r3能同時獲取位置和姿態數據,其放置如圖1所示,圖1中B代表軀體(Body),S代表肩關節(Shoulder),E代表肘關節(Elbow),W代表腕關節(Wrist)。r1用于獲取軀體B體坐標系的全局位置和姿態,并作為人體基坐標系,r2和r3分別用于獲取左右前臂末端腕關節W體坐標系的全局位置和姿態,同時不受腕關節活動影響。
2.1.2 基于預設姿勢的傳感器校正
由于人體各關節位置和姿態解算需要上臂長度LSE和前臂長度LEW作為輸入,通過記錄3個如圖2所示的預設姿勢的測量值來計算當前受訓人員上臂和前臂的長度,并實現對傳感器的校正。

圖2 上肢運動跟蹤預設姿勢1-3Fig.2 Preset posture 1 - 3 for upper limb motion tracking
三種姿勢下上肢各節段所成位置和角度關系,如圖3所示,其中字母上標表示對應的預設姿勢i。

圖3 預設姿勢下上肢各節段位置和角度關系Fig.3 Position and angle relationship of different segments of the upper limb with preset posture
從而得到式(1)所示受訓者上臂和前臂的計算公式:

利用上臂和前臂的尺寸數據,以及傳感器的實時捕獲數據,可直接求解軀體和肘關節的位置和姿態。
2.1.3 基于逆向運動學的肩關節姿態求解
對于肩關節的姿態,研究采用基于逆向運動學的方法進行解算,以右臂為例,根據人體關節運動特性,肩關節有彎曲/伸展及內收/外展兩個自由度,設為分別繞x軸和z軸轉動的歐拉角變換,旋轉順序為先繞x軸旋轉角度γ,再繞z軸旋轉角度α,肩關節旋轉變換的效果是使肘關節從姿勢1的初始位置變換到當前位置,即要滿足如式(2)所示約束方程:

為避免SPE0和SPE0init可能出現向量長度不同而導致計算出現無解或多解的情況,先對兩向量進行單位化,其中SPE0init為姿勢1下肘關節位置在肩關節坐標系下的單位化坐標向量,繞x軸旋轉角度γ,再繞z軸旋轉角度α后,將其變換為當前點SPE0的單位化向量,進行單位化之后,該變換就轉化為對一個單位化向量的旋轉變換,該方程組的關聯矩陣Rx(g)Rz(a)為兩個旋轉矩陣的乘積,同樣滿足旋轉矩陣的性質,因此該關聯矩陣可逆,方程組有解。為避免多重解的問題,根據三角函數性質,分SPE0.y≤ 0和SPE0.y > 0兩種情況求解。
受訓者與虛擬物體的交互主要依賴手部,且進行觸碰、抓握等均需要精細的手部操作,因此重點對基于數據手套的手部運動精確跟蹤進行研究。
根據手部的解剖學特性,將每只手分解為16個節段,各節段間采用相應的關節進行連接,相鄰節段靠近腕部節段作為父節段,靠近指端節段為子節段,父節段的運動直接傳遞到子節段,從而實現正向運動控制。考慮不同人手間差異,為使采集數據符合人手部的個性特征,設計并實現了基于7個預設手勢的數據手套校正,7個預設手勢如圖4所示。

圖4 數據手套標定手勢Fig.4 Calibration gestures of the data gloves
其中手勢1為標準手勢,記錄標準手勢對應手部各傳感器的讀取數據為數組Offset,并通過其余不同手勢分別記錄手部各關節相對手勢1的最大彎曲幅值,記為數組maxData,結合文獻和實際測量試驗得人手各關節相對標準手勢的最大張開角度,記為數組maxAngle,則可得手部各關節校準參數數組Gain如式(3)所示。

則根據校準參數Gain和Offset,以及當前讀取的傳感器原始數值rawData,即可求解得到如式(4)所示的各關節角度值(弧度表示)radianData。

物理引擎是用于仿真物理系統的軟件,最初應用于游戲領域,后隨著引擎的發展,其計算功能和仿真能力越來越強大,近年來在工程仿真領域的應用也逐漸成為研究熱點,其主要功能模塊包括碰撞檢測、剛體動力學以及數值計算等[10]。
其中碰撞檢測模塊用于獲取虛擬物體間的接觸情況,包括接觸點、刺入深度以及接觸點法向量等數據,根據這些數據可計算得出相互間的接觸力大小及方向。剛體動力學將現實世界中變形很小或變形可忽略的物體簡化看作剛體,并將其運動分解為質心的平移運動和繞質心的旋轉運動,相應建立兩套微分方程組對其進行描述。
對于質心的平移運動,可采用質點運動定律,即牛頓第二運動定律F=ma進行描述,而加速度a即為位置 x對時間t的二階導數,由此可得式(5)。

對于剛體繞質心的轉動規律,如式(6)描述。

式中L(t)為剛體的角動量,I(t)為慣性張量,用來描述物體的質量分布,引擎會根據物體的形狀及質量、密度等設置計算得出,ω(t)為剛體的角速度。
在一個物理仿真流程中,對于每一個仿真的剛體,引擎會計算得出其所受合外力,如力的作用方向未指向質心,就會分解為作用于質心的力和扭轉力矩,分別用于上述方程進行解算,對于高階微分方程的數值解,一般采用降解、離散化等方法進行優化求解。
使用3D Max軟件對人體分別建立骨骼和皮膚層模型,并通過骨骼綁定技術將皮膚層模型與骨骼綁定到一起,如圖5所示,從而通過設置骨骼姿態實現皮膚層的變形隨動。

圖5 人體骨骼及皮膚層模型Fig.5 Human skeleton and skin model
人體的碰撞體是建立在人體的內骨骼模型基礎上,如此不僅提高了建模效率,且保證了碰撞體和骨骼控制系統的一致性。PhysX物理引擎對可移動物體只支持凸多面體形狀,且要求單個碰撞體的三角面片數限制在256以內,因此注意碰撞體在滿足基本形體的前提下應盡量簡化,以提高碰撞檢測的實時性。對各骨骼節段分別生成其碰撞體模型,并通過腳本技術靈活設定各碰撞體的質量、密度、質心位置等動力學參數,使用PhysX引擎中的D6Joint關節將各碰撞體連接到一起,并為關節系統添加slerp_drive驅動器,該驅動器可直接設置關節的姿態來逆向求解使關節轉動到該角度所需力矩,從而可直接采用人體運動跟蹤的數據來驅動物理學人體的運動[11]。
對陀螺的碰撞體建模,分別建立陀螺內轉軸和外環模型,如圖6所示,采用設置group的方式將各部分固連到一起,從而可作為一個整體進行物理仿真。

圖6 陀螺的物理碰撞體建模Fig.6 Modelling of top’s physical collision body
為體現失重狀態,在物理引擎中首先通過場景描述對象將重力設置為0,程序編寫如下:
sceneDesc.gravity.set(0,0,0);
對于旋轉的陀螺,如不受外力矩的作用,則它的轉動軸總指向確定的方向,即旋轉陀螺的定軸特性[1],對該特性的仿真,采用在每一物理仿真流程結束時,采用setAngularVelocity()方法手動設置其旋轉角速度為固定值實現。
在每一物理仿真步長內,如圖7所示,首先獲取人體實時的運動跟蹤數據,用以驅動人體各節段碰撞體,接下來通過精確的碰撞檢測結果得到的碰撞點及刺入深度,計算陀螺的受力方向及受力大小,最終通過剛體動力學算法計算此次仿真結束后物體的位置和姿態,如當前接觸陀螺處于旋轉狀態,則手動設置其旋轉角速度為初始值。
平臺硬件部分包括:移動圖形工作站一臺(HP EliteBook 8770w),CyberGlove數據手套(22傳感器)兩只,Flock Of Bird位置跟蹤儀一套(4傳感器);軟件部分包括3Ds Max建模軟件、PhysX SDK開發包,OGRE圖形引擎以及其他功能插件,開發環境采用Microsoft Visual Studio 2008。
根據神舟十號任務中太空授課視頻錄像,如圖8所示,航天員在天宮一號實驗艙中演示了旋轉陀螺的定軸特性,具體為航天員用手指分別觸碰面前的靜止和繞定軸旋轉陀螺后,靜止陀螺發生平動和不規則轉動,而繞定軸旋轉的陀螺產生平動且仍保持原有軸向轉動。

圖7 物理計算仿真流程Fig.7 Flowchart of physical calcuation simulation

圖8 神舟十號太空授課任務中陀螺操作Fig.8 Top operation during space class in Shenzhou 10 mission
本文以此作為驗證實驗情景,建立天宮一號實驗艙、航天員及實驗陀螺的三維模型,實驗開始前受訓者穿戴位置跟蹤儀和數據手套進行預設姿勢的標定,仿真開始后視鏡顯示切換到虛擬航天員的第一視角,受訓者通過運動跟蹤實時控制虛擬航天員的運動,并分別用虛擬手觸碰面前的兩個陀螺(左側為旋轉,右側為靜止)。從圖9所示的實驗截圖可以看出,虛擬手與兩個陀螺觸碰后,左側旋轉陀螺保持了定軸的性質產生平動和定軸轉動,右側靜止陀螺則不僅產生平動,且根據接觸位置發生了軸向變化即不規則轉動,實驗結果與實際太空授課任務中表現基本一致,程序幀速率保持在200幀/秒以上。

圖9 陀螺交互操作仿真實驗Fig.9 Simulaiton experiment of interactive top operation
仿真結果表明:
1)通過人機交互技術及物理仿真技術,實現了太空失重環境的模擬,很好的實現了陀螺的交互操作仿真;
2)人機交互流暢且無卡頓現象,其實時性和準確性都滿足虛擬訓練的要求;
3)該仿真方法可應用于后續空間站任務中,進行空間操作任務演練及航天員的技能及流程性訓練。
[1]王楚,李椿,周樂柱,等.力學[M].北京:北京大學出版社,1999:95-97.
[2]賈司光,梁宏.航天員艙外活動的工效學問題[J].中華航空航天醫學雜志,2001,12(4):246-249.
[3]Comfort D,Fowler 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]馮慶義,李俊峰,王天舒.水下模擬失重動力學研究綜述[J].力學與實踐,2004,26(3):10-14.
[5]劉巍,張磊,趙維.載人低重力模擬技術現狀與研究進展[J]. 航天醫學與醫學工程,2012,25(6):463-468
[6]周前祥,曲戰勝.航天虛擬現實仿真技術的研究進展[J].科學導報,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]徐安,范秀敏,洪鑫,等.交互式宇航員太空行走仿真系統的研究與開發[J].系統仿真學報,2004,16(9):1953-1956.
[9]安明,陳善廣,劉玉慶.基于數據手套的虛擬手精確建模的研究與實現[J].計算機仿真,2010,27(1):241-244.
[10]有人,陳定方.虛擬現實環境中的物理模擬及物理引擎應用的研究[J].湖北工業大學學報,2008,23(2):7-9.
[11]于佳民,劉玉慶,周伯河.PhysX物理引擎在航天員虛擬現實訓練系統中的應用[J].計算機應用,2011,31(s):155-159.