金航宇 呂成偉
摘要:為快速評(píng)估人機(jī)工程學(xué)是否合理,提出了通過(guò)視覺(jué)識(shí)別方式自動(dòng)評(píng)估人機(jī)工程的方法,主要運(yùn)用了視頻采集、姿態(tài)識(shí)別、姿態(tài)計(jì)算等算法,為快速完成人機(jī)工程評(píng)估提供了一個(gè)新的思路。同時(shí),文中提到的姿態(tài)識(shí)別也可以擴(kuò)展應(yīng)用到操作防錯(cuò)、裝配防錯(cuò)。
關(guān)鍵詞:人機(jī)工程;人體姿態(tài)識(shí)別;智能制造;Mediapipe
在汽車發(fā)動(dòng)機(jī)批量生產(chǎn)過(guò)程中存在很多裝配、檢查等工位,這些工位勞動(dòng)者的操作動(dòng)作人機(jī)工程學(xué)是否合理、勞動(dòng)者工作是否舒適、是否安全對(duì)身體無(wú)傷害等,是現(xiàn)場(chǎng)工業(yè)工程師評(píng)估的一項(xiàng)重要工作。通常一個(gè)發(fā)動(dòng)機(jī)裝配線有幾十到幾百個(gè)人工工位,如何快速評(píng)估這些工位的人機(jī)工程合理性一直是工業(yè)工程師、工藝師的一個(gè)難點(diǎn)。本文通過(guò)視頻監(jiān)控、視覺(jué)識(shí)別、自動(dòng)姿態(tài)分析與交互計(jì)算的方法,提出一種快速自動(dòng)評(píng)估的方案。
評(píng)估原理
人機(jī)工程中關(guān)于人員操作的評(píng)估分為姿態(tài)、受力與頻次三個(gè)維度,某公司對(duì)臂力的一個(gè)人機(jī)工程要求見(jiàn)表1。姿態(tài)指的是人體姿勢(shì),這個(gè)通過(guò)視覺(jué)識(shí)別人體姿態(tài)來(lái)實(shí)現(xiàn),開(kāi)源自行使用Opencv訓(xùn)練也可以采用開(kāi)源框架來(lái)實(shí)現(xiàn)(本文采用Google開(kāi)源姿態(tài)識(shí)別框架Mediapipe來(lái)介紹);頻次可以通過(guò)視頻流分析來(lái)技術(shù)標(biāo)記;由于生產(chǎn)線搬運(yùn)安裝的工件或者使用的工具是固定型號(hào)的,對(duì)于用力只需要評(píng)估前標(biāo)定或者測(cè)量下即可。待此三個(gè)關(guān)鍵因子獲取到之后,通過(guò)計(jì)算就可以分析出工位人機(jī)工程是否合理。
按照表1,如果“彎腰拾取”,2.0kgf<工件的重量或者推力<3.1kgf,那么頻次>2次/min是可以接受的。
評(píng)估方法(以彎腰拾取為例)
1.姿態(tài)識(shí)別框架
人機(jī)工程評(píng)估需要識(shí)別姿態(tài),本文通過(guò)Mediapipe來(lái)識(shí)別人體姿態(tài)。Mediapipe是一個(gè)開(kāi)源軟件,它集成機(jī)器學(xué)習(xí)視覺(jué)算法的工具庫(kù),包含了人臉檢測(cè)、人臉關(guān)鍵點(diǎn)、手勢(shì)識(shí)別、頭像分割和姿態(tài)識(shí)別等各種模型,本文使用其中的人體姿態(tài)檢測(cè)與跟蹤模塊(見(jiàn)圖1)。人體姿態(tài)與檢測(cè)模塊會(huì)識(shí)別單個(gè)人體,并對(duì)人體定義33個(gè)關(guān)節(jié)點(diǎn)(見(jiàn)圖2),同時(shí)給出對(duì)地的一個(gè)坐標(biāo)值。這個(gè)框架支持多種語(yǔ)言,本文采用Python語(yǔ)言對(duì)其進(jìn)行調(diào)用,實(shí)時(shí)提取視頻中每幀人體的姿態(tài)中要評(píng)估的關(guān)節(jié)或者動(dòng)作相關(guān)關(guān)節(jié)的坐標(biāo)位置,通過(guò)快速計(jì)算并給出需要評(píng)估動(dòng)作的頻次。最后結(jié)合通過(guò)人工輸入力的數(shù)值實(shí)時(shí)對(duì)人機(jī)工程學(xué)進(jìn)行評(píng)估,并給出結(jié)論。
2.評(píng)估流程
評(píng)估的整體流程如圖3所示。首先待評(píng)估動(dòng)作力量測(cè)量并輸入程序,然后相機(jī)實(shí)時(shí)采集視頻信息,計(jì)算機(jī)對(duì)采集的每幀圖片進(jìn)行識(shí)別,緩存待評(píng)估的姿態(tài)數(shù)據(jù)并實(shí)時(shí)計(jì)算頻次,最后根據(jù)力與頻次的結(jié)果查表實(shí)時(shí)輸出評(píng)估結(jié)果。
實(shí)現(xiàn)過(guò)程
1.力的檢測(cè)與采集
對(duì)于力F的檢測(cè)可以采用拾取搬運(yùn)工件的質(zhì)量來(lái)收集,或者對(duì)于水平推力可以采用推力計(jì)等方式采集實(shí)際的推力大小然后換算為kgf。
2.姿態(tài)采集與檢測(cè)處理
采用Mediapipe的pose模塊可以實(shí)時(shí)采集到人體33個(gè)關(guān)鍵關(guān)節(jié)的地標(biāo)坐標(biāo)。以分析彎腰的頻率為例,采集到左側(cè)(或者右側(cè))腰部關(guān)節(jié)點(diǎn)24的坐標(biāo)以及與其相鄰的點(diǎn)肩部點(diǎn)12、膝處點(diǎn)26的坐標(biāo),通過(guò)三角函數(shù)就可以計(jì)算出腰部的角度a(或者彎腰角度∠b=180°-∠a,見(jiàn)圖4)。
人體33個(gè)關(guān)鍵關(guān)節(jié)采集坐標(biāo)采集方式實(shí)現(xiàn)Python代碼如圖5所示。
所有采集出來(lái)的關(guān)鍵坐標(biāo)如圖6所示,它是33個(gè)坐標(biāo)集合,同時(shí)它是歸一化的一個(gè)數(shù)據(jù),如果需要實(shí)際位置需要再乘以圖像的寬或長(zhǎng)的像素。
當(dāng)?shù)玫剿凶鴺?biāo)后,只需采集到需要的幾個(gè)關(guān)節(jié)點(diǎn),如本文中12、24、26這個(gè)關(guān)節(jié)點(diǎn)坐標(biāo),記作列表joint_list=[[12,24,26],],同時(shí)構(gòu)造一個(gè)三角函數(shù)求這個(gè)彎腰角度。在直角坐標(biāo)系中,如果已知三點(diǎn)坐標(biāo)可以通過(guò)反正切求出三點(diǎn)連線形成的三角形中任意一個(gè)夾角,如圖7所示。A、B、C三點(diǎn)坐標(biāo)分別記作(Ax,Ay),(Bx,By),(Cx,Cy),求∠ABC。
人體彎腰的角度計(jì)算可以用如圖8所示代碼實(shí)現(xiàn),如果需要計(jì)算其他關(guān)節(jié)角度可以在joint_list列表中增加或者更改。本文用arctan2函數(shù),來(lái)涵蓋四個(gè)象限的角度。
把這個(gè)函數(shù)放在主關(guān)節(jié)檢測(cè)程序中,就可以獲取到采集到的視頻的每幀中人體彎腰的角度,可以統(tǒng)一記錄在一個(gè)list中(Angle[ ])。這樣就實(shí)現(xiàn)了角度的計(jì)算與實(shí)時(shí)獲取,如圖9所示。
通過(guò)持續(xù)視頻分析,可以實(shí)時(shí)得到一組彎腰角度的數(shù)組Angle = [170, 174, 174, 173, 173, 173, 169, 166, 163, 164, …],數(shù)組的數(shù)量大小是已經(jīng)采集到的視頻幀(根據(jù)視頻格式不同而不同,本文是32幀/min)。如圖10所示,original_Bend_Angel_a為原始的腰部角度與幀數(shù)的曲線,波動(dòng)下去是腰部角度較小的區(qū)域,即彎腰較大。為了方便計(jì)算,通過(guò)平滑函數(shù)signal.savgol_filter(Angle, 501, 3, mode=“mirror”)將此曲線做下平滑得到 smoothed_Bend_Angel_a這條曲線,同時(shí)轉(zhuǎn)換到彎腰角度∠b=180-∠a,就得到了彎腰角度平滑曲線smoothed_Bend_Angel_b。這樣再通過(guò)求波峰函數(shù)num_peak_3,_=signal.find_peaks(y_smooth,height=50,distance=40)對(duì)曲線進(jìn)行波峰計(jì)算,可以得到波峰的個(gè)數(shù)num_peak_3也就是彎腰的次數(shù),圖9中兩個(gè)彎腰超過(guò)50°的點(diǎn),可以計(jì)數(shù)為彎腰2次。
3.頻次計(jì)算
對(duì)于頻率只需要把彎腰次數(shù)除以時(shí)間,時(shí)間可以通過(guò)視頻數(shù)除以視頻幀率。
4.匯總輸出結(jié)果
獲取了彎腰頻次以及推動(dòng)缸蓋所用的力F(當(dāng)前有電動(dòng)吊具,提升工件的力<2kgf,推動(dòng)工件的力測(cè)量值<2kgf),當(dāng)前頻次為每分鐘1.74次,因此依據(jù)表1可以評(píng)估出此處作業(yè)彎腰完全滿足人機(jī)工程要求。
實(shí)際使用驗(yàn)證
圖10是實(shí)際測(cè)試的一個(gè)記錄,彎腰的角度可以準(zhǔn)確采集與計(jì)算,關(guān)于彎腰的次數(shù)是通過(guò)對(duì)彎腰角度列表繪制曲線并進(jìn)行平滑處理后采集波峰的方式來(lái)獲取,實(shí)際應(yīng)用過(guò)程中可以通過(guò)平滑窗口以及階次微調(diào)找到合適的平滑參數(shù)。通過(guò)實(shí)際分析整體準(zhǔn)確度能達(dá)到使用要求,本示例能夠準(zhǔn)確識(shí)別彎腰次數(shù)以及頻次,并對(duì)人機(jī)工程進(jìn)行快速評(píng)估。
結(jié)語(yǔ)
本文通過(guò)“彎腰拾取”人機(jī)工程識(shí)別介紹了視覺(jué)姿態(tài)檢測(cè)在發(fā)動(dòng)機(jī)行業(yè)中的應(yīng)用,通過(guò)這種方法可以快速一次性評(píng)估人機(jī)工程中的大多項(xiàng)目,例如水平推物體、轉(zhuǎn)身取件、低頭檢查等等,從而大大節(jié)約工業(yè)工程師與安全工程師的評(píng)估工作量,同時(shí)也可以可提高評(píng)估的效率。這種方法在防錯(cuò)識(shí)別上也具有一定的可行性,例如可以通過(guò)識(shí)別手部動(dòng)作,判斷發(fā)動(dòng)機(jī)裝配線上操作人員是否按規(guī)定位置安裝了零件,從而判斷是否錯(cuò)漏裝。
參考文獻(xiàn)
[1] 夏幫貴.OpenCV計(jì)算機(jī)視覺(jué)基礎(chǔ)教程(Python版)[M].北京:人民郵電出版社,2021.