蘇 霄,田景文
(北京聯合大學 信息學院,北京 100101)
自20世紀60年代初發明第一臺工業機器人以來,機器人已經幾乎滲透到世界的各個領域。機器人技術的發展水平已經成為一個衡量國家高新科技水平和工業自動化程度的重要標志。當前生產、生活中已經廣泛應用機器人完成任務,甚至在一些場合中代替人類發揮著重要的作用[1]。
通過自身所帶傳感器對環境進行感知,自主移動機器人能夠實現在非結構環境下,進行行為控制和執行、動態決策與規劃等功能。該高智能化系統與計算機視覺、智能控制以及多智能體(Multi-Agent)、機器人學和機械學等學科緊密聯系,具有重要的軍用及民用價值,是現代機器人學中一個重要而且相當活躍的研究領域[2]。
對移動機器人控制情況受以下幾方面影響:建模[3]、定位[4,5]、控制及穩定性[6,7]、智能技術等。
旅行家II號是目前國內性價比很高的高端機器人,所以本文用其作為受控研究對象。其采用模塊化的設計理念,很好的運動精度的直流伺服控制,更加強調應用,并具有高負載能力。控制計算機選用配有紅外、視覺、角速率陀螺儀等高精度傳感器的工業PC或者是高性能的嵌入式控制器。
其中電子磁羅盤傳感器、測距聲納的數據為機器人行為控制提供依據。
超聲測距的原理采用渡越時間法,表示為:

公式(1)中,D為被測障礙物和移動機器人之間的距離,c表示在介質中聲波的傳輸速率。在空氣中聲波的傳輸速率為:

公式(2)中,T表示絕對溫度,c01=331.4m/s。c在不要求很高的測距精度時可認為是常數。渡越時間法主要是用來測量超聲發射超聲返回的時間間隔t,距離由公式(1)計算得出。
本機器人的伺服控制系統是一個閉環控制系統,其工作流程如圖1所示。

隨著計算機的出現,把原來最先出現在模擬控制系統中的PID 控制器,移植到計算機控制系統中來,將原來的硬件實現的功能用軟件來代替,因此稱作數字PID 控制器,所形成的一整套算法則稱為數字PID 算法。在機器人行進控制中也可使用PID控制算法對其進行控制。其中PID控制規律為:

式(3)中, Kp —比例系數;TI—積分常數;TD—微分常數;u0—控制常量;
在PID中,比例環節的作用是對偏差瞬間作出快速反應。偏差一旦產生,控制器立即產生控制作用,使控制量向減少偏差的方向變化。控制作用的強弱取決于比例系數Kp , Kp越大,控制越強;但是過大的Kp會導致系統震蕩,破壞系統的穩定性。
由上式可以看出,只有當偏差存在時,第一項才有控制量輸出。所以,對大部分被控制對象(如直流電機的調壓調速),需要加上適當的與轉速和機械負載有關的控制常量u0,否則,比例環節將會產生靜態誤差。

