祁海東
(鄭州飛機(jī)裝備有限責(zé)任公司維修中心,河南鄭州 450000)
在飛機(jī)上,有許多結(jié)構(gòu)復(fù)雜的航空附件產(chǎn)品,特別是其中很多機(jī)械類產(chǎn)品,由于尺寸精度要求較高,在產(chǎn)品裝配時大多需要視情調(diào)整產(chǎn)品中的某些裝配尺寸,增減墊片就是較為常用的調(diào)整方式之一。當(dāng)前調(diào)整的墊片的主要方法是試裝,通過“粗調(diào)- 精調(diào)”的反復(fù)裝卸的試裝環(huán)節(jié),最終將產(chǎn)品尺寸調(diào)整到滿足圖紙技術(shù)要求為止。原調(diào)整方法對新員工極為不友好,由于新員工缺乏調(diào)整經(jīng)驗(yàn),致使單套產(chǎn)品的反復(fù)調(diào)整次數(shù)較多。如何有效的預(yù)測墊片的調(diào)整量,減少裝配調(diào)整次數(shù),提升產(chǎn)品裝配效率成為目前急需解決的問題。針對這個問題,本文采用百度PaddlePaddle 深度學(xué)習(xí)平臺,在其平臺上快速搭建一個回歸模型,來實(shí)現(xiàn)對墊片調(diào)整量的預(yù)測。實(shí)驗(yàn)結(jié)果表明,用150 組數(shù)據(jù)訓(xùn)練產(chǎn)生的模型預(yù)測墊片調(diào)整量,可使單套產(chǎn)品單側(cè)的平均調(diào)整次數(shù)由原來的4 次降低為1.3 次,極大提高了裝配效率。
根據(jù)產(chǎn)品結(jié)構(gòu)得到簡化示意圖,見圖1,該產(chǎn)品支架與底座通過主軸相連,支架兩端裝有限位機(jī)構(gòu),在限位機(jī)構(gòu)與支架之間安裝有調(diào)整墊片,通過增減墊片,控制支架繞主軸的旋轉(zhuǎn)角度范圍,調(diào)整墊片的目標(biāo)是使支架旋轉(zhuǎn)到預(yù)定角度后會觸發(fā)限位機(jī)構(gòu)轉(zhuǎn)接。原有的調(diào)整方法為:在限位機(jī)構(gòu)與支架之間先墊上若干數(shù)量的墊片,這個數(shù)量一般都是由操作人員憑感覺而定,然后給產(chǎn)品通電,測試支架運(yùn)動的角度范圍,根據(jù)測試結(jié)果,視情增減墊片后,再進(jìn)行角度范圍測試,按照此方法,反復(fù)調(diào)整墊片數(shù)量,直至產(chǎn)品角度運(yùn)動范圍滿足圖紙技術(shù)條件要求。由于該產(chǎn)品支架的角度公差很小,僅有±0.15°,需反復(fù)調(diào)整次數(shù)較多,裝配效率很低。僅對該簡化示意圖進(jìn)行初步分析,就可以得到,與墊片的調(diào)整量有關(guān)的因素有:支架的各段的公差因素,限位機(jī)構(gòu)的轉(zhuǎn)接行程因素,主軸在底座上的位置偏差因素等。按照一般的分析思路,通過測試出所有零件的尺寸,通過尺寸鏈計算,可以得到墊片調(diào)整量的具體數(shù)值。但實(shí)際上,很多零件加工完成后是通過檢驗(yàn)工裝進(jìn)行檢驗(yàn),只能知道零件是符合尺寸要求的,不知道零件的具體數(shù)值,所以就無法通過實(shí)際尺寸計算的方法計算出墊片的調(diào)整量。而且實(shí)際產(chǎn)品復(fù)雜程度更高,很難對影響因素進(jìn)行全面分析。

