蘇 霄,田景文
(北京聯(lián)合大學(xué) 信息學(xué)院,北京 100101)
自20世紀(jì)60年代初發(fā)明第一臺(tái)工業(yè)機(jī)器人以來(lái),機(jī)器人已經(jīng)幾乎滲透到世界的各個(gè)領(lǐng)域。機(jī)器人技術(shù)的發(fā)展水平已經(jīng)成為一個(gè)衡量國(guó)家高新科技水平和工業(yè)自動(dòng)化程度的重要標(biāo)志。當(dāng)前生產(chǎn)、生活中已經(jīng)廣泛應(yīng)用機(jī)器人完成任務(wù),甚至在一些場(chǎng)合中代替人類(lèi)發(fā)揮著重要的作用[1]。
通過(guò)自身所帶傳感器對(duì)環(huán)境進(jìn)行感知,自主移動(dòng)機(jī)器人能夠?qū)崿F(xiàn)在非結(jié)構(gòu)環(huán)境下,進(jìn)行行為控制和執(zhí)行、動(dòng)態(tài)決策與規(guī)劃等功能。該高智能化系統(tǒng)與計(jì)算機(jī)視覺(jué)、智能控制以及多智能體(Multi-Agent)、機(jī)器人學(xué)和機(jī)械學(xué)等學(xué)科緊密聯(lián)系,具有重要的軍用及民用價(jià)值,是現(xiàn)代機(jī)器人學(xué)中一個(gè)重要而且相當(dāng)活躍的研究領(lǐng)域[2]。
對(duì)移動(dòng)機(jī)器人控制情況受以下幾方面影響:建模[3]、定位[4,5]、控制及穩(wěn)定性[6,7]、智能技術(shù)等。
旅行家II號(hào)是目前國(guó)內(nèi)性?xún)r(jià)比很高的高端機(jī)器人,所以本文用其作為受控研究對(duì)象。其采用模塊化的設(shè)計(jì)理念,很好的運(yùn)動(dòng)精度的直流伺服控制,更加強(qiáng)調(diào)應(yīng)用,并具有高負(fù)載能力??刂朴?jì)算機(jī)選用配有紅外、視覺(jué)、角速率陀螺儀等高精度傳感器的工業(yè)PC或者是高性能的嵌入式控制器。
其中電子磁羅盤(pán)傳感器、測(cè)距聲納的數(shù)據(jù)為機(jī)器人行為控制提供依據(jù)。
超聲測(cè)距的原理采用渡越時(shí)間法,表示為:
公式(1)中,D為被測(cè)障礙物和移動(dòng)機(jī)器人之間的距離,c表示在介質(zhì)中聲波的傳輸速率。在空氣中聲波的傳輸速率為:
公式(2)中,T表示絕對(duì)溫度,c01=331.4m/s。c在不要求很高的測(cè)距精度時(shí)可認(rèn)為是常數(shù)。渡越時(shí)間法主要是用來(lái)測(cè)量超聲發(fā)射超聲返回的時(shí)間間隔t,距離由公式(1)計(jì)算得出。
本機(jī)器人的伺服控制系統(tǒng)是一個(gè)閉環(huán)控制系統(tǒng),其工作流程如圖1所示。
隨著計(jì)算機(jī)的出現(xiàn),把原來(lái)最先出現(xiàn)在模擬控制系統(tǒng)中的PID 控制器,移植到計(jì)算機(jī)控制系統(tǒng)中來(lái),將原來(lái)的硬件實(shí)現(xiàn)的功能用軟件來(lái)代替,因此稱(chēng)作數(shù)字PID 控制器,所形成的一整套算法則稱(chēng)為數(shù)字PID 算法。在機(jī)器人行進(jìn)控制中也可使用PID控制算法對(duì)其進(jìn)行控制。其中PID控制規(guī)律為:
式(3)中, Kp —比例系數(shù);TI—積分常數(shù);TD—微分常數(shù);u0—控制常量;
在PID中,比例環(huán)節(jié)的作用是對(duì)偏差瞬間作出快速反應(yīng)。偏差一旦產(chǎn)生,控制器立即產(chǎn)生控制作用,使控制量向減少偏差的方向變化??刂谱饔玫膹?qiáng)弱取決于比例系數(shù)Kp , Kp越大,控制越強(qiáng);但是過(guò)大的Kp會(huì)導(dǎo)致系統(tǒng)震蕩,破壞系統(tǒng)的穩(wěn)定性。
由上式可以看出,只有當(dāng)偏差存在時(shí),第一項(xiàng)才有控制量輸出。所以,對(duì)大部分被控制對(duì)象(如直流電機(jī)的調(diào)壓調(diào)速),需要加上適當(dāng)?shù)呐c轉(zhuǎn)速和機(jī)械負(fù)載有關(guān)的控制常量u0,否則,比例環(huán)節(jié)將會(huì)產(chǎn)生靜態(tài)誤差。
圖2 PID控制流程圖
使用這種算法對(duì)機(jī)器人行進(jìn)進(jìn)行控制的缺點(diǎn)是:由于是全量輸出,以至于每次輸出均與過(guò)去狀態(tài)有關(guān),所以計(jì)算時(shí)要進(jìn)行累加工作量。并且,計(jì)算機(jī)輸出數(shù)據(jù)對(duì)應(yīng)的是執(zhí)行機(jī)構(gòu)的實(shí)際位置,如果計(jì)算機(jī)出現(xiàn)故障,輸出數(shù)據(jù)將會(huì)大幅度變化,會(huì)引起執(zhí)行機(jī)構(gòu)的大幅度變化。這樣機(jī)器人在行進(jìn)的過(guò)程中有可能造成一定故障和事故,這在高可靠性的要求下是不能允許發(fā)生的。
在實(shí)際的控制領(lǐng)域里,面對(duì)的是復(fù)雜的系統(tǒng),由于系統(tǒng)中變量太多,往往難以正確的描述系統(tǒng)的動(dòng)態(tài),于是工程師便利用各種方法來(lái)簡(jiǎn)化系統(tǒng)狀態(tài),以達(dá)到控制的目的。換言之,傳統(tǒng)的控制理論對(duì)于明確系統(tǒng)有強(qiáng)而有力的控制能力,但對(duì)于過(guò)于復(fù)雜或難以精確描述的系統(tǒng),則顯得無(wú)能為力了。因此便嘗試著以模糊數(shù)學(xué)來(lái)處理這些控制問(wèn)題。本文提出的機(jī)器人行進(jìn)的控制問(wèn)題屬于較復(fù)雜控制系統(tǒng),所以嘗試使用模糊控制規(guī)則來(lái)控制其行進(jìn)過(guò)程是較為可行的。
MATLAB是當(dāng)前國(guó)際控制界最為流行的面向工程與科學(xué)計(jì)算的高級(jí)語(yǔ)言。而且由于模糊邏輯的迅速推廣應(yīng)用,MathWorks公司已經(jīng)添加了模糊邏輯控制工具箱。在多數(shù)情況下,利用MATLAB進(jìn)行建模仿真就是比較合理的選擇[9]。
在MATLAB命令窗口中鍵入命令fuzzy打開(kāi)模糊推理系統(tǒng)編輯器對(duì)其進(jìn)行設(shè)置。在這其中需要獲取機(jī)器人上傳感器的數(shù)據(jù)來(lái)編輯模糊推理的控制過(guò)程。我們主要以測(cè)距聲納和電子磁羅盤(pán)傳感器的數(shù)據(jù),經(jīng)處理后作為模糊控制規(guī)則中的E(誤差),而每隔一個(gè)采樣周期傳感器E的變化率為EC(誤差變化率)。
在MATLAB命令窗口中鍵入命令fuzzy打開(kāi)模糊推理系統(tǒng)編輯器對(duì)其進(jìn)行設(shè)置。
首先設(shè)置為二維的模糊控制器即由E(誤差)和EC(誤差變化率)決定Du(控制行為)。在其中輸入以上三個(gè)參數(shù)的隸屬度函數(shù)。
根據(jù)人工的經(jīng)驗(yàn),可以有如下的模糊控制規(guī)則:
1)如果“偏差”是“正大”,則(if E=PB then U=PB);
2)如果“偏差”是“正中”且“偏差變化”是“正大”或“正小”, 則(if E=PM and EC=PB or EC=PS then U=PM) ;
3)如果“偏差”是“正中”且“偏差變化”是“零”或“負(fù)小”,則(if E=PM and EC=Z0 or EC=NS then U=PM);
4)如果“偏差”是“正中”且“偏差變化”是“負(fù)大”,則 (if E=PM and EC=NB then U=PS);
5)如果“偏差”是“正小”且“偏差變化”是“正大”,則(if E=PS and EC=NM then U=PM);
6)如果“偏差”是“正小”且“偏差變化”是“正小”或“零”,則 (if E=PS and EC=PS or EC=Z0 then U=PS);
7)如果“偏差”是“正小”且“偏差變化”是“負(fù)小”或“負(fù)大”,則 (if E=PS and EC=NS or EC=NB then U=ZO);
8)如果“偏差”是“零”且“偏差變化”是“正大”,則 (if E=Z0 and EC=PB then U=PS) ;
9)“正小”或“零”或“負(fù)小”,則 (if E=Z0 and EC=PS or EC=Z0 or EC=NS then U=ZO) ;
10)如果“偏差”是“零”且“偏差變化”是“負(fù)大”,則 (if E=Z0 and EC=NB then U=NS);
11)如果“偏差”是“負(fù)小”且“偏差變化”是“正大”或“正小”,則 (if E=NS anf EC=PB or EC=PS then U=Z0);
12)如果“偏差”是“負(fù)小”且“偏差變化”是“零”或“負(fù)小”,則(if E=NS and EC=Z0 or EC=NS then U=NS);
13)如果“偏差”是“負(fù)小”且“偏差變化”是“負(fù)大”,則 (if E=NS and EC=NB then U=NM);
14)如果“偏差”是“負(fù)中”且“偏差變化”是“正小”或“零” 或“負(fù)小”,則 (if E=NM and EC=PS or EC=Z0 or EC=NS then U=NM);
15)如果“偏差”是“負(fù)中”且“偏差變化”是“負(fù)大”,則(if E=PM and EC=NB then U=NM);
16)如果“偏差”是“負(fù)中”且“偏差變化”是“正大”,則(if E=PM and EC=PB then U=NS);
17)如果“偏差”是“負(fù)大”且不論“偏差變化”為何值,則 (if E=PB then U=NB)。
根據(jù)上述模糊控制規(guī)則和模糊推理我們可以在規(guī)則編輯器里編輯模糊控制規(guī)則。
打開(kāi)Simulink工具箱建立二維控制系統(tǒng)仿真模型并設(shè)置各參數(shù)如圖3所示,然后運(yùn)行觀察得到波形曲線如圖4所示。
接著建立PID控制系統(tǒng)模型,運(yùn)行后得到響應(yīng)曲線如5圖所示。
對(duì)比PID控制器的系統(tǒng)響應(yīng)曲線,我們看到模糊控制器的系統(tǒng)響應(yīng)曲線響應(yīng)時(shí)間短、比較平穩(wěn),且沒(méi)有超調(diào)。所以使用模糊控制可以實(shí)現(xiàn)對(duì)機(jī)器人行進(jìn)進(jìn)行較好的控制。
用MATLAB建立模糊邏輯模型后用串口和機(jī)器人通訊,將模糊控制模型傳輸給機(jī)器人用于控制其行進(jìn)過(guò)程。
圖3 二維模糊系統(tǒng)Simulink仿真模型
圖4 模糊控制器響應(yīng)曲線
圖5 PID算法響應(yīng)曲線
使用MATLAB中的儀器控制工具箱封裝的串口對(duì)象,控制串行端口與外設(shè)進(jìn)行通信就像操作文件一樣[10]。首先使用serial()函數(shù)創(chuàng)建串口對(duì)象,然后設(shè)置數(shù)據(jù)位、波特率、停止位等屬性,使控制集模塊間和PC機(jī)具有相同的通信模式。然后傳輸數(shù)據(jù)時(shí),使用fopen()函數(shù)打開(kāi)串口,再用fwrite()函數(shù)和fread()函數(shù)以ASCII碼格式或二進(jìn)制對(duì)其進(jìn)行讀寫(xiě)操作。在數(shù)據(jù)通信過(guò)程中,為了了解串口的工作狀態(tài)可以通過(guò)以實(shí)時(shí)的讀串口對(duì)象屬性。數(shù)據(jù)傳輸結(jié)束后用fclose()函數(shù)關(guān)閉串口。主要程序如下:
Clear //清內(nèi)存中的變量和函數(shù)。
u=uint8(zeros(1024,1));
Ser_Port1=serial('COM1') //創(chuàng)建一個(gè)的名為Ser_Port1的串口對(duì)象和PC機(jī)COM1關(guān)聯(lián)Ser_Port1.InputBufferSize=4096;
Ser_Port1.OutputBufferSize=4096;
Ser_Port1.Timeout=10;
Ser_Port1.BaudRate=9600;
Ser_Port1.Parity='even'; //偶校驗(yàn)
Ser_Port1.StopBits=1;
fopen(Ser_Port1); //打開(kāi)串口COM1
fwrite(Ser_Port1,'S');//發(fā)送軟件握手信號(hào)給智能數(shù)據(jù)采集模塊
len_low=fread(Ser_Port1,1,'uint8');
len_high=fread(Ser_Port1,1,'uint8');//讀數(shù)據(jù)長(zhǎng)度
fwrite(Ser_Port1,‘T’);//向數(shù)據(jù)采集模塊發(fā)送數(shù)據(jù)傳送命令
u=fread(Ser_Port1,len_high*256+len_low,'uint8;//讀數(shù)據(jù)
fclose(Ser_Port1) //關(guān)閉串口
delete(Ser_Port1)
clear Ser_Port1 //清除串口對(duì)象,以釋放內(nèi)存空間
plot(u) //根據(jù)所得數(shù)據(jù)繪出波形
grid
由MATLAB仿真實(shí)驗(yàn)可知,模糊控制算法比PID控制算法具有更好的性能。所設(shè)計(jì)的模糊控制器具有更好的實(shí)時(shí)性和可靠性。同時(shí)在自主機(jī)器人的控制系統(tǒng)中,采用高負(fù)載能力和高運(yùn)動(dòng)精度的直流伺服控制,以ARM9芯片作為機(jī)器人的主控制器,實(shí)現(xiàn)了機(jī)器人自主的往目標(biāo)點(diǎn)行進(jìn),并具有定位準(zhǔn)確、快速等高性能。
[1] 張毅,羅元,鄭太雄.移動(dòng)機(jī)器人及其應(yīng)用[M].北京:電子工業(yè)出版社,2007.
[2] 徐國(guó)華,譚民.移動(dòng)機(jī)器人的發(fā)展現(xiàn)狀及其趨勢(shì)[J].機(jī)器人技術(shù)與應(yīng)用,2001,20(3):7-8.
[3] 宋小康,王越超,談大龍,等.全地形移動(dòng)機(jī)器人建模與控制研究綜述[J].機(jī)器人,2007,29(5):505-512.
[4] Ikeuchi A,Takamori T,Kobayashi S,et al.Development of mobilerobots for search and rescue operation systems[M].Proceedings of the 4th International Conference on Field and Service Robotics.Berlin,Germany:Springer-Verlag,2006.519-528.
[6] Olson C F.Probabilistic Self-localization for Mobile Robots[J].IEEE Transactions on Robotics and Automation(S1042-296X),2000,16(1):55-66.
[7] 陳偉,延文杰,周超英,等.兩輪自平衡機(jī)器人控制系統(tǒng)的設(shè)計(jì)[J].傳感器與微系統(tǒng),2008,27(4):117-120.
[8] Wedeward K,Bruder S,Yodaiken V,et al.Low-cost outdoor mobile robot:A plat formfor landmine[C].Detection[A].IEEE MidwestSymposium on Circuits and Systems 1999,131-134.
[9] 徐啟華,等.智能控制課程教學(xué)中應(yīng)用MATLAB的幾點(diǎn)體會(huì)[J].鹽城工業(yè)學(xué)報(bào)(自然科學(xué)版),2005,18(4).
[10] 李永樂(lè),袁一,朱云江,徐友春等.基于MATLAB串行通信的智能車(chē)車(chē)速控制算法研究[J].軍事交通學(xué)院學(xué)報(bào),2009,67(3).