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