圖1 產(chǎn)品簡化示意圖
通過分析,該調(diào)整過程實(shí)際可以測量的數(shù)據(jù)見表1。在產(chǎn)品調(diào)整完成后,可以記錄上述數(shù)據(jù)。但在調(diào)整前,“初始角度”的數(shù)值可以通過空載通電測量得到的;“目標(biāo)角度”是產(chǎn)品技術(shù)要求中的需要達(dá)到的角度,也是可以在調(diào)整前得到的;“墊片值”是調(diào)整過程中需要加墊片的數(shù)量,這個值在調(diào)整前是一個未知量。綜上所述,如果“初始角度”、“目標(biāo)角度”與“墊片值”之間存在某種關(guān)系的話,就可以通過該關(guān)系來預(yù)測“墊片值”。這時,可以考慮嘗試通過PaddlePaddle深度學(xué)習(xí)平臺構(gòu)建模型,探索其中的關(guān)系。

表1 可測量數(shù)據(jù)表
PaddlePaddle 又稱飛槳,是百度出品的深度學(xué)習(xí)平臺,該平臺集合了學(xué)習(xí)核心訓(xùn)練和推理框架、基礎(chǔ)模型庫、端到端開發(fā)套件與豐富的工具組件,是中國首個自主研發(fā)、功能豐富、開源開放的產(chǎn)業(yè)級深度學(xué)習(xí)平臺。從2016 年至今,經(jīng)歷了多次版本更新,現(xiàn)在已經(jīng)來到了飛槳2.x 時代[1]。通過PaddlePaddle 深度學(xué)習(xí)平臺構(gòu)建模型一般需要5 個步驟,分別是數(shù)據(jù)處理、模型設(shè)計、訓(xùn)練配置、模型訓(xùn)練、模型保存。
由于本文需采集的數(shù)據(jù)量較小,所以采用人工記錄的方法進(jìn)行數(shù)據(jù)采集,根據(jù)項(xiàng)目數(shù)據(jù)需求,制作調(diào)整數(shù)據(jù)記錄表,由工人在調(diào)整時進(jìn)行記錄,每調(diào)整完成一套產(chǎn)品后,記錄調(diào)整前后“初始角度”、“目標(biāo)角度”與“墊片值”的具體數(shù)值。人工記錄數(shù)據(jù)后,用“記事本”軟件建立一個.data 文件,第一列為“初始角度”,第二列為“目標(biāo)角度”,第三列為“墊片值”,列與列之間用“空格”隔開。為了方便后續(xù)計算,減少小數(shù)點(diǎn)的存在,這里將角度數(shù)值記為4 位整數(shù),例如角度“12.50°”記為“1 250”;同樣,將“墊片值”也記為4 位整數(shù),例如墊片值為3.3 mm,記為3 300。數(shù)據(jù)記錄見圖2。

圖2 數(shù)據(jù)記錄示意圖
數(shù)據(jù)準(zhǔn)備完成后,在Pycharm 中建立一個.py 文件,并定義一個數(shù)據(jù)載入函數(shù)load_data()。該函數(shù)會讀取.data 中的數(shù)據(jù),并經(jīng)過數(shù)據(jù)形狀變換,最終得到一個2 維矩陣,矩陣每行是一個包含3 個值的數(shù)據(jù)樣本,每個數(shù)據(jù)樣本包含2 個X(初始角度x1 與目標(biāo)角度x2),和一個Y(墊片值y),這就建立了一個小型數(shù)據(jù)集。由于后續(xù)要使用數(shù)據(jù)進(jìn)行模型訓(xùn)練與測試,所以將數(shù)據(jù)集劃分為訓(xùn)練集與測試集,其中訓(xùn)練集用于模型訓(xùn)練,以確定模型中的參數(shù),測試集用于評判模型的效果,本文將原始數(shù)據(jù)隨機(jī)打亂后,使用前80%的數(shù)據(jù)作為訓(xùn)練集,后20%的數(shù)據(jù)作為測試集。劃分好數(shù)據(jù)集后,要對數(shù)據(jù)進(jìn)行歸一化處理,使得數(shù)據(jù)樣本中的每一個值縮放到0~1 之間,這樣可以使得后續(xù)的模型訓(xùn)練更加高效,可以改善由初始化不良引起的訓(xùn)練困難等問題[2]。
一般只需要調(diào)用PaddlePaddle 深度學(xué)習(xí)平臺中的庫文件與函數(shù),即可完成模型構(gòu)建工作。本文用到的庫文件與函數(shù)見表2。

