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