繆 睿 張永林
(江蘇科技大學自動化學院,江蘇 鎮江 212003)
數控加工中為避免頻繁啟停機床和速度突變帶來的過沖、振蕩導致的機床和刀具損傷,通常采用曲線擬合尖角輪廓,犧牲部分精度,以一段弧線近似代替尖銳拐角,這樣一來,瞬間突變的速率和方向被整條弧線分擔,有效解決了前述問題。
曲線擬合的本質是分解為更多的離散點,以更密集的弦逼近計算得到近似弧線,比較流行的有等間距法和最小誤差法等。目前應用較為廣泛的方法為B 樣條的曲線擬合,但一般的B 樣條擬合更適合全局擬合,難以控制局部擬合精度。對此,封雨鑫等[1]提出了一種基于三次B 樣條曲線高精度擬合連續小線段的方法,通過轉角和雙邊弓高誤差分析確定型值點,但該方法仍然是通過多等分獲取弓高誤差,存在一定偏差。為了使參數曲線擬合保持精度,蓋榮麗等[2]提出了一種基于特征提取,最小二乘逼近法以及粒子群優化算法求解的曲線擬合方法,建立粒子種群和衡量誤差的適應度函數,但未對弓高誤差提出解決方法,且多次到達迭代最大次數,犧牲了更多的時間,實時性受到影響。高秋英等[3]對最小二乘法曲線擬合及優化進行了研究。梁小兵等[4]將誤差面上下移動,使單方向的誤差出現在擬合線條兩側,另一側誤差直接舍去,誤差被壓縮為原本的一半,但此行為直接犧牲了加工面的限制作用,這種加工方式隨時可能出現刀具超出距離的情況,不滿足單向限制。馮倩倩等[5]基于曲率連續的混合曲線進行了插補相關研究,進一步提高了加工輪廓的光順性。
為實現曲率連續,增加插補過程穩定性,同時保持曲線計算的低復雜度,便于誤差等參數的計算,本文提出一種基于三角正弦曲線的空間光順擬合方式。首先對空間中折線降維,根據每個拐角的三個控制點間的信息,確定弧線的系數、周期,根據允許的最大弓高誤差,進行二次切進偏移,計算出弧線上的離散點,避免迭代的耗時,然后利用速度前瞻中的回溯法,完成空間中的軌跡規劃。
采用局部光順擬合的方式,截取各局部拐角降維后分別處理。為避免拐角間各自處理時的相互干涉,取拐角兩邊較短者的一半作為生成三角曲線的最大過渡邊長。
三角曲線在[0,π/2]周期內斜率從1 開始衰減至0,而直線斜率不變,所以改變后的正弦曲線仍和圓弧一樣,不會在側邊出現過處理從而引起誤差。
三角曲線的表達式為
式中:假設三角的高為h,底長為c,則斜率k=2h/c,頻率ω=π/c。
最大誤差E量化由計算得約為0.363h,通過k和ω確認當前取值最大誤差E是否符合要求,若不符,則以允許的最大誤差Er為基準,縮短過渡邊長tr:
式中:Er為工藝要求允許的實際加工軌跡偏離預定軌跡的最大距離,tr為從實際軌跡開始偏離預定軌跡處到該段小線段結束的距離。
除等腰三角范圍外,軌跡保持為原來的直線段。
如今較為廣泛使用的插補方式為圓弧插補和B樣條插補[6],其中B 樣條插補由貝塞爾樣條一般化而來,但更復雜:定義域被節點細分,且基函數Ni,k(u)是一個在u上的p次多項式,在整個區間非負。B 樣條曲線定義公式如下:
式中:Pi為控制點序列,計算結果C(u)則為B 樣條上的點。
B 樣條可以較好地擬合曲線,但更適合全局擬合,且由于其公式復雜性,其局部偏差和弓高誤差難以計算[7]。
局部偏差可利用B 樣條曲線的強凸包性解決-在特殊位置選取更多的控制點[8],可成功控制最大偏差,或者利用clamped B 樣條曲線的性質之一分段畫出B 樣條[9]:選取合適的控制點使兩條獨曲的B 樣條曲線光滑連接,如圖1 所示。