表2 本文使用的庫文件與函數(shù)
本文構(gòu)建一個全連接神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)輸入的維度為2,輸出的維度為1。該網(wǎng)絡(luò)僅由一個全連接層、一個輸出層組成,并通過飛槳構(gòu)建一個前向計算網(wǎng)絡(luò),通過飛槳VisualDL 查看網(wǎng)絡(luò)結(jié)構(gòu),見圖3。

圖3 模型網(wǎng)絡(luò)示意圖
這里使用的是飛槳2.x 平臺,構(gòu)建網(wǎng)絡(luò)的方法非常簡單。具體代碼如下:


如上述代碼所示,本文完成模型設(shè)計僅需要3 步,第一步需要創(chuàng)建一個Python 類,這里為Regreessor(),該類需要繼承paddle.nn.Layer 父類;第二步需要在新建的類中定義__init__函數(shù),并在初始化函數(shù)定義一層全連層,僅使用一行代碼即可完成,其中“in_features=2,out_features=1”表示輸入特征為2 個,輸出為1 個;第三步需要定義forward 函數(shù),完成神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)構(gòu)件,實(shí)現(xiàn)前向計算過程,并返回預(yù)測的結(jié)果。
模型設(shè)計完成后,一般要進(jìn)行訓(xùn)練配置工作,訓(xùn)練配置工作一般有四步組成,分別是指定運(yùn)行訓(xùn)練的機(jī)器資料、聲明模型實(shí)例、加載訓(xùn)練和測試數(shù)據(jù)、設(shè)置優(yōu)化算法和學(xué)習(xí)率。使用飛槳2.x 框架完成這四步較為簡單,這里特別需要注意的是優(yōu)化算法的選擇與學(xué)習(xí)率的設(shè)置,本文使用的是SGD(隨機(jī)梯度下降法)[3],需要設(shè)置學(xué)習(xí)率,根據(jù)經(jīng)驗(yàn),學(xué)習(xí)速率暫時設(shè)為0.001[4],后續(xù)可根據(jù)訓(xùn)練情況進(jìn)行調(diào)整。有時候模型學(xué)習(xí)速率的調(diào)整非常耗時,找到最佳的學(xué)習(xí)率并不輕松,工程上為了獲得成功的模型,只要找到足夠大的學(xué)習(xí)率使得模型有效收斂就行。完成模型的配置工作后,即可開始訓(xùn)練,本文采用內(nèi)、外兩層循環(huán)套嵌的方式進(jìn)行訓(xùn)練,外層定義了遍歷數(shù)據(jù)集的次數(shù),內(nèi)層用于設(shè)置遍歷一次數(shù)據(jù)集的方法。一般來說,如果數(shù)據(jù)集較大,可以采用分批的方式進(jìn)行學(xué)習(xí),經(jīng)過數(shù)據(jù)準(zhǔn)備、前向計算、計算損失函數(shù)、反向傳播后,模型內(nèi)的參數(shù)得到不斷的更新,隨著訓(xùn)練測試的提升,損失會逐漸降低。若出現(xiàn)損失函數(shù)不變或上升的問題,可能通過調(diào)整學(xué)習(xí)批次、調(diào)整學(xué)習(xí)速率、調(diào)整模型結(jié)構(gòu)或清洗數(shù)據(jù)集等方法進(jìn)行改善。主要代碼如下:


