一、逆向工程簡介
逆向工程,,有的人也叫反求工程,,英文是reverse engineering。大意是根據(jù)已有的東西和結(jié)果,,通過分析來推導(dǎo)出具體的實現(xiàn)方法,。比如你看到別人寫的某個exe程序能夠做出某種漂亮的動畫效果,你通過反匯編,、反編譯和動態(tài)跟蹤等方法,,分析出其動畫效果的實現(xiàn)過程,,這種行為就是逆向工程;不僅僅是反編譯,,而且還要推倒出設(shè)計,,并且文檔化,逆向軟件工程的目的是使軟件得以維護(hù),。
目前,,大多數(shù)有關(guān)逆向工程技術(shù)的研究和應(yīng)用都集中在幾何形狀,即重構(gòu)產(chǎn)品CAD模型和最終產(chǎn)品制造方面,,稱為實物逆向工程,。基于此,,可以把逆向工程定義為:逆向工程是和將實物轉(zhuǎn)變?yōu)镃AD模型相關(guān)的數(shù)字化技術(shù),、幾何模型重建技術(shù)以及產(chǎn)品制造技術(shù)的總稱。
逆向工程的硬件最早是運(yùn)用仿制加工設(shè)備,,制作出來的成品品質(zhì)粗糙,。后來有接觸式掃瞄設(shè)備,運(yùn)用探針接觸工件取得產(chǎn)品外型,。再來進(jìn)一步開發(fā)非接觸式設(shè)備,運(yùn)用照相或激光技術(shù),,計算光線反射回來的時間取得距離,。
逆向工程軟件部分品牌包括Surfacer(Imageware)、ICEM,、CopyCAD,、Rapid Form等。逆向軟件的演進(jìn)約略可區(qū)分為三個階段,。十一年前在逆向工程上,,只能運(yùn)用CATIA等CAD/CAM高階曲面系統(tǒng)。市場后來發(fā)展出兩套主流產(chǎn)品約在七,、八年前技術(shù)成熟,,廣為業(yè)界引用。到最近四年來,,發(fā)展出不同以往的逆向工程數(shù)學(xué)邏輯運(yùn)算,,速度快。
軟件的逆向工程是分析程序,,力圖在比源代碼更高抽象層次上建立程序的表示過程,,逆向工程是設(shè)計的恢復(fù)過程。逆向工程工具可以從已存在的程序中抽取數(shù)據(jù)結(jié)構(gòu),、體系結(jié)構(gòu)和程序設(shè)計信息,。
就目前的逆向工程而言,,可以分為兩個階段,第一個階段是產(chǎn)品的仿制過程,,第二個是對產(chǎn)品的消化,、吸收和創(chuàng)新。
二,、逆向工程關(guān)鍵技術(shù)研究
在逆向工程中,,有以下幾個比較關(guān)鍵的技術(shù),也是在進(jìn)行逆向研究時所必須有的幾個步驟,。即實物原型的數(shù)字化技術(shù),、數(shù)據(jù)點云的預(yù)處理技術(shù)、三維重構(gòu)的基本方法,、曲線曲面光順技術(shù)以及逆向工程的誤差分析與品質(zhì)分析,。
1、實物原型數(shù)字化技術(shù)
實物樣件的數(shù)字化是通過特定的測量設(shè)備和測量方法,,獲取零件表面離散點的幾何坐標(biāo)數(shù)據(jù)的過程,。隨著傳感技術(shù)、控制技術(shù),、制造技術(shù)等相關(guān)技術(shù)的發(fā)展,,出現(xiàn)了各種各樣的數(shù)字化技術(shù),如接觸式數(shù)據(jù)采集方法,、非接觸式數(shù)據(jù)采集方法及層析法等,。接觸式數(shù)據(jù)采集法中又可分為觸發(fā)式、連續(xù)式,、磁場法等不同方法,。非接觸式方法有光學(xué)法、聲波法,、電磁法等等,。而這其中,光學(xué)測量應(yīng)用得最為廣泛,。單就光學(xué)法而言,,這里可列舉幾個常用的方法:
激光三角測距法
激光三角測距法是利用光源和光敏設(shè)備之間的位置和角度關(guān)系來推斷表面點的具體位置。三角測距法可高速地采集數(shù)據(jù),,其精度由光敏設(shè)備的分辨率和表面與掃描儀問的距離共同決定,。
距離法
距離法是利用光束的飛行時問來測量被測點與參考平面的距離,主要有脈沖波,、調(diào)幅連續(xù)波,、調(diào)頻連續(xù)波等工作方式。由于激光的單向性好,多采用激光為能量源,,這種方法的精度也較高,。
干涉測量法
干涉測量法通過分析指定投影光的波長,與形成的干涉曲線間的特定關(guān)系來確定距離,。
結(jié)構(gòu)光法
結(jié)構(gòu)光法是將一定模式的光照射到被測樣件的表面,,然后攝得反射光的圖像,通過對比不同模式之間的差別來獲取樣件表面點的位置,。典型的是“Shad—OWMoire”干涉條紋法,。它的特點是不需要坐標(biāo)測量機(jī)等精密設(shè)備,造價比較低,,但精度較低,,操作復(fù)雜。
圖像分析法
圖像分析法與結(jié)構(gòu)光法中圖像確定坐標(biāo)數(shù)據(jù)的做法有些類似,。但這種方法分析的不是投影結(jié)構(gòu),,而是一般的立體照片,它能提供足夠的信息來確定樣件的高度和坐標(biāo),。
2,、數(shù)據(jù)點云的預(yù)處理技術(shù)
通過上述方法測得的原始數(shù)據(jù)一般不能直接用于曲面重構(gòu),因為對于接觸式測量,,受測頭半徑的影響,,必須對數(shù)據(jù)點云進(jìn)行半徑補(bǔ)償;另外,,在測量的過程中,,不可避免會帶進(jìn)噪聲、誤差等,,必須去除這些點;對于海量點云數(shù)據(jù),,對其進(jìn)行精簡也是必要的,。
3、三維重構(gòu)方法
復(fù)雜曲面的CAD重構(gòu)是逆向丁程研究的重點,。而對于復(fù)雜曲面產(chǎn)品來說,,其實體模型可由曲面模型經(jīng)過一定的計算演變而來,因此曲面重構(gòu)是復(fù)雜產(chǎn)品逆向工程的關(guān)鍵,。
三邊Bezier曲面法
與前幾種方法不同,,該方法是嚴(yán)格定義在三角形域上的。三邊曲面片可適應(yīng)不規(guī)則與散亂數(shù)據(jù)點的幾何造型,。它具有構(gòu)造靈活,、適應(yīng)性好等特點,在散亂數(shù)據(jù)點曲面擬合中能有效應(yīng)用。
BP神經(jīng)網(wǎng)絡(luò)法
該方法是利用BP(BackPropagation)算法的訓(xùn)練和學(xué)習(xí)建立一個神經(jīng)網(wǎng)絡(luò)模型來解決曲面反求問題,。BP算法是神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)中一種被廣泛采用的學(xué)習(xí)算法,,具有簡單、有效和易于實現(xiàn)等優(yōu)點,,并且算法的收斂速度較快,。但由于算法本身的特點,對算法參數(shù)的選擇有很大的盲目性和難度,,可能會導(dǎo)致擬合結(jié)果達(dá)不到最優(yōu),。
除了上面提到的兩種方法外,還有多項式插值法,、雙三次Bspline法,、NURBS法、Coons法等,,這些方法各有各的特點,,在實際設(shè)計過程當(dāng)中,可以根據(jù)需要靈活運(yùn)用,。
4,、曲線曲面光順技術(shù)
在基于實物數(shù)字化的逆向工程中,由于缺乏必要的特征信息,,以及存在數(shù)字化誤差,,光順操作在產(chǎn)品外形設(shè)計中尤為重要。根據(jù)每次調(diào)整的型值點的數(shù)值不同,,曲線/曲面的光順方法和手段主要分為整體修改和局部修改,。光順效果取決于所使用方法的原理準(zhǔn)則。常用的光須方法有最小二乘法,、能量法,、回彈法以及基于小波的光順技術(shù)。
5,、逆向工程的誤差分析與品質(zhì)分析
誤差分析
在談逆向工程的誤差分析前,,我們先來了解逆向工程中所特有的三個參數(shù)概念::重構(gòu)參數(shù)、實物原型參數(shù)和原始設(shè)計參數(shù),。
重構(gòu)參數(shù)是逆向工程得到的參數(shù),,是可知的;而逆向工程并不直接測量實物原型參數(shù),,故實物原型參數(shù)是未知的,;原始設(shè)計參數(shù)自然也是未知的。目前的逆向工程均用已知的重構(gòu)后的模型參數(shù)作為制造產(chǎn)品的原始參數(shù),,亦即用重構(gòu)參數(shù)去制造產(chǎn)品,。先來比較一下重構(gòu)參數(shù)與原始設(shè)計參數(shù)之間的誤差,設(shè)該誤差為重構(gòu)誤差△構(gòu);在重構(gòu)過程中,,不可避免地會產(chǎn)生誤差,,記其為計算誤差△計;在對零件或原型測量時,,會產(chǎn)生測量誤差△測,;零件或原型本身也帶有誤差,一種是制造原型時會產(chǎn)生制造誤差A(yù)制,;另一種是原型在使用中的磨損和破損誤差△榭,。重構(gòu)誤差由這四種誤差所組成,一般取各項誤差的均方根作為重構(gòu)誤差,,則有: ,。單從仿制原型這一方面出發(fā),反求工程制造的產(chǎn)品,,是被置于原型的t作環(huán)境下,,代替原型工作。原型是用原始設(shè)計參數(shù)制造的,,產(chǎn)品是用重構(gòu)參數(shù)制造的,。由以上分析可知,這兩個參數(shù)之間存在重構(gòu)誤差△構(gòu),。因此,,用重構(gòu)參數(shù)作為原始參數(shù)去制造產(chǎn)品并將其置于原型的環(huán)境下工作,在某些情況下會達(dá)不到要求,,這就是說,,由于重構(gòu)誤差的存在,產(chǎn)品會出現(xiàn)廢品,。為了提高精度,,目前的反求丁程技術(shù)采取了許多措施,如提高測量精度,,提高擬合計算精度,,但這些措施只是使重構(gòu)參數(shù)盡可能接近原型參數(shù),仍無法得到原始設(shè)計參數(shù),。提高逆向精度仍然是一個待完善的課題,。
品質(zhì)分析
品質(zhì)分析主要是分析曲面的光順性,。盡管可以通過曲面的曲率變化來評價光順效果,,但并無具體的曲率值作依據(jù),多數(shù)場合還是以人的眼光來進(jìn)行判斷,,沒有量化的指標(biāo),,因此品質(zhì)分析屬于非量化評價。目前,商品化的CAD/CAM集成系統(tǒng)都具有曲面品質(zhì)分析功能和多種分析方法,,常用的如高斯曲率,、截面曲率、切矢,、雙向曲率和法矢量等,。利用這些分析方法,通過著色渲染來觀察曲面/曲率的變化,、來評估曲面的質(zhì)量,。除上述常用方法外,還有如反射線法,、高光線法,、等照度法和焦點曲面法等,這些作為品質(zhì)評價常用方法的補(bǔ)充,,已經(jīng)在實際中得到了應(yīng)用,。
三、逆向工程的應(yīng)用
汽車工業(yè)是全球制造業(yè)的支柱產(chǎn)業(yè)之一,,隨著巿場需求的改變,,汽車的更新?lián)Q代速度日趨加快,其設(shè)計,、制造速度的快慢直接制約著汽車業(yè)的發(fā)展?,F(xiàn)代化設(shè)計理念的形成將給汽車發(fā)展帶來巨大的變革,由此而提出的逆向工程在汽車制造領(lǐng)域的應(yīng)用將大大的改進(jìn)汽車制造業(yè)的現(xiàn)狀,。下面以汽車車身造型設(shè)計為例,,來具體介紹一下逆向工程的應(yīng)用。
車身結(jié)構(gòu)的特點在于組成車身外形的各個零件多為尺寸大而形狀復(fù)雜的空間曲面,,這些大型覆蓋件不能用一般的機(jī)械制圖方法將它們完整,、清晰地表達(dá)出來,不得不依靠三維立體模型作為設(shè)計的依據(jù),。傳統(tǒng)的車身設(shè)計方法在其每個設(shè)計階段都要反復(fù)進(jìn)行平面圖形和立體模型的制作過程,,以致新產(chǎn)品的開發(fā)設(shè)計周期長、工作量大,。
此次設(shè)計開發(fā)的基于逆向工程的車身流程如圖1所示,。車身逆向工程中的關(guān)鍵技術(shù)在于兩個方面:一方面是實物模型表面數(shù)據(jù)獲取技術(shù)以及處理技術(shù),即數(shù)字化掃描測量技術(shù)和測量數(shù)據(jù)的處理技術(shù),;另一方面是車身零部件的曲面重建技術(shù),。
車身三維數(shù)據(jù)的獲取及處理
在產(chǎn)品的逆向開發(fā)中,樣件的三維數(shù)據(jù)主要通過三坐標(biāo)測量機(jī)獲取,,獲取的點云中不可避免地會帶人噪聲點等影響因素,,因而必須對其進(jìn)行數(shù)據(jù)處理,。將測得的IGES數(shù)據(jù)格式的文件,輸人到Imageware系統(tǒng)中,,再利用系統(tǒng)中提供的曲面構(gòu)建命令進(jìn)行處理,。下圖是通過“輔助面”的方法處理前后的前翼子板效果圖。
NURBS曲面重構(gòu)
自由曲面一般用參數(shù)曲面表示,,常用的方法有Bezier, B-Spline和NURBS等表示方式,。NURBS曲面是標(biāo)準(zhǔn)解析形狀和自由曲面,非有理B樣條,、Bezier曲面都是NURBS的特例表示,。其由下式定義,
式中Vij為控制頂點;Wij為權(quán)因子;Bik(u)和Bjl(w)分別為沿u向的k次和沿w向的l次B樣條基函數(shù),。
u向和w向的節(jié)點矢量為:
NURBS曲面可通過控制點和權(quán)值方便靈活地控制曲面形狀,,能有效進(jìn)行插人節(jié)點、修改,、分割和幾何插值等處理,,并具有透視變換和放射變換的不變性等優(yōu)點。NURBS曲面重構(gòu)框圖如圖4所示,。通過Imageware軟件中的重構(gòu)曲面命令進(jìn)行曲面重構(gòu),,經(jīng)過處理后的車身前罩、車身框架和車門部分零部件的重構(gòu)曲面如圖5,、圖6所示,。