趙福英, 倪俊芳
(蘇州大學 機電工程學院, 江蘇 蘇州 215021)
花樣打板系統(tǒng)設計的花型輪廓通常由直線、圓弧、曲線等元素組成,這些曲線大都采用Bezier曲線、NURBS曲線表示[1]。國內(nèi)研究者[2-4]在B樣條應用領域有廣泛研究,并取得一定進展,而基于絎縫、提花、針織等自動化設備的復雜花型樣條曲線的逼近研究甚少。因為目前大部分數(shù)控加工系統(tǒng)只識別直線插補和圓弧插補,所以需要將復雜曲線轉(zhuǎn)換成直線段、圓弧段或者二者混合。
三次樣條曲線能夠滿足曲率半徑連續(xù)且具有一定的幾何意義。當曲線次數(shù)越高時,曲線越復雜,應用該曲線加工越困難。三次準均勻B樣條曲線具有三次樣條曲線的基本特點,且能夠支持局部修改,其首末端點與特征多邊形相切,方便控制曲線形狀;因此,設計花型輪廓時,首先采用三次準均勻B樣條曲線進行設計,然后采用插補算法分割曲線。雙圓弧逼近三次準均勻B樣條的算法,與直線逼近算法比較而言,優(yōu)點主要包括:保持了原曲線的凹凸性,保證雙圓弧位于擬合曲線控制的多邊形內(nèi)部,精度高,可改善加工織物表面品質(zhì);與二者混合逼近比較而言,刪除了大量的中間點,在給定誤差范圍內(nèi),圓弧段數(shù)最少,便于轉(zhuǎn)換成簡單的G代碼,減少CAD與CAM系統(tǒng)的數(shù)據(jù)傳輸,計算效率高。本文提出一種基于誤差控制自動分段的雙圓弧算法,分析擬合誤差ε,利用MatLab計算仿真,最后再將直線、圓弧等花樣輪廓離散成均勻的針跡點,生成加工代碼,從而加工出復雜的花樣圖案。
B樣條曲線方程[5-7]定義為
(1)
式中:Pi為B樣條的控制點坐標;Ni,k(t)為基函數(shù)0≤t≤1;i為節(jié)點序號,i=0,1,…,n;k為基函數(shù)次數(shù)?;瘮?shù)用Cox-deBoor公式表示為
(2)
圖1示出雙圓弧曲線逼近B樣條曲線示意圖。B樣條需滿足以下要求[8-9]:
1)起始圓弧過曲線P0點,終止圓弧過P1點;

3)分段圓弧在連接處達一階導數(shù)連續(xù);
4)整體逼近的精度在閾值S范圍內(nèi);
5)所用的圓弧數(shù)目應盡可能少。

圖1 雙圓弧逼近B樣條Fig.1 Double circular arc approximating B spline

根據(jù)圖1通過計算可知:
(3)

用雙圓弧逼近某B樣條曲線段{P(t),t∈(0,t′)}或{P(t),t∈(t′,1)}。由圖1可知,雙圓弧C1和C2均過連接點P,并在與B樣條曲線始、末端連線相垂直的直線上。設樣條與圓弧的最大逼近誤差為ε,則:
(4)

(5)


圖2 雙圓弧逼近三次準均勻B樣條算法流程圖Fig.2 Flow chart of double arc approximation three quasi uniform B spline algorithm
假設輸入樣條控制點(1,1)、(2,4)、(3,5)、(4,1)、(6,2)、(5,6)、(2,2),基于上述算法,利用MatLab編程進行模擬仿真,結(jié)果如圖3~6所示。

圖3 ε=0.1的雙圓弧逼近Fig.3 Double arc approximation of ε=0.1

圖4 ε=0.1的雙圓弧逼近誤差分析Fig.4 Double arc approximation error of ε=0.1

圖5 ε=0.01的雙圓弧逼近Fig.5 Double arc approximation of ε=0.01

圖6 ε=0.01的雙圓弧逼近誤差分布Fig.6 Double arc approximation error of ε=0.01
基于多數(shù)控制器只能加工直線和圓弧[11],為了獲取高質(zhì)量的花樣數(shù)據(jù),解決花樣圖案針跡點不均勻問題,設計相應的直線和整圓插補算法。
對于加工代碼數(shù)據(jù)而言,針跡點需分布均勻,且盡可能分布在同一條直線上。設直線起點為A(xa,yb),終點為B(xb,yb),長為l,根據(jù)步距step,生成其他控制針跡點的算法如下。
1)根據(jù)step算出直線花樣的針數(shù)n。
令m=l/step,r=l%step。其中m,r均為整數(shù)。當r≤step/2時,針數(shù)n=m;當r>step/2時,針數(shù)n=m+1;當m=1且r≤step/2且l>stepmax時,針數(shù)n=m+1。
2)根據(jù)針數(shù)n,將直線等分,計算等分點。
直線起點、終點分別為(xa,ya)、(xb,yb),令
式中:step_x和step_y取整數(shù);dx和dy取小數(shù)。取第1個等分點為(xa+step_x,ya+step_y),依此類推,第n-1個等分點為(xa+(n-1)×step_x,ya+n-1×step_y)
3)對等分點進行插補。
從第1個等分點到第n個點依次進行插補,當dx=0,dy=0時,算法結(jié)束,流程如圖7所示。

