繆 睿 張永林
(江蘇科技大學(xué)自動化學(xué)院,江蘇 鎮(zhèn)江 212003)
數(shù)控加工中為避免頻繁啟停機(jī)床和速度突變帶來的過沖、振蕩導(dǎo)致的機(jī)床和刀具損傷,通常采用曲線擬合尖角輪廓,犧牲部分精度,以一段弧線近似代替尖銳拐角,這樣一來,瞬間突變的速率和方向被整條弧線分擔(dān),有效解決了前述問題。
曲線擬合的本質(zhì)是分解為更多的離散點(diǎn),以更密集的弦逼近計(jì)算得到近似弧線,比較流行的有等間距法和最小誤差法等。目前應(yīng)用較為廣泛的方法為B 樣條的曲線擬合,但一般的B 樣條擬合更適合全局?jǐn)M合,難以控制局部擬合精度。對此,封雨鑫等[1]提出了一種基于三次B 樣條曲線高精度擬合連續(xù)小線段的方法,通過轉(zhuǎn)角和雙邊弓高誤差分析確定型值點(diǎn),但該方法仍然是通過多等分獲取弓高誤差,存在一定偏差。為了使參數(shù)曲線擬合保持精度,蓋榮麗等[2]提出了一種基于特征提取,最小二乘逼近法以及粒子群優(yōu)化算法求解的曲線擬合方法,建立粒子種群和衡量誤差的適應(yīng)度函數(shù),但未對弓高誤差提出解決方法,且多次到達(dá)迭代最大次數(shù),犧牲了更多的時間,實(shí)時性受到影響。高秋英等[3]對最小二乘法曲線擬合及優(yōu)化進(jìn)行了研究。梁小兵等[4]將誤差面上下移動,使單方向的誤差出現(xiàn)在擬合線條兩側(cè),另一側(cè)誤差直接舍去,誤差被壓縮為原本的一半,但此行為直接犧牲了加工面的限制作用,這種加工方式隨時可能出現(xiàn)刀具超出距離的情況,不滿足單向限制。馮倩倩等[5]基于曲率連續(xù)的混合曲線進(jìn)行了插補(bǔ)相關(guān)研究,進(jìn)一步提高了加工輪廓的光順性。
為實(shí)現(xiàn)曲率連續(xù),增加插補(bǔ)過程穩(wěn)定性,同時保持曲線計(jì)算的低復(fù)雜度,便于誤差等參數(shù)的計(jì)算,本文提出一種基于三角正弦曲線的空間光順擬合方式。首先對空間中折線降維,根據(jù)每個拐角的三個控制點(diǎn)間的信息,確定弧線的系數(shù)、周期,根據(jù)允許的最大弓高誤差,進(jìn)行二次切進(jìn)偏移,計(jì)算出弧線上的離散點(diǎn),避免迭代的耗時,然后利用速度前瞻中的回溯法,完成空間中的軌跡規(guī)劃。
采用局部光順擬合的方式,截取各局部拐角降維后分別處理。為避免拐角間各自處理時的相互干涉,取拐角兩邊較短者的一半作為生成三角曲線的最大過渡邊長。
三角曲線在[0,π/2]周期內(nèi)斜率從1 開始衰減至0,而直線斜率不變,所以改變后的正弦曲線仍和圓弧一樣,不會在側(cè)邊出現(xiàn)過處理從而引起誤差。
三角曲線的表達(dá)式為
式中:假設(shè)三角的高為h,底長為c,則斜率k=2h/c,頻率ω=π/c。
最大誤差E量化由計(jì)算得約為0.363h,通過k和ω確認(rèn)當(dāng)前取值最大誤差E是否符合要求,若不符,則以允許的最大誤差Er為基準(zhǔn),縮短過渡邊長tr:
式中:Er為工藝要求允許的實(shí)際加工軌跡偏離預(yù)定軌跡的最大距離,tr為從實(shí)際軌跡開始偏離預(yù)定軌跡處到該段小線段結(jié)束的距離。
除等腰三角范圍外,軌跡保持為原來的直線段。
如今較為廣泛使用的插補(bǔ)方式為圓弧插補(bǔ)和B樣條插補(bǔ)[6],其中B 樣條插補(bǔ)由貝塞爾樣條一般化而來,但更復(fù)雜:定義域被節(jié)點(diǎn)細(xì)分,且基函數(shù)Ni,k(u)是一個在u上的p次多項(xiàng)式,在整個區(qū)間非負(fù)。B 樣條曲線定義公式如下:
式中:Pi為控制點(diǎn)序列,計(jì)算結(jié)果C(u)則為B 樣條上的點(diǎn)。
B 樣條可以較好地?cái)M合曲線,但更適合全局?jǐn)M合,且由于其公式復(fù)雜性,其局部偏差和弓高誤差難以計(jì)算[7]。
局部偏差可利用B 樣條曲線的強(qiáng)凸包性解決-在特殊位置選取更多的控制點(diǎn)[8],可成功控制最大偏差,或者利用clamped B 樣條曲線的性質(zhì)之一分段畫出B 樣條[9]:選取合適的控制點(diǎn)使兩條獨(dú)曲的B 樣條曲線光滑連接,如圖1 所示。
圖1 clamped B 樣條曲線分段插補(bǔ)
即使解決了偏差的控制,依舊存在產(chǎn)生的插補(bǔ)線形狀怪異或計(jì)算復(fù)雜度過高且無法保證精確度的問題。
而對于正圓弧線,已知角度θ(拐角的一半)和最大允許偏差Er后,可以計(jì)算出該情況下插補(bǔ)圓弧的半徑r,最后算出過渡邊長trcircle:
正弦弧線的求取則依據(jù)弧線的峰值和最大允許偏差Er的關(guān)系,得出所需的拐角高度h,求出過渡邊長trsine:
最大允許誤差E和角度θ都固定后,可以畫出具體圖像,如圖2 所示。可以看到,在相同拐角下保證最大偏差相等,正弦曲線的過渡邊長L比圓弧曲線的過渡邊長L'長。
由式(4)和式(5)可得,當(dāng)過渡邊長越短時,產(chǎn)生的偏差也越小,當(dāng)過渡邊長相等時,正弦弧線會產(chǎn)生更小的偏差,而偏差相等時,若拐角邊長足夠,正弦弧線也會使刀具在運(yùn)動時獲得更長的過渡時間,減小刀具的損傷。
1.3.1 插值點(diǎn)計(jì)算
插補(bǔ)本質(zhì)仍為在更短的小線段上直線行進(jìn),插值點(diǎn)標(biāo)準(zhǔn)一般為兩點(diǎn)間線段與弧線的弓高誤差e。
而B 樣條曲線很難通過弓高誤差來判斷獲取插補(bǔ)點(diǎn),需通過當(dāng)前位置、速度等信息二階泰勒展開計(jì)算下一個插補(bǔ)點(diǎn),插補(bǔ)點(diǎn)間弦長和插補(bǔ)曲線的弓高誤差也無法精準(zhǔn)算出,只能取近似值[10]。
圓弧插補(bǔ)由于弧線曲率固定,e確定時弦長也固定,都可以精確計(jì)算,單個拐角僅需計(jì)算一次即可得出所有插補(bǔ)點(diǎn),但正弦線曲率在變化,所以需要分別計(jì)算。
對弧線內(nèi)部的插補(bǔ)點(diǎn)進(jìn)行處理:由前述可知正弦最高處為k/ω,則可求得Xn。
從其下一個點(diǎn)Xn-1開始則難以計(jì)算,若需要較高的精度,則需迭代法求出,迭代標(biāo)準(zhǔn)為弓高誤差e,假設(shè)當(dāng)前點(diǎn)為Xi迭代步驟如下:
(1)獲取當(dāng)前點(diǎn)和上一點(diǎn)間的斜率。
(2)找到弧段上斜率相同的點(diǎn)。
(3)求得該弦弓高D。
(4)若D與e誤差在允許值內(nèi),則停止迭代,否則,取上下限的中值為新的di,若當(dāng)前D>e,將當(dāng)前di設(shè)為上限;若D (5)直至求出X1(X1與原點(diǎn)間弦的弓高小于等于e)。 迭代計(jì)算雖然能得到較好的插補(bǔ)精度,但存在迭代次數(shù)不固定、計(jì)算耗時等問題,難以滿足實(shí)時性要求。對此,提出另一種算法。 (1)如圖3 所示,在Xi處做出其切線L1,根據(jù)已知條件可得L1的表達(dá)式: 圖3 插補(bǔ)點(diǎn)近似算法 式中:ki和Ci1為點(diǎn)Xi處切線所需的斜率及截距值。 (2)向內(nèi)切進(jìn)弓高誤差的值e,得出另一條線L'1,表達(dá)式如下: 式中:Ci2為切線切進(jìn)變化后的截距值。 (3)計(jì)算L'1與正弦曲線的交點(diǎn)X'i: 這個式子沒有符號解,無法精確求出,所以需要將三角函數(shù)部分進(jìn)行泰勒展開。同時,為盡量提高計(jì)算準(zhǔn)確度和降低計(jì)算階次,需要進(jìn)行變化。 先改用兩點(diǎn)間的差分值表示X'i,轉(zhuǎn)換后的式子變?yōu)?/p> 式中:d為兩點(diǎn)間的差分值,即X'i=Xi-d。 最后,把包含未知項(xiàng)d的部分泰勒展開,正弦展開至一階,余弦展開至二階,求得d的根di1和di2,互為相反數(shù),取正根di1,即可求出X'i。 (4)對X'i在進(jìn)行(1)~(3)步驟的操作,再得到一個正根di3,Xi減去di1和di3后即求得前一個插補(bǔ)點(diǎn)Xi-1。 (5)重復(fù)(1)~(4)步驟,可依次求出各插補(bǔ)點(diǎn)。 (6)當(dāng)出現(xiàn)當(dāng)前插補(bǔ)點(diǎn)減去所求差分后為負(fù)數(shù)的情況,就代表計(jì)算結(jié)束,當(dāng)前點(diǎn)作為第一個插補(bǔ)點(diǎn)。 在該算法中,為了保證算出的插補(bǔ)點(diǎn)間弓高誤差的精度,引入sigmoid 函數(shù)對二次切進(jìn)初次取得的點(diǎn)位進(jìn)行修正,修正規(guī)則如下。 第二次切進(jìn)計(jì)算得到前述中的前向距離正根di3后,將算式修改至如下,算出d的后向距離正根di5: 隨后判斷修正方向,若需前向修正,則修正值redress為 式中:dis為di1和di5的差值,若dis為負(fù),則表示取得的點(diǎn)與上一個插值點(diǎn)間弦線和擬合線的弓高誤差小于e。 此時真正的Xi-1需要在二次切進(jìn)求出的點(diǎn)的基礎(chǔ)上減去redress。 若dis為正,則代表弓高誤差超限,需后向修正,后向修正的redress的值通過式(11)中根號下算式中的di3變?yōu)?di5得到。 此時真正的Xi-1需要在二次切進(jìn)求出的點(diǎn)的基礎(chǔ)上加上redress。 流程圖如圖4 所示。 圖4 求取插值點(diǎn)的流程圖 1.3.2 正弦弧線上插補(bǔ)間速度計(jì)算 計(jì)算時,為了更快地獲得速度信息,需要進(jìn)行速度前瞻相關(guān)計(jì)算[11],提前計(jì)算出當(dāng)前時刻后一段時間的速度,用于平滑速度曲線[12]、保護(hù)機(jī)器和零件。 首先,計(jì)算未劃入拐角的直線部分速度,采用7 段式速度規(guī)劃:由用戶設(shè)定初速度vs、最大速度vm、最大加速度accm、最大減速度decm和加加速jerk。 式中:Ti(i=1,2,···,7)值和加加速函數(shù)j(t)、加速度函數(shù)a(t)以及路程函數(shù)s(t)在石川等[13-14]的數(shù)控系統(tǒng)S 曲線加減速規(guī)劃研究中給出了具體算法。 計(jì)算時,由于對稱性,只需計(jì)算前半段:其中第一段由于長度不可控,選擇以勻速進(jìn)給,速度為第二個插補(bǔ)點(diǎn)的允許速度,最后一段情況相同。 從第二段開始,單段弦本身長度較短,不進(jìn)行七段式處理,只看作兩段處理。 計(jì)算方式:假設(shè)只有減加速和減減速兩部分,以正常速度計(jì)算該情況下會進(jìn)給的距離Sper: 如Sper大于等于弦長S,代表可用該速度在此弦長上進(jìn)給運(yùn)動,多余的弦長部分則以初速度在弦開始的部分進(jìn)給。 此時: 式中:t1、t2、t3分別為加工過程中的減加速、勻減速、減減速的時間。 如Sper小于S,表明兩個插補(bǔ)點(diǎn)間的弦長長度不足以在外部給定的加加速下完成速度變化,方法之一是通過S強(qiáng)制調(diào)整增大jerk(此時,已進(jìn)入強(qiáng)制規(guī)劃)。 以上處理方式保證了單個拐角內(nèi)速度連續(xù),但拐角間未做處理,此時速度圖像如圖5 所示(圖中為四葉草前5 個拐角點(diǎn)間的速度,設(shè)置的參數(shù)為加速度上限為1 000 mm/s2,減速度上限為1 200 mm/s2,加加速上限50 000 mm/s3)。 圖5 弧段間速度曲線出現(xiàn)斷層 圖5 中,當(dāng)拐角間不存在緩沖段時,會直接出現(xiàn)斷層現(xiàn)象。具體表現(xiàn)為速度曲線突變,仿真軟件內(nèi)部可看到加速度的內(nèi)部存儲值為NAN,加加速內(nèi)部存儲值為-Inf。 1.3.3 解決速度斷層問題 為解決這一問題,同時保證實(shí)時性,速度前瞻時選用回溯法。 回溯法的基本思想為先取用一定數(shù)量的線段作為前瞻段,從末尾向前回溯處理,計(jì)算出各拐角的允許速度,調(diào)整每個拐角的速度,調(diào)整結(jié)束后,加入一段新線段作為新的前瞻段,重復(fù)上述步驟,直到處理完最后一段前瞻段。 加入速度前瞻回溯法解決速度連續(xù)問題后,還存在較為明顯的缺陷,即每次插補(bǔ)時的弧線曲率是突變的。而正弦弧線的曲率則是從零開始,連續(xù)變化,保證了穩(wěn)定性。 為評估本文提出的正弦曲線插補(bǔ)和速度規(guī)劃算法的有效性,利用Matlab 仿真軟件進(jìn)行仿真實(shí)驗(yàn)。 在空間中利用點(diǎn)位信息構(gòu)造一個立體的四葉草形狀,直接用折線相連的結(jié)果如圖6 所示。 圖6 四葉草折線圖 按照工程中一般的要求,插補(bǔ)最大誤差值設(shè)為0.25 mm,弦長弓高誤差為0.01 mm,其他參數(shù)設(shè)置見表1。 表1 各插補(bǔ)參數(shù) 用正弦曲線插補(bǔ)算法插補(bǔ)后結(jié)果如圖7 所示。 圖7 光順后的四葉草圖 將兩張圖疊加在一起,并進(jìn)行局部放大,結(jié)果如圖8 所示。 圖8 插補(bǔ)前后局部對比 其中各插值點(diǎn)經(jīng)過計(jì)算并修正后部分弓高誤差如圖9 所示。 圖9 修正后的弓高誤差(部分) 可知,除邊界外,拐角內(nèi)部點(diǎn)的弓高誤差精度都控制在10%以下,進(jìn)一步計(jì)算可得,誤差控制在8%以內(nèi)。 當(dāng)固定最大允許誤差E為0.25 mm 時,改變角度θ,正圓弧線和正弦弧線所需的過渡邊長如圖10 所示。隨著角度θ的增大,正弦弧線的過渡邊長始終長于圓弧線。 圖10 正弦弧線和圓弧線過渡邊長對比 將正弦弧線插補(bǔ)和圓弧插補(bǔ)的圖疊加對比如圖11所示。 圖11 正弦和圓弧插補(bǔ)的對比 通過圖11b 可看出,當(dāng)拐角邊長同時小于圓弧插補(bǔ)和正弦弧線插補(bǔ)所需的過渡邊長,即相同拐角下兩者過渡邊長相等時,正弦弧線插補(bǔ)有著更高的精確度。 而圖11c 中的拐角邊長足夠,正弦弧線比圓弧更早進(jìn)入插補(bǔ)過程,從而獲得更長的過渡,減小對刀具的損耗。 計(jì)算拐角在[π/6,2π/3]范圍內(nèi)過渡邊長的比值,結(jié)果如圖12 所示。 圖12 過渡邊長比較結(jié)果 可以看出,同個拐角下,正弦弧線插補(bǔ)的過渡邊長可比圓弧插補(bǔ)長47.5%~118%。 計(jì)算可得,在最大偏差E同為0.25 mm 時,滿足圓弧插補(bǔ)120°角度的過渡邊長用于正弦弧線插補(bǔ)最小可滿足85°,滿足102°角度的圓弧插補(bǔ)過渡邊長即可滿足最小30°的正弦弧線插補(bǔ)過渡,即相同過渡邊長限制下,正弦弧線插補(bǔ)范圍比圓弧插補(bǔ)可擴(kuò)大29%~70%。 B 樣條曲線由于自身的特性,可通過對控制點(diǎn)的處理或分段來對最大誤差進(jìn)行修正[15],為保證對比效果,將B 樣條擬合的偏差修改為與正弦一樣的大小,對比圖如圖13 所示。 圖13 正弦和B 樣條插補(bǔ)的對比 相比之下B 樣條插補(bǔ)對過渡邊長并無特殊要求,表現(xiàn)在代表B 樣條的大插補(bǔ)點(diǎn)完全覆蓋了過渡邊長的部分,并沒有更多的實(shí)線出現(xiàn),靈活方面優(yōu)于圓弧和正弦插補(bǔ)[16]。 但因?yàn)橛?jì)算的復(fù)雜度和不規(guī)則性,需要更長的運(yùn)算時間,難以確定插補(bǔ)點(diǎn)產(chǎn)生的弓高誤差最大值位置,將這個方面列入考慮,誤差的精確度上是圓弧和正弦插補(bǔ)更高。 同時,添加回溯法對其各個拐角速度進(jìn)行限制處理前后,速度得以連續(xù)、加速度、加加速曲線也不再有超限問題,速度以及正弦弧線和圓弧插補(bǔ)過程中曲率變化分別如圖14 和圖15 所示。 圖14 加入回溯法前后的速度曲線 圖15 正弦弧線和圓弧插補(bǔ)過程中曲率變化圖(部分) 由于回溯法的限制,當(dāng)提高最大速度超過一定范圍后,速度曲線將保持不變,保證了加工過程的連續(xù)性和可靠性。 同時,正弦插補(bǔ)的方式也改進(jìn)了圓弧插補(bǔ)的曲率突變問題,使得插補(bǔ)過程更加穩(wěn)定。 本文提出一種基于圓弧插補(bǔ)方式的正弦弧線插補(bǔ)方法,將圓弧插補(bǔ)中的正圓弧替換為正弦曲線,克服了正圓弧插補(bǔ)中曲率不連續(xù)的問題,同等最大偏差和過渡邊長限制下,正弦弧線插補(bǔ)的適用范圍比傳統(tǒng)圓弧插補(bǔ)多約29%~70%,更具靈活性。 由于正弦曲線的曲率處處不相等,無法快速精確地求出插補(bǔ)點(diǎn),采用迭代計(jì)算又會有耗時、實(shí)時性降低等問題,轉(zhuǎn)而提出一種兩次切進(jìn)向前延伸尋點(diǎn)的方法,并同時加入泰勒展開和sigmoid 函數(shù)近似求出插補(bǔ)點(diǎn)并修正,保證了實(shí)時性,避免迭代的同時實(shí)際取點(diǎn)值與期望點(diǎn)值相差均值也在8%以下。 在拐角內(nèi)部,通過簡化的S 型速度算法,加入盛金公式解速度方程,保證內(nèi)部速度連續(xù),外部則通過速度前瞻中的回溯法解決斷層問題,保證內(nèi)外速度都連續(xù),提高穩(wěn)定性,保護(hù)刀具,延長機(jī)床壽命。2 實(shí)驗(yàn)仿真
3 結(jié)語