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