畢今朝,蔣佳奇,張洪博,常玉春
(吉林大學(xué) 電子科學(xué)與工程學(xué)院,長春 130012)
光電編碼器在精密制造,航空航天,伺服系統(tǒng)等領(lǐng)域有著廣泛的應(yīng)用。在理想情況下,光電編碼器的莫爾條紋光電信號應(yīng)為兩路正弦性良好,振幅相等,不存在直流分量,且相位相差90°的正余弦信號。但由于安裝誤差,內(nèi)部電路設(shè)計,光柵刻畫誤差等因素的影響,使光電編碼器的輸出信號的等幅性、正交性、正弦性以及直流分量存在一定程度的誤差。這些因素導(dǎo)致了細(xì)分誤差的出現(xiàn),對測角精度產(chǎn)生影響。因此需要一種補(bǔ)償方法對信號進(jìn)行修正,以達(dá)到提高測角精度的目的。
目前,許多科研機(jī)構(gòu)和研究人員都針對莫爾條紋光電信號提出了多種對誤差進(jìn)行修正和補(bǔ)償?shù)姆椒?。Jenkins等[1]利用夫瑯禾費(fèi)衍射對光電編碼器的輸出信號進(jìn)行建模,提出了一種開環(huán)/閉環(huán)插值方法,并使用EKF(Extended Kalman Filter)算法校正兩路信號的相位差。但閉環(huán)系統(tǒng)會增加系統(tǒng)的復(fù)雜度,而開環(huán)系統(tǒng)難以糾正自身處理的偏差。Heydemann[2]提出了一種利用最小二乘法的信號補(bǔ)償技術(shù),對信號的等幅性偏差,正交性偏差和直流分量誤差進(jìn)行了修正。但其計算量大,算法復(fù)雜度高。Erm等[3]利用卡爾曼濾波器估計模型的參數(shù),并建立補(bǔ)償模型,以補(bǔ)償齒槽轉(zhuǎn)矩,直流分量,高度誤差以及摩擦力等因素帶來的誤差。但卡爾曼濾波的計算量較大。Zhu等[4]提出了一種直接細(xì)分非正交莫爾信號的方法。楊華暉等[5]利用EMD(Empirical Mode Decomposition)算法對光柵莫爾條紋進(jìn)行去噪操作。但EMD算法存在模態(tài)混疊,以及端點效應(yīng)等缺陷。鮑克勤等[6]提出了一種基于VMD(Variational Mode Decomposition)算法的光柵莫爾條紋去噪算法。此外,VMD還可以與其他算法結(jié)合實現(xiàn)信號濾波[7-9]。然而VMD算法的模態(tài)分量總數(shù)K需根據(jù)經(jīng)驗選取。沈思博[10]利用針對莫爾條紋光電信號偏差的自動測量算法和改進(jìn)的閉環(huán)反饋細(xì)分算法修正光電編碼器的等幅性偏差和正交性偏差,但這種方法循環(huán)次數(shù)較多,影響處理效率。此外,Gao等[11]提出了利用PSO(Particle Swarm Optimization)算法補(bǔ)償光柵莫爾條紋信號的正弦性偏差,以及采用希爾伯特變換構(gòu)建算法測量信號的正交性偏差和通過補(bǔ)償查找表補(bǔ)償信號的正交性偏差[12]。但粒子群算法容易陷入局部最優(yōu)解,而希爾伯特變換需要進(jìn)行FFT(Fast Fourier Transform)和IFFT(Inverse Fast Fourier Transform),其計算量較大。
筆者利用布谷鳥搜索算法結(jié)合最小二乘法設(shè)計了一種對莫爾條紋信號進(jìn)行參數(shù)提取和偏差補(bǔ)償?shù)姆椒ā4朔椒ɡ貌脊萨B搜索算法對波形方程中的各參數(shù)進(jìn)行辨識,利用辨識出的參數(shù)對信號的正弦性偏差,等幅性偏差,直流分量進(jìn)行補(bǔ)償。將辨識得到的相位參數(shù)用于構(gòu)建查找表,以對信號的正交性偏差進(jìn)行補(bǔ)償。實驗結(jié)果表明,該方法可以有效改善莫爾條紋光電信號的正弦性,正交性,等幅性以及直流分量的偏差,提高了光電編碼器的細(xì)分精度。
理想情況下,光電編碼器的輸出信號應(yīng)為兩路正交的正余弦信號,信號的波形表達(dá)式為
u1(θ)=Asin(θ)
(1)
u2(θ)=Acos(θ)
(2)
細(xì)分角度可計算如下
(3)
(4)
然而實際上輸出信號并非標(biāo)準(zhǔn)的正余弦信號,而是含有諧波分量,正交性偏差,直流分量,等幅性偏差的信號,上述偏差會使細(xì)分角度出現(xiàn)誤差。信號的波形表達(dá)式如下
(5)
(6)
其中第1項為信號的直流分量,第2項為信號的基波,第3項為各次諧波。在輸出信號中,二次諧波與三次諧波為主要誤差來源,這些因素的存在使輸出信號的正弦性受到影響。高于三次的諧波含量很少,故忽略不計。因此,信號的波形方程可表示為
布谷鳥搜索算法是Yang等[13]在2009年提出的一種優(yōu)化算法,這種算法是模擬布谷鳥的產(chǎn)卵行為進(jìn)行尋優(yōu)。布谷鳥在繁殖時,會將卵產(chǎn)在其他鳥類的巢穴里,讓宿主孵化這些卵。一旦宿主發(fā)現(xiàn)這些外來的卵,便會將其丟棄。
布谷鳥尋找鳥巢的過程是通過萊維飛行實現(xiàn)的,萊維飛行是一種長步長和短步長交替的游走方式,其由較多的短步長和偶爾的長步長組合而成。
Mantegna[14]于1994年提出了一種求解服從萊維分布的隨機(jī)步長的方法,筆者采用此方法求解符合萊維分布的隨機(jī)數(shù)。生成規(guī)則如下
(9)
其中β=1.5,μ~N(0,σ2),v~N(0,1),并且
(10)
通過萊維飛行進(jìn)行位置更新的規(guī)則如下
(11)
其中⊕為點乘,α的取值控制步長,通常取α=0.01。
設(shè)定宿主發(fā)現(xiàn)外來卵的概率為Pa,通常Pa=0.25。當(dāng)通過萊維飛行進(jìn)行位置更新后,生成一個(0,1)之間的隨機(jī)數(shù)r,當(dāng)r>Pa時,宿主發(fā)現(xiàn)外來卵,此時通過局部隨機(jī)游走的方式更新鳥巢的位置。鳥巢的位置更新公式[15]如下
(12)
圖1 布谷鳥搜索算法的流程圖Fig.1 Flowchart of the cuckoo search algorithm
其中H(x)為Heaviside函數(shù),s和ε為(0,1)之間的隨機(jī)數(shù)。
布谷鳥搜索算法的流程如圖1所示。
筆者通過布谷鳥搜索算法分別對式(7)和式(8)中建立的信號波形方程中正弦信號的參數(shù)A0~A3,φ1~φ3和余弦信號的參數(shù)B0~B3,ω1~ω3進(jìn)行參數(shù)擬合。算法包含若干鳥巢,每個鳥巢中的卵都代表正弦或余弦信號中需要辨識的待定參數(shù)。
為實現(xiàn)多參數(shù)辨識,筆者采用布谷鳥搜索算法與最小二乘法理論結(jié)合的方式[11],以殘差平方和構(gòu)建適應(yīng)度函數(shù)。莫爾條紋信號分別為Ssin和Scos,兩路信號的波形方程設(shè)為式(7)和式(8),利用兩組信號的殘差平方和作為適應(yīng)度函數(shù),則正弦信號的適應(yīng)度函數(shù)設(shè)置為
(13)
余弦信號的適應(yīng)度函數(shù)設(shè)置為
(14)
在算法流程中,首先選取波形方程中待定參數(shù)A0~A3,φ1~φ3以及B0~B3,ω1~ω3的取值范圍,并從此范圍中隨機(jī)選取參數(shù)的初始取值并計算相應(yīng)的適應(yīng)值。而后通過圖1中的流程進(jìn)行迭代更新,算法的每次迭代都會選取具有最優(yōu)卵的巢穴位置,即當(dāng)前最優(yōu)參數(shù),并根據(jù)適應(yīng)度函數(shù)計算當(dāng)前的適應(yīng)值。適應(yīng)值越小,表明由迭代得到的參數(shù)構(gòu)成的波形方程與莫爾條紋信號擬合程度越理想,參數(shù)識別的效果越好。當(dāng)一組解的適應(yīng)值小于當(dāng)前最小適應(yīng)值時,則將這一組解視為當(dāng)前最優(yōu)解。當(dāng)?shù)_(dá)到最大次數(shù)時便停止迭代。
信號中諧波分量的存在會影響信號的正弦性,為濾除輸出信號中的諧波分量,需要得知二次諧波和三次諧波分量的參數(shù),即A2,A3,B2,B3,φ2,φ3,ω2,ω3。筆者利用布谷鳥搜索算法對上述參數(shù)進(jìn)行識別,在確定參數(shù)后對原始信號進(jìn)行補(bǔ)償,以達(dá)到濾除諧波的目的。
兩路信號中,諧波分量的波形表達(dá)式分別為
hsin(θ)=A2sin(2θ+φ2)+A3sin(3θ+φ3)
(15)
hcos(θ)=B2cos(2θ+ω2)+B3cos(3θ+ω3)
(16)
將原始信號中的諧波分量進(jìn)行去除,則經(jīng)過補(bǔ)償后兩路信號的波形表達(dá)式為
gsin(θ)=usin(θ)-hsin(θ)
(17)
gcos(θ)=ucos(θ)-hcos(θ)
(18)
在通過布谷鳥搜索算法獲知兩路信號的直流分量A0及B0后,可對信號中存在的直流分量進(jìn)行修正。在濾除諧波后的兩路信號分別為gsin(θ)和gcos(θ),通過布谷鳥搜索算法識別的兩個信號的直流分量分別為A0和B0,校正后的正弦信號ksin(θ)和余弦信號kcos(θ)可以通過
ksin(θ)=gsin(θ)-A0
(19)
kcos(θ)=gcos(θ)-B0
(20)
得到。
對兩路信號的等幅性偏差,需要對兩路信號做處理,使其幅值相等。當(dāng)正余弦信號分別為ksin(θ)和kcos(θ),通過布谷鳥搜索算法識別得到正弦和余弦信號的基波振幅分別為A1和B1時,正弦信號的振幅補(bǔ)償表達(dá)式如下
(21)
正交性是影響光電編碼器細(xì)分精度的關(guān)鍵因素,筆者采用構(gòu)建查找表的方法,以正弦信號作為標(biāo)準(zhǔn),利用查找表實現(xiàn)對余弦信號的補(bǔ)償,以修正信號的正交性。
經(jīng)過參數(shù)辨識可得到莫爾條紋信號的基波相位φ和ω,由于已經(jīng)對正弦性偏差、直流分量和等幅性偏差進(jìn)行了補(bǔ)償,所以此時的正余弦信號可看作僅含正交性偏差的信號,因此兩路信號的波形方程分別為
nsin(θ)=Asin(θ+φ)
(22)
(23)
記兩路信號的相位差ω-φ為ε,當(dāng)其相互正交時,ε應(yīng)為0。即不存在正交性偏差時,余弦信號的波形方程應(yīng)為
ncos(θ)=Acos(θ+φ)
(24)
而當(dāng)正余弦信號之間存在正交性偏差時,其波形方程為
(25)
對式(25)做泰勒展開[12],可得
(26)
取一階泰勒展開,可得
Acos(θ+φ)=Acos(θ+φ+ε)+Asin(θ+φ)ε
(27)
式(27)為查找表的構(gòu)造公式。
將兩路正余弦信號經(jīng)過上述方法進(jìn)行處理,得到如下結(jié)果。
對兩路信號利用布谷鳥搜索算法進(jìn)行參數(shù)識別,將算法的迭代次數(shù)設(shè)置為500次,圖2和圖3分別為利用布谷鳥搜索算法對兩路信號進(jìn)行參數(shù)識別的適應(yīng)值變化曲線??梢?隨著迭代次數(shù)的增加,適應(yīng)值也在下降,最終正弦信號的適應(yīng)值于100次迭代后逐漸收斂,余弦信號的適應(yīng)值于120次迭代后逐漸收斂。
圖2 正弦信號的適應(yīng)值變化曲線 圖3 余弦信號的適應(yīng)值變化曲線 Fig.2 Fitness value of sine signal Fig.3 Fitness value of cosine signal
利薩如圖形是由兩路相互垂直的正弦振動合成的圖形,兩路信號的正交性越好,合成的圖形越接近圓形。將補(bǔ)償前后的兩路信號分別合成利薩如圖形,如圖4所示,可以看出在補(bǔ)償后兩路信號合成的利薩如圖形更接近圓形。經(jīng)過補(bǔ)償后,兩路信號的正交性得到了改善。
細(xì)分誤差為實際的細(xì)分角度與理想情況下的細(xì)分角度之間的差值,實際的細(xì)分角度為θ′,理想情況下的細(xì)分角度為θ,則細(xì)分誤差的計算式為
e=θ′-θ
(28)
圖5為原始信號的細(xì)分誤差與經(jīng)系統(tǒng)補(bǔ)償后的細(xì)分誤差。補(bǔ)償前細(xì)分角度的誤差最大值為56.25″,最小值為-4.90″,誤差峰值為61.15″;補(bǔ)償后細(xì)分角度的誤差最大值為10.55″,最小值為-6.38″,誤差峰值為16.93″。經(jīng)系統(tǒng)補(bǔ)償后,細(xì)分誤差有了明顯降低,而且測角精度得到了提高。
圖4 兩路信號合成的利薩如圖形 圖5 補(bǔ)償前后的細(xì)分誤差 Fig.4 Lissajous figure composed of two signals Fig.5 Subdivision deviation before and after compensation
筆者利用布谷鳥搜索算法結(jié)合最小二乘法設(shè)計了一種莫爾條紋信號多參數(shù)辨識的方法,利用辨識得到的參數(shù)對光電編碼器莫爾條紋信號的正弦性偏差,直流分量和等幅性偏差進(jìn)行補(bǔ)償,并利用辨識得到的相位參數(shù)用于構(gòu)建查找表,通過該方法實現(xiàn)正交性偏差的補(bǔ)償。
實驗結(jié)果表明,經(jīng)過系統(tǒng)補(bǔ)償后,細(xì)分角度誤差峰值從61.15″降至16.93″,可見細(xì)分精度得到了提高。說明該方法可有效改善信號的正弦性,正交性,等幅性以及直流分量偏差,提升了光電編碼器輸出信號的質(zhì)量,使光電編碼器的測角精度有了進(jìn)一步提高。