圖2 PID控制流程圖
使用這種算法對機器人行進進行控制的缺點是:由于是全量輸出,以至于每次輸出均與過去狀態有關,所以計算時要進行累加工作量。并且,計算機輸出數據對應的是執行機構的實際位置,如果計算機出現故障,輸出數據將會大幅度變化,會引起執行機構的大幅度變化。這樣機器人在行進的過程中有可能造成一定故障和事故,這在高可靠性的要求下是不能允許發生的。
在實際的控制領域里,面對的是復雜的系統,由于系統中變量太多,往往難以正確的描述系統的動態,于是工程師便利用各種方法來簡化系統狀態,以達到控制的目的。換言之,傳統的控制理論對于明確系統有強而有力的控制能力,但對于過于復雜或難以精確描述的系統,則顯得無能為力了。因此便嘗試著以模糊數學來處理這些控制問題。本文提出的機器人行進的控制問題屬于較復雜控制系統,所以嘗試使用模糊控制規則來控制其行進過程是較為可行的。
MATLAB是當前國際控制界最為流行的面向工程與科學計算的高級語言。而且由于模糊邏輯的迅速推廣應用,MathWorks公司已經添加了模糊邏輯控制工具箱。在多數情況下,利用MATLAB進行建模仿真就是比較合理的選擇[9]。
在MATLAB命令窗口中鍵入命令fuzzy打開模糊推理系統編輯器對其進行設置。在這其中需要獲取機器人上傳感器的數據來編輯模糊推理的控制過程。我們主要以測距聲納和電子磁羅盤傳感器的數據,經處理后作為模糊控制規則中的E(誤差),而每隔一個采樣周期傳感器E的變化率為EC(誤差變化率)。
在MATLAB命令窗口中鍵入命令fuzzy打開模糊推理系統編輯器對其進行設置。
首先設置為二維的模糊控制器即由E(誤差)和EC(誤差變化率)決定Du(控制行為)。在其中輸入以上三個參數的隸屬度函數。
根據人工的經驗,可以有如下的模糊控制規則:
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)。
根據上述模糊控制規則和模糊推理我們可以在規則編輯器里編輯模糊控制規則。
打開Simulink工具箱建立二維控制系統仿真模型并設置各參數如圖3所示,然后運行觀察得到波形曲線如圖4所示。
接著建立PID控制系統模型,運行后得到響應曲線如5圖所示。
對比PID控制器的系統響應曲線,我們看到模糊控制器的系統響應曲線響應時間短、比較平穩,且沒有超調。所以使用模糊控制可以實現對機器人行進進行較好的控制。
用MATLAB建立模糊邏輯模型后用串口和機器人通訊,將模糊控制模型傳輸給機器人用于控制其行進過程。

圖3 二維模糊系統Simulink仿真模型

圖4 模糊控制器響應曲線

圖5 PID算法響應曲線
使用MATLAB中的儀器控制工具箱封裝的串口對象,控制串行端口與外設進行通信就像操作文件一樣[10]。首先使用serial()函數創建串口對象,然后設置數據位、波特率、停止位等屬性,使控制集模塊間和PC機具有相同的通信模式。然后傳輸數據時,使用fopen()函數打開串口,再用fwrite()函數和fread()函數以ASCII碼格式或二進制對其進行讀寫操作。在數據通信過程中,為了了解串口的工作狀態可以通過以實時的讀串口對象屬性。數據傳輸結束后用fclose()函數關閉串口。主要程序如下:
Clear //清內存中的變量和函數。
u=uint8(zeros(1024,1));
Ser_Port1=serial('COM1') //創建一個的名為Ser_Port1的串口對象和PC機COM1關聯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');//發送軟件握手信號給智能數據采集模塊
len_low=fread(Ser_Port1,1,'uint8');
len_high=fread(Ser_Port1,1,'uint8');//讀數據長度
fwrite(Ser_Port1,‘T’);//向數據采集模塊發送數據傳送命令
u=fread(Ser_Port1,len_high*256+len_low,'uint8;//讀數據
fclose(Ser_Port1) //關閉串口
delete(Ser_Port1)
clear Ser_Port1 //清除串口對象,以釋放內存空間
plot(u) //根據所得數據繪出波形
grid
由MATLAB仿真實驗可知,模糊控制算法比PID控制算法具有更好的性能。所設計的模糊控制器具有更好的實時性和可靠性。同時在自主機器人的控制系統中,采用高負載能力和高運動精度的直流伺服控制,以ARM9芯片作為機器人的主控制器,實現了機器人自主的往目標點行進,并具有定位準確、快速等高性能。
[1] 張毅,羅元,鄭太雄.移動機器人及其應用[M].北京:電子工業出版社,2007.
[2] 徐國華,譚民.移動機器人的發展現狀及其趨勢[J].機器人技術與應用,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] 陳偉,延文杰,周超英,等.兩輪自平衡機器人控制系統的設計[J].傳感器與微系統,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] 徐啟華,等.智能控制課程教學中應用MATLAB的幾點體會[J].鹽城工業學報(自然科學版),2005,18(4).
[10] 李永樂,袁一,朱云江,徐友春等.基于MATLAB串行通信的智能車車速控制算法研究[J].軍事交通學院學報,2009,67(3).