郭 慶,馬欣辰,付 宇
(中國民航大學 航空工程學院,天津 300300)
隨著國家科技的進步和民用航空業(yè)的快速發(fā)展,民航運輸量持續(xù)增長且機隊規(guī)模在不斷擴大,在帶來機遇的同時,也給民用航空業(yè)的安全運行提出了更高的要求[1]。民用航空器的維修保障是飛機全壽命周期中的重要部分,因此為了保證航空器及發(fā)動機的持續(xù)適航能力、減少機務維修人員維修過程中的人為差錯,提前發(fā)現維修中人因方面的設計缺陷,就要求廠商在并行工程的框架下進行維修性驗證[2-3]。近年來利用虛擬人代替物理人對航空產品進行人機工學分析成為了現階段計算機輔助工程的熱點問題,而維修作業(yè)姿態(tài)的生成是維修工作負荷分析和維修過程人為因素研究的基礎[4-5]。
虛擬人的姿態(tài)生成需要能夠快速準確的完成,目前國內外學者對虛擬人的作業(yè)姿態(tài)生成技術進行了大量研究。部分學者構建人體姿態(tài)數據庫,利用這些數據重新組合生成目標任務的作業(yè)姿態(tài),如焦慶龍等[6]提出了一種基于群體智能優(yōu)化算法與聚類分析算法的虛擬人體維修作業(yè)姿態(tài)庫設計方法;KUO等[7]利用基于逆向運動學的行為語義編輯虛擬人姿態(tài)的自動生成。但是上述方法自動化程度不足,適用性較低,無法生成自然的虛擬人姿態(tài)。為了提高姿態(tài)生成的效率,ZHANG等[8]運用反向神經網絡進行逆向運動學求解。LIPPI[9]建立機器學習模型,運用在線學習預測器進行虛擬人人姿態(tài)控制。LI等[10]通過條件變分編碼器和條件生成對抗網絡模擬工人抬舉任務的姿勢。NGUYEN等[11]使用改進搜索空間的差分進化算法預測手臂的關節(jié)角度值。QIU等[12]提出了一種將原始運動、精細運動和過渡運動相混合的虛擬人控制方法,提高了仿真效率。與前一種方法相比,該方法雖然能更快速準確地生成人體的姿態(tài),但無法兼顧平衡性等人機因素及空間大小等環(huán)境因素,因此現階段大部分學者選擇運用智能優(yōu)化算法進行作業(yè)姿態(tài)生成。羅明宇等[13]提出了一種運用維修姿態(tài)庫和帶精英策略的快速非支配排序遺傳算法(fast elitist Non-dominated Sorting Genetic Algorithm,NSGA-Ⅱ)求解手臂姿態(tài)的混合建模仿真方法。朱文敏等[14]通過構建虛擬人的可達性范圍來自動確定合適的虛擬人姿態(tài)。武維維等[15]從平衡性、關節(jié)負荷等人機因素方面提出多個約束條件,并基于NSGA-Ⅱ方法求解最優(yōu)解集以確定最佳姿態(tài)方案。
綜合國內外學者的研究現狀,針對現階段的姿態(tài)生成方法,在民航機務維修性驗證中存在求解方式復雜、無法兼顧實際工作中的多約束需求等問題,本文以民航發(fā)動機維修為研究對象,提出一種基于帶收縮因子的粒子群優(yōu)化算法(standard Particle Swarm Optimization with a Constriction Factor,PSO-CF)[16-17]的機務人員維修工作姿態(tài)生成方法。該方法通過已知的發(fā)動機設計參數和維修任務,綜合分析可達性、平衡性、關節(jié)轉動范圍以及視域范圍因素,運用逆向運動學和PSO-CF算法生成接近自然狀態(tài)的機務維修虛擬人的作業(yè)姿態(tài)。最后,通過與某型發(fā)動機起動機拆裝實驗得到的動作捕捉數據對比,驗證了在已知發(fā)動機設計布局情況下本文所提方法的有效性、可行性和適用性。
人體是一種具有多維自由度的多關節(jié)鏈狀結構,身體節(jié)段為有質量的剛體,關節(jié)可近似為鉸鏈結構。本文采用的是簡化后具有15個驅動關節(jié)和18個身體節(jié)段的虛擬人體模型,根據人體結構特點,人體各組成部分可以組成一個樹形拓撲結構[18],本文所使用的人體骨架級聯(lián)圖如圖1所示。
虛擬人關節(jié)與節(jié)段位置的確定由虛擬人拓撲關系給出,當父節(jié)點所在的關節(jié)發(fā)生旋轉時,對應的子節(jié)點與子關節(jié)除了跟隨父節(jié)段位移之外還同時進行旋轉運動。子節(jié)段旋轉與位移可以通過控制驅動關節(jié)的位置和姿態(tài)來確定。為避免因使用歐拉角坐標變換而發(fā)生萬向節(jié)死鎖的問題,本文采用歐拉四元數的方法來表示當前坐標系與初始狀態(tài)坐標系的差異。ri=[xi,yi,zi]T表示身體節(jié)段在全局坐標系下的位置;qi=[ai,bi,ci,di]T是一組四元數,用來表示該身體節(jié)段的旋轉軸與旋轉角度。根據四元數的運算法則,身體某一節(jié)段si的末端位置Pi,j的位置向量為[19]
ri,j=ri,f+Qi·veci,i=1,2,…,N。
(1)
本文所定義虛擬人初始姿態(tài)為N-Pose狀態(tài),此時人體處于站立姿態(tài)且雙臂自然下垂,各關節(jié)的初始坐標系與全局坐標系重合,全局坐標系原點定義在兩腳根部連線的中點,坐標系中的x軸與人體冠狀面垂直且指向前方,y軸與人體冠狀軸重合,z軸垂直于水平面向上。初始時各關節(jié)的旋轉四元數qi=[1,0,0,0]T,關節(jié)角度為0。
在發(fā)動機設計布局已知情況下求解虛擬人的維修工作姿態(tài)是一種逆向運動學問題,根據給定的末端關節(jié)位置,求解出人體所有關節(jié)的角度[20]。由圖1給出的人體骨架級聯(lián)圖可知,虛擬人是由若干簡單的關節(jié)鏈組成的。對于簡單的關節(jié)鏈,如腕、肘和肩關節(jié)組成的關節(jié)鏈,可以通過解析法求解[21]。人的肩關節(jié)和腕關節(jié)具有3個自由度,肘關節(jié)只有1個自由度,因此在肩關節(jié)固定的情況下,肘關節(jié)在確定的肘圓平面內[22]。
(2)
(3)
(4)
由此可以求出肩關節(jié)和肘關節(jié)相對于肩關節(jié)的旋轉四元數分別為
(5)
(6)
(7)
(8)
綜合上述過程可知肩關節(jié)和肘關節(jié)的方向特征向量分別為
qs=qaqs0,
(9)
qe=qsqe0。
(10)
但是逆向運動學是多對一的映射,求解出的姿態(tài)有無數種,為了得到真實自然的虛擬人姿態(tài)就需要在這些姿態(tài)中尋找出最優(yōu)解。
在現實生活中,人體會自動地尋找最舒適的姿態(tài)來完成作業(yè)及任務。舒適姿態(tài)的選擇受到多方面因素的影響,單純地通過逆向運動學解析法求出的姿態(tài)往往與真實姿態(tài)存在較大差異,雖求解運算時間較短但姿態(tài)求解后需要再次根據經驗進行參數調整。另外,根據中國民用航空規(guī)章《運輸類飛機適航標準》(CCAR-25-R4)第25.611條,進行機務檢查維修工作時需要保證良好的可達性和可視性,因此需要根據條件對關節(jié)角度進行調節(jié)優(yōu)化。本文采用帶收縮因子的粒子群優(yōu)化算法[23],其本質是一種隨機搜索算法,在多目標優(yōu)化環(huán)境中擁有較好的尋優(yōu)能力。將經過初始化后的隨機粒子放入解空間中,根據粒子自身和群體信息共同決定運動的速度和方向,通過不斷迭代來搜尋最優(yōu)的關節(jié)角度解集。對于第k代粒子的速度、位置的更新公式為
(11)
其中,xk,vk為第i代粒子的位置和速度,xk=[θk1,θk2,θk3,…,θkd]T,Pkd(t),Pgd(t)分別表示第k個粒子在t時刻的最優(yōu)位置和整體最優(yōu)位置的第d維分量,c1,c2是自身認知因子和社會認知因子,r1,r2為(0,1)之間的隨機數,χ為收縮因子,運用下述公式計算:
(12)
本文中自身認知因子和社會認知因子取2.05,此時c為4.1,收縮因子χ為0.729。基本流程如圖2所示。
機務人員在進行維修工作時,不僅要保證手臂可以觸及到維修對象、被維修件在視野范圍內,還應保證人體各關節(jié)處于舒適狀態(tài)且不易摔倒,但在實際工作中以上各個目標間存在矛盾,難以同時達到最優(yōu)。因此將人體的各關節(jié)角度作為變量構建下述目標函數:
(13)
(14)
由于人體是一個剛體鏈狀結構,姿態(tài)的變化往往會導致人體重心發(fā)生偏移,當人體重心的投影位于人體支撐面外時人就會因為平衡性不足而摔倒。人的重心坐標位置(xG,yG,zG)可通過下式計算得到:
(15)
(16)
(17)
其中式中的Gi和(xi,yi,zi)分別代表第i個身體節(jié)段的質量和重心位置。根據GB/T 10000-1988《中國成年人人體尺寸》和GB/T 17245-2000《成年人人體慣性參數》標準可得到人體各節(jié)段的質量和重心所在位置如表1所示。其中質心位置為該身體節(jié)段的重心到父節(jié)點的距離與整個節(jié)段長度的比值,可以根據下式計算得出:
表1 節(jié)段重量和重心位置參數表
(18)
其中:Uc表示重心位置;Uf表示父節(jié)點的位置;Us表示子節(jié)點的位置。
為了保持所求姿態(tài)的平衡性,人的重心投影點越靠近支撐面的中心點,姿態(tài)越穩(wěn)定越安全[14]。因此建立考慮平衡性的目標函數:
(19)
其中dPFLPG表示腳踝位置PFL到人重心在支撐面上的投影點PG的距離,為腳踝位置到支撐面的中心點Pc的距離。
人體關節(jié)的結構復雜,使得各個關節(jié)在不同旋轉方向有不同的轉動范圍。肌群的緊張程度會影響人在維修任務中的舒適度[24],如果長時間處于不舒適的關節(jié)角度范圍內,就會增加關節(jié)力的大小,施力的增加會增加維修人員在維修過程中的難度、維修風險和人為差錯發(fā)生的概率,通常來說人體會自動選擇各個關節(jié)協(xié)調、整體感覺較為舒適的關節(jié)角度。對此,本文采取下述關節(jié)角度評估函數:
(20)
由于關節(jié)轉角處于不舒適的范圍會提高工傷風險、增加維修任務中人為差錯發(fā)生概率。為了使各個關節(jié)都盡量處于最舒適狀態(tài),在關節(jié)角度評估中評估值較高的關節(jié)將在考慮轉動范圍的目標函數中被賦予更高的權重,因此本節(jié)的目標函數表示為
(21)
維修工作中的可視性是民用航空器維修性驗證評判的重要指標,機務維修人員需要在任務時將視線集中于被維修部件,這樣才可以確保維修任務可以準確的完成,避免發(fā)生人為差錯。視野是人頭部和眼球不動的情況下,眼睛觀看正前方物體時所能看到的空間范圍[25]。水平面內視野內的雙眼視區(qū)大約在60°以內的區(qū)域。而垂直平面內能分辨顏色的最大視區(qū)為視平線以上30°和視平線以下40°,最佳眼睛轉動區(qū)為視平線以上25°和視平線下30°。而實際上人的自然視線是低于標準視線的,一般情況下,站立時的自然視線低于水平線10°,坐著時的自然視線低于水平線15°。
(22)
該角度同時也是各個關節(jié)角度(θ1,θ2,…,θi)的函數,建立針對可視域的目標函數方程
(23)
將本文所提出的姿態(tài)生成方法使用Windows 11/Python 3.7.10進行開發(fā),并將得到的虛擬人姿態(tài)進行可視化生成。首先通過設置不同的作業(yè)目標點進行姿態(tài)生成以驗證本文方法的有效性。然后,以某型航空發(fā)動機起動機拆裝維修作業(yè)作為驗證實驗,獲取實驗者執(zhí)行該任務時的動作姿態(tài)數據,并將其與使用本文方法求得的姿態(tài)數據進行比較,通過結果比較驗證本文方法的適用性和可行性。
本實驗中選取的實驗者為年齡21歲,身高170cm,體重48kg,無骨骼疾病的健康男性。實驗者在實驗前已充分休息,不存在睡眠不足或肌肉疲勞的情況。實驗者詳細身體數據如表2所示。
表2 實驗人員身體尺寸
將該實驗人員人體參數作為姿態(tài)生成的虛擬人尺寸,設置作業(yè)目標點在虛擬人初始位置右側手臂的正前方,距地面110 cm,與虛擬人冠狀面的水平距離分別為30 cm和50 cm,取粒子數量50,迭代次數為100,使用第3章提出的姿態(tài)生成優(yōu)化算法選取最優(yōu)姿態(tài)。
水平距離30 cm時目標位置與虛擬人距離較近,如圖3a所示虛擬人僅通過抬升手臂就可到達作業(yè)目標點,作業(yè)姿態(tài)較舒適且與日常生活經驗一致。從圖3b中可以看出在該場景下優(yōu)化函數可以達到最小值0.432,分析優(yōu)化函數中各項,發(fā)現該場景中可達性與關節(jié)轉角舒適性較好,重心與站立時位置相仿,但視域約束函數值較大,表示該目標位置雖處于視野中,但不處于最佳視區(qū)范圍內,而且頸關節(jié)負荷較大,長時間處于此狀態(tài)可能會造成疲勞。
水平距離50 cm時目標位置距離稍遠,且肩關節(jié)到目標點的距離大于手臂長度。為保證手掌能觸及作業(yè)目標點并減少手臂大幅度抬升增加的肘關節(jié)和肩關節(jié)的負荷,虛擬人需要小幅度彎腰來滿足可達性與轉動范圍的約束條件,同時需要稍微曲腿來抵消身體前傾帶來的重心偏移以保證該姿態(tài)下的平衡穩(wěn)定,如圖4a所示。在此姿態(tài)下,第3章所述的4個約束條件均得到較好滿足,優(yōu)化函數值變化曲線如圖4b所示。
綜上所述,在給定操作目標位置后,通過本文所述的姿態(tài)生成算法生成的虛擬人姿態(tài)效果較好,且能夠兼顧各項人機約束條件,因此本文提出的姿態(tài)生成算法擁有較好的有效性。
本算法可行性的驗證實驗在沉浸式虛擬維修系統(tǒng)中進行,基于HTC VIVE實現虛擬場景與物理人之間的位置映射。由于HTC VIVE所使用激光發(fā)射器交替發(fā)射水平和垂直的同步激光束進行掃描且手持控制器擁有較高的精度[26-27],因此可以用來替代真實的維修場景。在實驗過程中,實驗人員穿戴Xsens動作捕捉設備并使用MVN Studio軟件對實驗人員的動作姿態(tài)數據進行測量采集。實驗內容選擇為某型航空發(fā)動機的起動機拆裝任務,并要求實驗人員根據自身條件選擇最舒適姿態(tài)完成維修任務。根據飛機維護手冊(Aircraft Maintenance Manual,AMM)和零部件圖解目錄手冊(Illustrated Parts Catalog,IPC)選取表3中的2個維修任務作為本文驗證實驗任務,起動機拆裝任務虛擬場景與實驗過程如圖5所示。
表3 維修任務描述
將表3中的數據作為目標位置輸入,運用本文所述的姿態(tài)生成算法分別對兩個維修任務進行姿態(tài)生成。實驗數據經過計算后,通過本文算法得到的仿真結果以及通過MVN Studio軟件設備采集的人體關節(jié)角度結果如表4所示。
表4 仿真結果與測量結果關節(jié)角度
將表4中的仿真數據與實際實驗采集的數據姿態(tài)進行可視化得到如圖6所示的姿態(tài)對比圖。從圖中可以看出,任務1的目標位置較高,虛擬人主要呈站立而手臂向前平舉的姿態(tài),抬起雙手便可以完成托舉起動機任務,因此腿部和腰背部的轉角較小,肩肘關節(jié)的屈曲伸展角度較大。任務2的目標位置較低且距離身體較遠,虛擬人主要呈現彎腰且手臂平舉的姿態(tài),腰背部和髖/膝關節(jié)相比之下都有較大的旋轉角度,肩肘部姿態(tài)與任務1中相差不大。
人體各關節(jié)的活動范圍不一,即便在相同姿態(tài)下各個關節(jié)的角度也存在著不確定性,活動范圍越大這種不確定性越明顯,因此不能單純地使用仿真結果與實際采集結果之間的差值來表征本文姿態(tài)生成算法的精確度。為抵消這種影響,本文采用計算每個關節(jié)仿真結果與實際實驗采集的數據結果之間的絕對誤差(Absolute Error,AE)與關節(jié)轉動范圍(Rotation Range,RR)的比值(AE/RR)來描述本文姿態(tài)生成算法的準確性,如表4所示。通過表4中兩組數據的對比分析發(fā)現,兩項任務的AE/RR基本在10%以內,這種偏差對于人體關節(jié)來說是可以接受的,因而使用本文算法生成的姿態(tài)具有較好的準確性。本實驗過程中這種偏差產生的主要原因為虛擬實驗中的設備測量誤差以及真實人與虛擬人對各人機因素指標偏好的不確定性。其中任務2中手臂部分仿真結果與實驗采集數據相差較大,主要原因是實驗人員選擇與本文優(yōu)化算法不同的偏好,在目標位置較遠需要大幅彎腰的場景下,該實驗人員更傾向于保持身體平衡,而本文算法更傾向于使手臂的關節(jié)轉角處于較舒適角度區(qū)間內。由此可見,人在進行任務操作時的姿態(tài)產生是一個隨機性的過程,人會自主使用自己認為最舒適的姿態(tài)完成目標位置的觸及,而本文姿態(tài)生成仿真結果與實際操作姿態(tài)相差不大,則可以認為本文所提方法生成的姿態(tài)是較為合理的。
將表4中結果代入第3章中的總體目標函數式(13)及各約束函數式(14)~式(23),每個任務約束函數值如圖7所示。任務1仿真與測量姿態(tài)總體目標函數值分別為0.212和0.216,任務2的仿真與測量姿態(tài)總體目標函數值分別為0.105和0.257,可見在兩個任務中的總體目標函數值都優(yōu)于實際測量的姿態(tài),這表明使用本文方法生成的姿態(tài)在各人機因素目標之間達到了更好的平衡。分開來看,任務1仿真姿態(tài)的可達性、平衡性、關節(jié)舒適性和可視性的目標函數值分別為0.031,0.399,0.654,0.036;通過設備采集的數據計算出的函數值為0.111,0.291,0.515,0.150。任務2中仿真姿態(tài)的優(yōu)化函數值分別為0.016,0.177,0.384,0.003;而通過設備采集數據計算出的函數值分別為0.067,0.302,0.680,0.458??梢?個約束函數均在關節(jié)轉動范圍約束函數項達到極值,原因是該函數值由全身所有關節(jié)角度共同確定,雖然大部分關節(jié)處于較舒適的角度區(qū)域中,但個別關節(jié)角度不舒適就會造成約束函數值急劇增加。在任務2中,由于目標位置較低,各項人機因素指標出現明顯劣化,在這種條件下使用本文姿態(tài)生成算法可以從整體上兼顧各個人機因素并篩選出最優(yōu)的作業(yè)姿態(tài)。另外在本文使用的模型中可達性對最終姿態(tài)的確定起主導作用,同時視域約束可看作僅受一個關節(jié)影響,因而這兩項目標函數值較小。
該實驗表明,采用本文所述的姿態(tài)生成算法能夠計算出在已知目標維修位置情況下較合理的機務人員作業(yè)姿態(tài),在各人機因素間達到較好的平衡,擁有在工程實踐中應用的可行性,同時該算法在不同的作業(yè)場景下也有較好的適用性。
本文針對已知發(fā)動機產品布局的維修任務,提出一種基于逆向運動學和多目標粒子群算法的虛擬人姿態(tài)生成方法,從可達性、平衡性、關節(jié)轉動范圍和視域范圍等姿態(tài)約束因素提出優(yōu)化目標函數,從而確定在維修過程中的最佳維修姿態(tài)。實驗表明,本文方法在給定目標位置后生成的作業(yè)姿態(tài)符合人主觀生活經驗,有較好的有效性;姿態(tài)仿真結果與真實測量結果基本一致,擁有較好的應用可行性。另外,由于本文方法綜合考慮了多種機務維修工作中常見的人機因素作為限制條件,因此所得虛擬人作業(yè)姿態(tài)更加逼真自然,具有較好的適用性,為后續(xù)運用虛擬人姿態(tài)進行維修工作負荷分析和維修過程人為因素研究打下基礎。