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