圖7 直線插補流程圖Fig.7 Flow chart of linear interpolation
已知圓心及半徑R,計算出圓上均勻分布的點,步驟如下。

F(Pi)=[(xi+1)2+yi2]-R2
F(Qi)=[(xi+1)2+(yi-1)2]-R2
引入判別式Di=F(Pi)-F(Qi),判別表達式如下所示:
當i=0,x0=0,y0=R,d0=3-2R;
當Di≥0,選擇Pi,xi+1=xi+1,yi+1=yi,di+1=di+4xi+6;
當Di<0,選擇Qi,xi+1=xi+1,yi+1=yi-1,di+1=di+4xi-yixi+10。
其算法流程如圖8所示。

圖8 Bresenham算法流程圖Fig.8 Bresenham algorithm flow chart
2)根據(jù)步距step計算步數(shù)n和實際針距l(xiāng)s。
以step為弦長,計算其對應的圓心角α=2arcsinstep/2R,步數(shù)n=2π/α,針距l(xiāng)s=2Rsinπ/n。
3)計算圓花樣的均勻分布針跡點。

式中:如果dis<0,則第n個針跡點與A點合并。圓弧花樣與圓花樣生成針跡點算法類似,只要篩選出Bresenham整圓上對應的圓弧區(qū)域即可。
輸入A(3.7,-11.9)、B(-5.2,10.6)為直線的起點和終點,步距為3.0 mm,根據(jù)直線算法,利用MatLab定義函數(shù)straight_line([3.7,-11.9],[-5.2,10.6], 3)計算出各個插補點生成加工路徑,如圖9所示。

圖9 直線花樣Fig.9 Straight line pattern
從圖9可知,針跡點分布均勻,幾乎在同一條直線上,實際針距在3.0 mm左右浮動,加工質(zhì)量高。
輸入起點A(x0,y0),半徑R,步距step,方向(a,逆時針;b,順時針),根據(jù)圓插補算法利用MatLab編程模擬,定義函數(shù)circle_bresenham([12.0,16.0],20,3,1)計算出相應的針跡點,生成的花樣作業(yè)圖案如圖10所示。由arc_bresenham([12.0,16.0],[-20,0],20,3,0)生成的均勻針跡點如圖11所示。

圖10 圓花樣Fig.10 Round pattern

圖11 圓弧花樣Fig.11 Arc pattern
以C#語言的WinForm為開發(fā)工具,采用面向?qū)ο蟮乃枷朐O計了花型準備系統(tǒng)。利用雙圓弧逼近算法先將含有直線、圓弧、樣條曲線的數(shù)據(jù)文件(如主流格式DST、DXF等)轉(zhuǎn)換成只含有直線和圓弧數(shù)據(jù)的DAT文件,然后通過GDI+可視化編程將花型矢量圖案繪制出來,最后將該文件編譯成數(shù)控機床可識別的CNC加工程式。DAT文件的分量格式:花樣文件有8列數(shù)據(jù),每行定義了某一幾何線型。其中第1列數(shù)據(jù)為0、1、2,分別代表直線、圓弧、虛線,-1代表終止程序。第2、3列分別代表該線型的起點橫、縱坐標;第4、5列分別代表該線型的終點橫、縱坐標;如果該線型為圓弧,則還需要定義圓心的橫縱坐標及圓弧走向,分別在第6、7、8列定義。繪制出的花樣矢量圖如圖12所示,數(shù)控機床仿真模擬如圖13所示。

圖12 DAT文件的花樣矢量圖Fig.12 Pattern vectorgraph of DAT file

圖13 數(shù)控機床的模擬仿真圖Fig.13 Simulation diagram of CNC machine
圖13表明,通過雙圓弧逼近算法處理得到的花型圖案輪廓光滑、加工質(zhì)量高,可實現(xiàn)復雜花型的加工。
花型復雜輪廓的逼近是獲取高質(zhì)量的加工數(shù)據(jù),解決花樣作業(yè)圖案針跡點不均勻等問題的關(guān)鍵技術(shù)。本文基于雙圓弧擬合三次準均勻B樣條曲線的算法,保證較高的逼近精度,圓弧之間光滑連接保證一階導數(shù)連續(xù)。該算法可根據(jù)給定閾值,合理規(guī)劃分段點、雙圓弧段數(shù),利用MatLab進行數(shù)值模擬,實現(xiàn)了花型針跡點均勻分布。該算法為復雜曲線的數(shù)控編程、CAD/CAM系統(tǒng)和自由曲線的等差微段逼近提供參考,并在單針電腦絎縫機、電子花樣機等縫制設備上進行了相關(guān)實驗,結(jié)果達到了技術(shù)要求。
FZXB