學(xué)習(xí)完成后,得到了相對滿意的模型,即可進(jìn)行保存,飛槳2.x 可將模型保存為動態(tài)圖或靜態(tài)圖模式,本文使用“paddle.jit.save(layer=model, path=path)”函數(shù)直接進(jìn)行模型保存。
模型測試需要用到測試集數(shù)據(jù),基本方法就是將測試集數(shù)據(jù)依次輸入模型,并計算結(jié)果,經(jīng)過分析,評估模型的準(zhǔn)確程度。這里需要注意的是測試集數(shù)據(jù)的輸入也要經(jīng)過歸一化,經(jīng)過模型計算后的結(jié)果,還要進(jìn)行反歸一化運(yùn)算才能使用。整個模型測試的過程中,模型預(yù)測成功與否的評價標(biāo)準(zhǔn)在這里顯得比較重要,在裝配領(lǐng)域,一般都有對應(yīng)的公差要求,可以將公差要求作為對應(yīng)的評判標(biāo)準(zhǔn)。本文的應(yīng)用由于裝配公差的要求為±0.15°,根據(jù)統(tǒng)計計算,只要預(yù)測的墊片厚度誤差在±0.3 mm 之內(nèi),一般可滿足工程要求。最終模型經(jīng)過測試,預(yù)測誤差大部分為±0.1 mm,未發(fā)現(xiàn)預(yù)測誤差超過±0.3 mm 的情況,可以滿足工程要求。
由于模型訓(xùn)練與測試都采用Python 語言,在模型部署階段,可以考慮使用Pycharm+QT5 進(jìn)行人機(jī)界面設(shè)計開發(fā)。飛槳2.x 的部署有服務(wù)器部署、移動端/嵌入式部署等方式[5],可參考百度飛槳官網(wǎng)的教程進(jìn)行相應(yīng)的開發(fā)。最終墊片預(yù)測軟件的運(yùn)行效果見圖4,打開軟件后,按照選擇產(chǎn)品相應(yīng)的調(diào)整位置、輸入產(chǎn)品調(diào)整前的運(yùn)行的數(shù)據(jù)后,點(diǎn)擊“預(yù)測”按鈕即可進(jìn)行預(yù)測,現(xiàn)場操作人員根據(jù)預(yù)測結(jié)果對產(chǎn)品進(jìn)行調(diào)整,再次進(jìn)行測試觀察產(chǎn)品調(diào)整后是否滿足要求。若最終的墊片調(diào)整值與預(yù)測值不同,可以在軟件中輸入實(shí)際的墊片調(diào)整值并記錄,軟件會將該值加入數(shù)據(jù)集,方便后續(xù)對模型進(jìn)行重新訓(xùn)練。

圖4 軟件運(yùn)行效果示意圖
經(jīng)過工程實(shí)踐,PaddlePaddle 深度學(xué)習(xí)平臺生成的模型已經(jīng)可以有效的指導(dǎo)現(xiàn)場操作人員進(jìn)行作業(yè),將單套產(chǎn)品單側(cè)的平均調(diào)整次數(shù)由原來的4 次降低到1.3 次,極大的提高了裝配調(diào)整效率。
本文提出了一種利用百度PaddlePaddle 深度學(xué)習(xí)平臺解決產(chǎn)品裝配調(diào)整問題的方法,該方法具有開發(fā)過程簡單、開發(fā)周期較短、預(yù)測精度較高、部署簡單方便等特點(diǎn),該方法可以通過數(shù)據(jù)積累不斷提高預(yù)測精度,提高裝配調(diào)整效率,而且該深度學(xué)習(xí)平臺為開源平臺,大大提高了軟件開發(fā)的便捷性與經(jīng)濟(jì)性,能為企業(yè)帶來巨大的經(jīng)濟(jì)效益。