圖1 clamped B 樣條曲線分段插補
即使解決了偏差的控制,依舊存在產生的插補線形狀怪異或計算復雜度過高且無法保證精確度的問題。
而對于正圓弧線,已知角度θ(拐角的一半)和最大允許偏差Er后,可以計算出該情況下插補圓弧的半徑r,最后算出過渡邊長trcircle:
正弦弧線的求取則依據弧線的峰值和最大允許偏差Er的關系,得出所需的拐角高度h,求出過渡邊長trsine:
最大允許誤差E和角度θ都固定后,可以畫出具體圖像,如圖2 所示。可以看到,在相同拐角下保證最大偏差相等,正弦曲線的過渡邊長L比圓弧曲線的過渡邊長L'長。
由式(4)和式(5)可得,當過渡邊長越短時,產生的偏差也越小,當過渡邊長相等時,正弦弧線會產生更小的偏差,而偏差相等時,若拐角邊長足夠,正弦弧線也會使刀具在運動時獲得更長的過渡時間,減小刀具的損傷。
1.3.1 插值點計算
插補本質仍為在更短的小線段上直線行進,插值點標準一般為兩點間線段與弧線的弓高誤差e。
而B 樣條曲線很難通過弓高誤差來判斷獲取插補點,需通過當前位置、速度等信息二階泰勒展開計算下一個插補點,插補點間弦長和插補曲線的弓高誤差也無法精準算出,只能取近似值[10]。
圓弧插補由于弧線曲率固定,e確定時弦長也固定,都可以精確計算,單個拐角僅需計算一次即可得出所有插補點,但正弦線曲率在變化,所以需要分別計算。
對弧線內部的插補點進行處理:由前述可知正弦最高處為k/ω,則可求得Xn。
從其下一個點Xn-1開始則難以計算,若需要較高的精度,則需迭代法求出,迭代標準為弓高誤差e,假設當前點為Xi迭代步驟如下:
(1)獲取當前點和上一點間的斜率。
(2)找到弧段上斜率相同的點。
(3)求得該弦弓高D。
(4)若D與e誤差在允許值內,則停止迭代,否則,取上下限的中值為新的di,若當前D>e,將當前di設為上限;若D (5)直至求出X1(X1與原點間弦的弓高小于等于e)。 迭代計算雖然能得到較好的插補精度,但存在迭代次數不固定、計算耗時等問題,難以滿足實時性要求。對此,提出另一種算法。 (1)如圖3 所示,在Xi處做出其切線L1,根據已知條件可得L1的表達式: 圖3 插補點近似算法 式中:ki和Ci1為點Xi處切線所需的斜率及截距值。 (2)向內切進弓高誤差的值e,得出另一條線L'1,表達式如下: 式中:Ci2為切線切進變化后的截距值。 (3)計算L'1與正弦曲線的交點X'i: 這個式子沒有符號解,無法精確求出,所以需要將三角函數部分進行泰勒展開。同時,為盡量提高計算準確度和降低計算階次,需要進行變化。 先改用兩點間的差分值表示X'i,轉換后的式子變為 式中:d為兩點間的差分值,即X'i=Xi-d。 最后,把包含未知項d的部分泰勒展開,正弦展開至一階,余弦展開至二階,求得d的根di1和di2,互為相反數,取正根di1,即可求出X'i。 (4)對X'i在進行(1)~(3)步驟的操作,再得到一個正根di3,Xi減去di1和di3后即求得前一個插補點Xi-1。 (5)重復(1)~(4)步驟,可依次求出各插補點。 (6)當出現當前插補點減去所求差分后為負數的情況,就代表計算結束,當前點作為第一個插補點。 在該算法中,為了保證算出的插補點間弓高誤差的精度,引入sigmoid 函數對二次切進初次取得的點位進行修正,修正規則如下。 第二次切進計算得到前述中的前向距離正根di3后,將算式修改至如下,算出d的后向距離正根di5: 隨后判斷修正方向,若需前向修正,則修正值redress為 式中:dis為di1和di5的差值,若dis為負,則表示取得的點與上一個插值點間弦線和擬合線的弓高誤差小于e。 此時真正的Xi-1需要在二次切進求出的點的基礎上減去redress。 若dis為正,則代表弓高誤差超限,需后向修正,后向修正的redress的值通過式(11)中根號下算式中的di3變為-di5得到。 此時真正的Xi-1需要在二次切進求出的點的基礎上加上redress。 流程圖如圖4 所示。 圖4 求取插值點的流程圖 1.3.2 正弦弧線上插補間速度計算 計算時,為了更快地獲得速度信息,需要進行速度前瞻相關計算[11],提前計算出當前時刻后一段時間的速度,用于平滑速度曲線[12]、保護機器和零件。 首先,計算未劃入拐角的直線部分速度,采用7 段式速度規劃:由用戶設定初速度vs、最大速度vm、最大加速度accm、最大減速度decm和加加速jerk。 式中:Ti(i=1,2,···,7)值和加加速函數j(t)、加速度函數a(t)以及路程函數s(t)在石川等[13-14]的數控系統S 曲線加減速規劃研究中給出了具體算法。 計算時,由于對稱性,只需計算前半段:其中第一段由于長度不可控,選擇以勻速進給,速度為第二個插補點的允許速度,最后一段情況相同。 從第二段開始,單段弦本身長度較短,不進行七段式處理,只看作兩段處理。 計算方式:假設只有減加速和減減速兩部分,以正常速度計算該情況下會進給的距離Sper: 如Sper大于等于弦長S,代表可用該速度在此弦長上進給運動,多余的弦長部分則以初速度在弦開始的部分進給。 此時: 式中:t1、t2、t3分別為加工過程中的減加速、勻減速、減減速的時間。 如Sper小于S,表明兩個插補點間的弦長長度不足以在外部給定的加加速下完成速度變化,方法之一是通過S強制調整增大jerk(此時,已進入強制規劃)。 以上處理方式保證了單個拐角內速度連續,但拐角間未做處理,此時速度圖像如圖5 所示(圖中為四葉草前5 個拐角點間的速度,設置的參數為加速度上限為1 000 mm/s2,減速度上限為1 200 mm/s2,加加速上限50 000 mm/s3)。 圖5 弧段間速度曲線出現斷層 圖5 中,當拐角間不存在緩沖段時,會直接出現斷層現象。具體表現為速度曲線突變,仿真軟件內部可看到加速度的內部存儲值為NAN,加加速內部存儲值為-Inf。 1.3.3 解決速度斷層問題 為解決這一問題,同時保證實時性,速度前瞻時選用回溯法。 回溯法的基本思想為先取用一定數量的線段作為前瞻段,從末尾向前回溯處理,計算出各拐角的允許速度,調整每個拐角的速度,調整結束后,加入一段新線段作為新的前瞻段,重復上述步驟,直到處理完最后一段前瞻段。 加入速度前瞻回溯法解決速度連續問題后,還存在較為明顯的缺陷,即每次插補時的弧線曲率是突變的。而正弦弧線的曲率則是從零開始,連續變化,保證了穩定性。 為評估本文提出的正弦曲線插補和速度規劃算法的有效性,利用Matlab 仿真軟件進行仿真實驗。 在空間中利用點位信息構造一個立體的四葉草形狀,直接用折線相連的結果如圖6 所示。 圖6 四葉草折線圖 按照工程中一般的要求,插補最大誤差值設為0.25 mm,弦長弓高誤差為0.01 mm,其他參數設置見表1。 表1 各插補參數 用正弦曲線插補算法插補后結果如圖7 所示。 圖7 光順后的四葉草圖 將兩張圖疊加在一起,并進行局部放大,結果如圖8 所示。 圖8 插補前后局部對比 其中各插值點經過計算并修正后部分弓高誤差如圖9 所示。 圖9 修正后的弓高誤差(部分) 可知,除邊界外,拐角內部點的弓高誤差精度都控制在10%以下,進一步計算可得,誤差控制在8%以內。 當固定最大允許誤差E為0.25 mm 時,改變角度θ,正圓弧線和正弦弧線所需的過渡邊長如圖10 所示。隨著角度θ的增大,正弦弧線的過渡邊長始終長于圓弧線。 圖10 正弦弧線和圓弧線過渡邊長對比 將正弦弧線插補和圓弧插補的圖疊加對比如圖11所示。 圖11 正弦和圓弧插補的對比 通過圖11b 可看出,當拐角邊長同時小于圓弧插補和正弦弧線插補所需的過渡邊長,即相同拐角下兩者過渡邊長相等時,正弦弧線插補有著更高的精確度。 而圖11c 中的拐角邊長足夠,正弦弧線比圓弧更早進入插補過程,從而獲得更長的過渡,減小對刀具的損耗。 計算拐角在[π/6,2π/3]范圍內過渡邊長的比值,結果如圖12 所示。 圖12 過渡邊長比較結果 可以看出,同個拐角下,正弦弧線插補的過渡邊長可比圓弧插補長47.5%~118%。 計算可得,在最大偏差E同為0.25 mm 時,滿足圓弧插補120°角度的過渡邊長用于正弦弧線插補最小可滿足85°,滿足102°角度的圓弧插補過渡邊長即可滿足最小30°的正弦弧線插補過渡,即相同過渡邊長限制下,正弦弧線插補范圍比圓弧插補可擴大29%~70%。 B 樣條曲線由于自身的特性,可通過對控制點的處理或分段來對最大誤差進行修正[15],為保證對比效果,將B 樣條擬合的偏差修改為與正弦一樣的大小,對比圖如圖13 所示。 圖13 正弦和B 樣條插補的對比 相比之下B 樣條插補對過渡邊長并無特殊要求,表現在代表B 樣條的大插補點完全覆蓋了過渡邊長的部分,并沒有更多的實線出現,靈活方面優于圓弧和正弦插補[16]。 但因為計算的復雜度和不規則性,需要更長的運算時間,難以確定插補點產生的弓高誤差最大值位置,將這個方面列入考慮,誤差的精確度上是圓弧和正弦插補更高。 同時,添加回溯法對其各個拐角速度進行限制處理前后,速度得以連續、加速度、加加速曲線也不再有超限問題,速度以及正弦弧線和圓弧插補過程中曲率變化分別如圖14 和圖15 所示。 圖14 加入回溯法前后的速度曲線 圖15 正弦弧線和圓弧插補過程中曲率變化圖(部分) 由于回溯法的限制,當提高最大速度超過一定范圍后,速度曲線將保持不變,保證了加工過程的連續性和可靠性。 同時,正弦插補的方式也改進了圓弧插補的曲率突變問題,使得插補過程更加穩定。 本文提出一種基于圓弧插補方式的正弦弧線插補方法,將圓弧插補中的正圓弧替換為正弦曲線,克服了正圓弧插補中曲率不連續的問題,同等最大偏差和過渡邊長限制下,正弦弧線插補的適用范圍比傳統圓弧插補多約29%~70%,更具靈活性。 由于正弦曲線的曲率處處不相等,無法快速精確地求出插補點,采用迭代計算又會有耗時、實時性降低等問題,轉而提出一種兩次切進向前延伸尋點的方法,并同時加入泰勒展開和sigmoid 函數近似求出插補點并修正,保證了實時性,避免迭代的同時實際取點值與期望點值相差均值也在8%以下。 在拐角內部,通過簡化的S 型速度算法,加入盛金公式解速度方程,保證內部速度連續,外部則通過速度前瞻中的回溯法解決斷層問題,保證內外速度都連續,提高穩定性,保護刀具,延長機床壽命。


2 實驗仿真











3 結語