祁海東
(鄭州飛機(jī)裝備有限責(zé)任公司維修中心,河南鄭州 450000)
在飛機(jī)上,有許多結(jié)構(gòu)復(fù)雜的航空附件產(chǎn)品,特別是其中很多機(jī)械類(lèi)產(chǎn)品,由于尺寸精度要求較高,在產(chǎn)品裝配時(shí)大多需要視情調(diào)整產(chǎn)品中的某些裝配尺寸,增減墊片就是較為常用的調(diào)整方式之一。當(dāng)前調(diào)整的墊片的主要方法是試裝,通過(guò)“粗調(diào)- 精調(diào)”的反復(fù)裝卸的試裝環(huán)節(jié),最終將產(chǎn)品尺寸調(diào)整到滿(mǎn)足圖紙技術(shù)要求為止。原調(diào)整方法對(duì)新員工極為不友好,由于新員工缺乏調(diào)整經(jīng)驗(yàn),致使單套產(chǎn)品的反復(fù)調(diào)整次數(shù)較多。如何有效的預(yù)測(cè)墊片的調(diào)整量,減少裝配調(diào)整次數(shù),提升產(chǎn)品裝配效率成為目前急需解決的問(wèn)題。針對(duì)這個(gè)問(wèn)題,本文采用百度PaddlePaddle 深度學(xué)習(xí)平臺(tái),在其平臺(tái)上快速搭建一個(gè)回歸模型,來(lái)實(shí)現(xiàn)對(duì)墊片調(diào)整量的預(yù)測(cè)。實(shí)驗(yàn)結(jié)果表明,用150 組數(shù)據(jù)訓(xùn)練產(chǎn)生的模型預(yù)測(cè)墊片調(diào)整量,可使單套產(chǎn)品單側(cè)的平均調(diào)整次數(shù)由原來(lái)的4 次降低為1.3 次,極大提高了裝配效率。
根據(jù)產(chǎn)品結(jié)構(gòu)得到簡(jiǎn)化示意圖,見(jiàn)圖1,該產(chǎn)品支架與底座通過(guò)主軸相連,支架兩端裝有限位機(jī)構(gòu),在限位機(jī)構(gòu)與支架之間安裝有調(diào)整墊片,通過(guò)增減墊片,控制支架繞主軸的旋轉(zhuǎn)角度范圍,調(diào)整墊片的目標(biāo)是使支架旋轉(zhuǎn)到預(yù)定角度后會(huì)觸發(fā)限位機(jī)構(gòu)轉(zhuǎn)接。原有的調(diào)整方法為:在限位機(jī)構(gòu)與支架之間先墊上若干數(shù)量的墊片,這個(gè)數(shù)量一般都是由操作人員憑感覺(jué)而定,然后給產(chǎn)品通電,測(cè)試支架運(yùn)動(dòng)的角度范圍,根據(jù)測(cè)試結(jié)果,視情增減墊片后,再進(jìn)行角度范圍測(cè)試,按照此方法,反復(fù)調(diào)整墊片數(shù)量,直至產(chǎn)品角度運(yùn)動(dòng)范圍滿(mǎn)足圖紙技術(shù)條件要求。由于該產(chǎn)品支架的角度公差很小,僅有±0.15°,需反復(fù)調(diào)整次數(shù)較多,裝配效率很低。僅對(duì)該簡(jiǎn)化示意圖進(jìn)行初步分析,就可以得到,與墊片的調(diào)整量有關(guān)的因素有:支架的各段的公差因素,限位機(jī)構(gòu)的轉(zhuǎn)接行程因素,主軸在底座上的位置偏差因素等。按照一般的分析思路,通過(guò)測(cè)試出所有零件的尺寸,通過(guò)尺寸鏈計(jì)算,可以得到墊片調(diào)整量的具體數(shù)值。但實(shí)際上,很多零件加工完成后是通過(guò)檢驗(yàn)工裝進(jìn)行檢驗(yàn),只能知道零件是符合尺寸要求的,不知道零件的具體數(shù)值,所以就無(wú)法通過(guò)實(shí)際尺寸計(jì)算的方法計(jì)算出墊片的調(diào)整量。而且實(shí)際產(chǎn)品復(fù)雜程度更高,很難對(duì)影響因素進(jìn)行全面分析。
圖1 產(chǎn)品簡(jiǎn)化示意圖
通過(guò)分析,該調(diào)整過(guò)程實(shí)際可以測(cè)量的數(shù)據(jù)見(jiàn)表1。在產(chǎn)品調(diào)整完成后,可以記錄上述數(shù)據(jù)。但在調(diào)整前,“初始角度”的數(shù)值可以通過(guò)空載通電測(cè)量得到的;“目標(biāo)角度”是產(chǎn)品技術(shù)要求中的需要達(dá)到的角度,也是可以在調(diào)整前得到的;“墊片值”是調(diào)整過(guò)程中需要加墊片的數(shù)量,這個(gè)值在調(diào)整前是一個(gè)未知量。綜上所述,如果“初始角度”、“目標(biāo)角度”與“墊片值”之間存在某種關(guān)系的話(huà),就可以通過(guò)該關(guān)系來(lái)預(yù)測(cè)“墊片值”。這時(shí),可以考慮嘗試通過(guò)PaddlePaddle深度學(xué)習(xí)平臺(tái)構(gòu)建模型,探索其中的關(guān)系。
表1 可測(cè)量數(shù)據(jù)表
PaddlePaddle 又稱(chēng)飛槳,是百度出品的深度學(xué)習(xí)平臺(tái),該平臺(tái)集合了學(xué)習(xí)核心訓(xùn)練和推理框架、基礎(chǔ)模型庫(kù)、端到端開(kāi)發(fā)套件與豐富的工具組件,是中國(guó)首個(gè)自主研發(fā)、功能豐富、開(kāi)源開(kāi)放的產(chǎn)業(yè)級(jí)深度學(xué)習(xí)平臺(tái)。從2016 年至今,經(jīng)歷了多次版本更新,現(xiàn)在已經(jīng)來(lái)到了飛槳2.x 時(shí)代[1]。通過(guò)PaddlePaddle 深度學(xué)習(xí)平臺(tái)構(gòu)建模型一般需要5 個(gè)步驟,分別是數(shù)據(jù)處理、模型設(shè)計(jì)、訓(xùn)練配置、模型訓(xùn)練、模型保存。
由于本文需采集的數(shù)據(jù)量較小,所以采用人工記錄的方法進(jìn)行數(shù)據(jù)采集,根據(jù)項(xiàng)目數(shù)據(jù)需求,制作調(diào)整數(shù)據(jù)記錄表,由工人在調(diào)整時(shí)進(jìn)行記錄,每調(diào)整完成一套產(chǎn)品后,記錄調(diào)整前后“初始角度”、“目標(biāo)角度”與“墊片值”的具體數(shù)值。人工記錄數(shù)據(jù)后,用“記事本”軟件建立一個(gè).data 文件,第一列為“初始角度”,第二列為“目標(biāo)角度”,第三列為“墊片值”,列與列之間用“空格”隔開(kāi)。為了方便后續(xù)計(jì)算,減少小數(shù)點(diǎn)的存在,這里將角度數(shù)值記為4 位整數(shù),例如角度“12.50°”記為“1 250”;同樣,將“墊片值”也記為4 位整數(shù),例如墊片值為3.3 mm,記為3 300。數(shù)據(jù)記錄見(jiàn)圖2。
圖2 數(shù)據(jù)記錄示意圖
數(shù)據(jù)準(zhǔn)備完成后,在Pycharm 中建立一個(gè).py 文件,并定義一個(gè)數(shù)據(jù)載入函數(shù)load_data()。該函數(shù)會(huì)讀取.data 中的數(shù)據(jù),并經(jīng)過(guò)數(shù)據(jù)形狀變換,最終得到一個(gè)2 維矩陣,矩陣每行是一個(gè)包含3 個(gè)值的數(shù)據(jù)樣本,每個(gè)數(shù)據(jù)樣本包含2 個(gè)X(初始角度x1 與目標(biāo)角度x2),和一個(gè)Y(墊片值y),這就建立了一個(gè)小型數(shù)據(jù)集。由于后續(xù)要使用數(shù)據(jù)進(jìn)行模型訓(xùn)練與測(cè)試,所以將數(shù)據(jù)集劃分為訓(xùn)練集與測(cè)試集,其中訓(xùn)練集用于模型訓(xùn)練,以確定模型中的參數(shù),測(cè)試集用于評(píng)判模型的效果,本文將原始數(shù)據(jù)隨機(jī)打亂后,使用前80%的數(shù)據(jù)作為訓(xùn)練集,后20%的數(shù)據(jù)作為測(cè)試集。劃分好數(shù)據(jù)集后,要對(duì)數(shù)據(jù)進(jìn)行歸一化處理,使得數(shù)據(jù)樣本中的每一個(gè)值縮放到0~1 之間,這樣可以使得后續(xù)的模型訓(xùn)練更加高效,可以改善由初始化不良引起的訓(xùn)練困難等問(wèn)題[2]。
一般只需要調(diào)用PaddlePaddle 深度學(xué)習(xí)平臺(tái)中的庫(kù)文件與函數(shù),即可完成模型構(gòu)建工作。本文用到的庫(kù)文件與函數(shù)見(jiàn)表2。
表2 本文使用的庫(kù)文件與函數(shù)
本文構(gòu)建一個(gè)全連接神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)輸入的維度為2,輸出的維度為1。該網(wǎng)絡(luò)僅由一個(gè)全連接層、一個(gè)輸出層組成,并通過(guò)飛槳構(gòu)建一個(gè)前向計(jì)算網(wǎng)絡(luò),通過(guò)飛槳VisualDL 查看網(wǎng)絡(luò)結(jié)構(gòu),見(jiàn)圖3。
圖3 模型網(wǎng)絡(luò)示意圖
這里使用的是飛槳2.x 平臺(tái),構(gòu)建網(wǎng)絡(luò)的方法非常簡(jiǎn)單。具體代碼如下:
如上述代碼所示,本文完成模型設(shè)計(jì)僅需要3 步,第一步需要?jiǎng)?chuàng)建一個(gè)Python 類(lèi),這里為Regreessor(),該類(lèi)需要繼承paddle.nn.Layer 父類(lèi);第二步需要在新建的類(lèi)中定義__init__函數(shù),并在初始化函數(shù)定義一層全連層,僅使用一行代碼即可完成,其中“in_features=2,out_features=1”表示輸入特征為2 個(gè),輸出為1 個(gè);第三步需要定義forward 函數(shù),完成神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)構(gòu)件,實(shí)現(xiàn)前向計(jì)算過(guò)程,并返回預(yù)測(cè)的結(jié)果。
模型設(shè)計(jì)完成后,一般要進(jìn)行訓(xùn)練配置工作,訓(xùn)練配置工作一般有四步組成,分別是指定運(yùn)行訓(xùn)練的機(jī)器資料、聲明模型實(shí)例、加載訓(xùn)練和測(cè)試數(shù)據(jù)、設(shè)置優(yōu)化算法和學(xué)習(xí)率。使用飛槳2.x 框架完成這四步較為簡(jiǎn)單,這里特別需要注意的是優(yōu)化算法的選擇與學(xué)習(xí)率的設(shè)置,本文使用的是SGD(隨機(jī)梯度下降法)[3],需要設(shè)置學(xué)習(xí)率,根據(jù)經(jīng)驗(yàn),學(xué)習(xí)速率暫時(shí)設(shè)為0.001[4],后續(xù)可根據(jù)訓(xùn)練情況進(jìn)行調(diào)整。有時(shí)候模型學(xué)習(xí)速率的調(diào)整非常耗時(shí),找到最佳的學(xué)習(xí)率并不輕松,工程上為了獲得成功的模型,只要找到足夠大的學(xué)習(xí)率使得模型有效收斂就行。完成模型的配置工作后,即可開(kāi)始訓(xùn)練,本文采用內(nèi)、外兩層循環(huán)套嵌的方式進(jìn)行訓(xùn)練,外層定義了遍歷數(shù)據(jù)集的次數(shù),內(nèi)層用于設(shè)置遍歷一次數(shù)據(jù)集的方法。一般來(lái)說(shuō),如果數(shù)據(jù)集較大,可以采用分批的方式進(jìn)行學(xué)習(xí),經(jīng)過(guò)數(shù)據(jù)準(zhǔn)備、前向計(jì)算、計(jì)算損失函數(shù)、反向傳播后,模型內(nèi)的參數(shù)得到不斷的更新,隨著訓(xùn)練測(cè)試的提升,損失會(huì)逐漸降低。若出現(xiàn)損失函數(shù)不變或上升的問(wèn)題,可能通過(guò)調(diào)整學(xué)習(xí)批次、調(diào)整學(xué)習(xí)速率、調(diào)整模型結(jié)構(gòu)或清洗數(shù)據(jù)集等方法進(jìn)行改善。主要代碼如下:
學(xué)習(xí)完成后,得到了相對(duì)滿(mǎn)意的模型,即可進(jìn)行保存,飛槳2.x 可將模型保存為動(dòng)態(tài)圖或靜態(tài)圖模式,本文使用“paddle.jit.save(layer=model, path=path)”函數(shù)直接進(jìn)行模型保存。
模型測(cè)試需要用到測(cè)試集數(shù)據(jù),基本方法就是將測(cè)試集數(shù)據(jù)依次輸入模型,并計(jì)算結(jié)果,經(jīng)過(guò)分析,評(píng)估模型的準(zhǔn)確程度。這里需要注意的是測(cè)試集數(shù)據(jù)的輸入也要經(jīng)過(guò)歸一化,經(jīng)過(guò)模型計(jì)算后的結(jié)果,還要進(jìn)行反歸一化運(yùn)算才能使用。整個(gè)模型測(cè)試的過(guò)程中,模型預(yù)測(cè)成功與否的評(píng)價(jià)標(biāo)準(zhǔn)在這里顯得比較重要,在裝配領(lǐng)域,一般都有對(duì)應(yīng)的公差要求,可以將公差要求作為對(duì)應(yīng)的評(píng)判標(biāo)準(zhǔn)。本文的應(yīng)用由于裝配公差的要求為±0.15°,根據(jù)統(tǒng)計(jì)計(jì)算,只要預(yù)測(cè)的墊片厚度誤差在±0.3 mm 之內(nèi),一般可滿(mǎn)足工程要求。最終模型經(jīng)過(guò)測(cè)試,預(yù)測(cè)誤差大部分為±0.1 mm,未發(fā)現(xiàn)預(yù)測(cè)誤差超過(guò)±0.3 mm 的情況,可以滿(mǎn)足工程要求。
由于模型訓(xùn)練與測(cè)試都采用Python 語(yǔ)言,在模型部署階段,可以考慮使用Pycharm+QT5 進(jìn)行人機(jī)界面設(shè)計(jì)開(kāi)發(fā)。飛槳2.x 的部署有服務(wù)器部署、移動(dòng)端/嵌入式部署等方式[5],可參考百度飛槳官網(wǎng)的教程進(jìn)行相應(yīng)的開(kāi)發(fā)。最終墊片預(yù)測(cè)軟件的運(yùn)行效果見(jiàn)圖4,打開(kāi)軟件后,按照選擇產(chǎn)品相應(yīng)的調(diào)整位置、輸入產(chǎn)品調(diào)整前的運(yùn)行的數(shù)據(jù)后,點(diǎn)擊“預(yù)測(cè)”按鈕即可進(jìn)行預(yù)測(cè),現(xiàn)場(chǎng)操作人員根據(jù)預(yù)測(cè)結(jié)果對(duì)產(chǎn)品進(jìn)行調(diào)整,再次進(jìn)行測(cè)試觀察產(chǎn)品調(diào)整后是否滿(mǎn)足要求。若最終的墊片調(diào)整值與預(yù)測(cè)值不同,可以在軟件中輸入實(shí)際的墊片調(diào)整值并記錄,軟件會(huì)將該值加入數(shù)據(jù)集,方便后續(xù)對(duì)模型進(jìn)行重新訓(xùn)練。
圖4 軟件運(yùn)行效果示意圖
經(jīng)過(guò)工程實(shí)踐,PaddlePaddle 深度學(xué)習(xí)平臺(tái)生成的模型已經(jīng)可以有效的指導(dǎo)現(xiàn)場(chǎng)操作人員進(jìn)行作業(yè),將單套產(chǎn)品單側(cè)的平均調(diào)整次數(shù)由原來(lái)的4 次降低到1.3 次,極大的提高了裝配調(diào)整效率。
本文提出了一種利用百度PaddlePaddle 深度學(xué)習(xí)平臺(tái)解決產(chǎn)品裝配調(diào)整問(wèn)題的方法,該方法具有開(kāi)發(fā)過(guò)程簡(jiǎn)單、開(kāi)發(fā)周期較短、預(yù)測(cè)精度較高、部署簡(jiǎn)單方便等特點(diǎn),該方法可以通過(guò)數(shù)據(jù)積累不斷提高預(yù)測(cè)精度,提高裝配調(diào)整效率,而且該深度學(xué)習(xí)平臺(tái)為開(kāi)源平臺(tái),大大提高了軟件開(kāi)發(fā)的便捷性與經(jīng)濟(jì)性,能為企業(yè)帶來(lái)巨大的經(jīng)濟(jì)效益。