蔡 蒂,丁曉飛,曲德宇,張 鐵
(1.廣州供電局有限公司,廣州 510620;2.華南理工大學(xué)機(jī)械與汽車工程學(xué)院,廣州 510640)
移動(dòng)機(jī)器人運(yùn)動(dòng)控制系統(tǒng)通常包含2 部分內(nèi)容,其一是完成所需的控制功能和算法的定義,其二是這些功能在硬件和軟件上的實(shí)現(xiàn)[1-2]。運(yùn)動(dòng)控制是影響機(jī)器人性能的一個(gè)重要指標(biāo),國(guó)內(nèi)外的很多相關(guān)學(xué)者都對(duì)移動(dòng)機(jī)器人的運(yùn)動(dòng)控制系統(tǒng)作了大量的研究。
人們?cè)跈C(jī)器人方面采用多種多樣的控制方式。有的為自主移動(dòng)機(jī)器車設(shè)計(jì)了一種機(jī)器人速度控制系統(tǒng),整個(gè)系統(tǒng)以安全為出發(fā)點(diǎn),以Galil DMC-1000 為該控制系統(tǒng)的主控制器,其能夠完成對(duì)環(huán)境信息的處理,又能夠使用PID 控制算法完成對(duì)驅(qū)動(dòng)電機(jī)的控制[3-4];有的團(tuán)隊(duì)設(shè)計(jì)出一個(gè)互耦運(yùn)動(dòng)控制器[5],用于對(duì)移動(dòng)機(jī)器人2個(gè)獨(dú)立驅(qū)動(dòng)電機(jī)的控制,其控制原理是對(duì)驅(qū)動(dòng)電機(jī)的控制不僅依賴于環(huán)境信息和該電機(jī)的運(yùn)動(dòng)狀態(tài),而且還參考另一驅(qū)動(dòng)電機(jī)的運(yùn)動(dòng)狀態(tài),該控制器能減少驅(qū)動(dòng)電機(jī)的固有誤差,具有較好的控制效果;又比如一種小型足球機(jī)器人TINYPHOON,該機(jī)器人控制系統(tǒng)以DSP芯片為控制核心,采用PID 控制算法,有優(yōu)越的運(yùn)動(dòng)控制性能[6-7];還有一種基于單片機(jī)結(jié)合專用運(yùn)動(dòng)控制芯片的移動(dòng)機(jī)器人控制器[8],采用PID控制算法,具有模塊化的優(yōu)點(diǎn),但硬件系統(tǒng)不夠簡(jiǎn)潔,控制精度也有待提高;關(guān)于機(jī)器人的運(yùn)動(dòng)控制算法的研究,有學(xué)者提出了單神經(jīng)元自適應(yīng)PID 控制算法和基于Kalman 濾波的PID 控制算法,以及參數(shù)自調(diào)模糊控制算法[9-11];有的移動(dòng)機(jī)器人采用高性能的ARM7 芯片,滿足所需生成PWM信號(hào)的精度要求[12-13]。
機(jī)器人的運(yùn)動(dòng)控制通常采用PID 控制,也有一些成果介紹了模糊控制。PID和模糊控制各有優(yōu)缺點(diǎn),如果使用PID控制,飽和性局限了其使用,另外控制的實(shí)時(shí)性也不能得到保障[14]。采用模糊控制,控制精度不夠高,不能滿足控制的要求。機(jī)器人在運(yùn)動(dòng)過程中,各種情況都處在變化之中,比如速度的目標(biāo)值以及機(jī)器人所處的環(huán)境都在變化過程之中。除此之外,機(jī)器人的轉(zhuǎn)動(dòng)慣量和重心也在不斷變化之中,并且其底盤驅(qū)動(dòng)輪的驅(qū)動(dòng)情況也存在差異[15]。
本文結(jié)合所研制的輪式移動(dòng)機(jī)器人,提出了一種基于模糊自整定PID 控制的機(jī)器人運(yùn)動(dòng)軌跡控制方法,并基于通用計(jì)算機(jī)控制的機(jī)器人控制系統(tǒng)進(jìn)行了實(shí)驗(yàn)驗(yàn)證。
移動(dòng)機(jī)器人的底盤結(jié)構(gòu)如圖1所示,位于前面的是2個(gè)隨動(dòng)萬向輪,主驅(qū)動(dòng)輪分別是位于后方的左驅(qū)動(dòng)輪和右驅(qū)動(dòng)輪,分別通過減速器同各自的驅(qū)動(dòng)電機(jī)相連接。移動(dòng)機(jī)器人的左右驅(qū)動(dòng)輪是固定不可轉(zhuǎn)向的,并且兩者之間由不同的控制模塊進(jìn)行控制,可以單獨(dú)控制各自的速度,相互獨(dú)立;在左右電機(jī)上分別安裝速度傳感器,用以獲取驅(qū)動(dòng)輪的速度。
圖1 機(jī)器人的底盤結(jié)構(gòu)
圖2 機(jī)器人的運(yùn)動(dòng)學(xué)模型
移動(dòng)機(jī)器人采用獨(dú)立雙輪驅(qū)動(dòng)模式,左右的速度控制器通過獨(dú)立控制左右驅(qū)動(dòng)輪的轉(zhuǎn)速來實(shí)現(xiàn)機(jī)器人前進(jìn)、后退、轉(zhuǎn)向等各種基本的動(dòng)作。
圖2 所示為兩驅(qū)動(dòng)輪的差動(dòng)式移動(dòng)機(jī)器人在某一時(shí)刻的運(yùn)動(dòng)示意圖,XOY為絕對(duì)坐標(biāo)系,XvOvYv為機(jī)器人車體局部坐標(biāo),Vov為機(jī)器人質(zhì)心的線速度,L為兩驅(qū)動(dòng)輪之間的距離,O′為該時(shí)刻機(jī)器人的速度瞬心,θ為該時(shí)刻機(jī)器人的姿態(tài)角,ωV為該時(shí)刻機(jī)器人的轉(zhuǎn)動(dòng)角速度,VL和VR分別為該時(shí)刻左右驅(qū)動(dòng)輪的線速度,R 為該時(shí)刻機(jī)器人相對(duì)于速度瞬心的回轉(zhuǎn)半徑。
在絕對(duì)坐標(biāo)系中,假定移動(dòng)機(jī)器人的左右兩驅(qū)動(dòng)輪與地面之間無滑動(dòng),也沒有側(cè)移,則運(yùn)動(dòng)學(xué)方程為:
用左右驅(qū)動(dòng)輪的線速度來對(duì)角速度進(jìn)行描述:
于是:
車體某一時(shí)刻的位姿可以表示為:
由式(2)~(3)可知,當(dāng)VR(t)和VL(t)相等時(shí),機(jī)器人的角速度為0,回轉(zhuǎn)半徑無窮大,機(jī)器人實(shí)現(xiàn)直線運(yùn)動(dòng),當(dāng)機(jī)器人的角速度和回轉(zhuǎn)半徑均不為0,機(jī)器人實(shí)現(xiàn)向左或向右轉(zhuǎn)彎運(yùn)動(dòng),當(dāng)VR(t)=-VL(t)時(shí),機(jī)器人的角速度不為0,回轉(zhuǎn)半徑為0,于是,機(jī)器人做原地轉(zhuǎn)彎運(yùn)動(dòng)。由式(4)~(5)可知,通過檢測(cè)指定時(shí)間內(nèi)的左右驅(qū)動(dòng)輪的速度,可以計(jì)算出某一時(shí)刻機(jī)器人在工作環(huán)境中的位姿。由上面的分析可得,通過控制機(jī)器人左右驅(qū)動(dòng)輪的速度就可以很方便地實(shí)現(xiàn)機(jī)器人的各種運(yùn)動(dòng)狀態(tài),進(jìn)而來跟蹤期望的運(yùn)動(dòng)路徑。所研究的機(jī)器人的姿態(tài)角θ通過電子羅盤獲得,機(jī)器人的位移通過機(jī)器人的里程計(jì)獲得。
把比例、積分和微分集合到一起對(duì)操作對(duì)象進(jìn)行控制為PID控制[16],其控制系統(tǒng)的原理如圖3所示。
圖3 PID運(yùn)動(dòng)控制系統(tǒng)原理圖
離散的PID表達(dá)式為:
式中:k為采樣序號(hào),k=0,1,2,…;u(k)為第k次采樣時(shí)刻的計(jì)算機(jī)輸出值;e(k)為第k次采樣時(shí)刻的輸入偏差值;e(k-1)為第k-1 次采樣時(shí)刻的輸入偏差值;KI為積分系數(shù)KI=KPT/TI;KD為微分系數(shù)KD=KPTD/T。
根據(jù)遞推方式整理,可以進(jìn)一步得出增量式PID 的控制算法:
用式(6)減去式(7),可得:
式中:Δe(k)=e(k)-e(k-1)。
在機(jī)器人運(yùn)動(dòng)控制中,要整定PID參數(shù)KP、KI、KD。
移動(dòng)機(jī)器人的具體控制運(yùn)行過程中,很有多因素是不確定的,控制器參數(shù)隨著環(huán)境的改變而改變。當(dāng)被控對(duì)象發(fā)生變化時(shí),需要調(diào)節(jié)器參數(shù)做出相應(yīng)的調(diào)整。如果采用傳統(tǒng)的PID控制方法,對(duì)參數(shù)的調(diào)整修改需要耗費(fèi)大量的時(shí)間和精力[17]。既要保證控制的實(shí)時(shí)性又要保證控制的精確度,因此需要結(jié)合PID控制和模糊控制[18-19]。本文提出一種模糊參數(shù)自整定算法實(shí)現(xiàn)PID參數(shù)調(diào)整。
3.2.1 控制參數(shù)模糊控制器結(jié)構(gòu)
在對(duì)機(jī)器人的控制參數(shù)采用模糊控制時(shí),首先會(huì)給定一個(gè)控制目標(biāo),通過移動(dòng)輪末端的傳感器測(cè)得左右輪實(shí)際速度,目標(biāo)轉(zhuǎn)速和實(shí)際轉(zhuǎn)速作差得轉(zhuǎn)速偏差。該模糊控制器采用雙輸入單輸出結(jié)構(gòu),n0(k)為系統(tǒng)給定速度值,n(k)為電機(jī)轉(zhuǎn)速的反饋值;Ee、Eec為e和ec的量化值。
系統(tǒng)的模糊變量一共有3個(gè),分別為:偏差變化率ec、輸入偏差e和控制量u。按照控制原理來看,控制系統(tǒng)中的變量越多,系統(tǒng)的控制精度更高,控制更為精細(xì)和復(fù)雜,相應(yīng)的計(jì)算量和計(jì)算時(shí)間也增大,計(jì)算難度提高??刂破鲗?duì)偏差、偏差變化率、控制量的模糊集及論域作如下定義。
圖4 控制參數(shù)模糊控制器結(jié)構(gòu)
Eec和U的模糊集均為:{正大,負(fù)大,正中,負(fù)中,正小,負(fù)小,零},即{PB,NB,PM,NM,PS,NS,O}。
Ee的模糊集為:{正大,負(fù)大,正中,負(fù)中,正小,負(fù)小,負(fù)零,正零},即{PB,NB,PM,NM,PS,NS,NO,PO}。
Ee和Eec的論域均為:{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6}。
U 的論域?yàn)椋簕-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7}。
上述的模糊集選取8 個(gè)元素。設(shè)偏差e的基本論域?yàn)閧-xe,xe},偏差變化率ec的基本論域?yàn)閧-xec,xec},輸出量的基本論域?yàn)閧-yu,yu},則偏差的量化因子Ke=6/xe,偏差變化率的量化因子Kec=6/xec,輸出量的比例因子Ku=yu/7;輸出量的比例因子在解模糊過程中也需要用到,實(shí)現(xiàn)從控制量的模糊集論域到基本論域的變換,即解模糊后的精確控制值Δu=yui=Ku·u′。
3.2.2 模糊控制規(guī)則的建立
為了保證模糊控制的快速性和穩(wěn)定性,需要滿足一定的規(guī)則:偏差小保證穩(wěn)定性;偏差大減小偏差;當(dāng)偏差負(fù)且正大或正中時(shí),應(yīng)控制變化率為0,不再增大控制量,避免系統(tǒng)出現(xiàn)超調(diào)現(xiàn)象[20]。模糊條件的數(shù)量可以根據(jù)Eec和Ee元素的乘積相得,共56條,其規(guī)則如下。
其中,Ai、Bi分別為輸入論域Ee、Eec上的模糊子集,Ci為輸出論域U上的模糊子集。
為了更加清晰明了地體現(xiàn)控制規(guī)則,把56條模糊控制規(guī)則歸納為如表1所示的控制規(guī)則表。
表1 U~ 的控制規(guī)則
3.2.3 模糊變量隸屬度表的確定
隸屬函數(shù)將量化值Ee和Eec模糊化為模糊判決的輸入量。隸屬函數(shù)曲線斜率越高分辨率越高,控制靈敏度越好。曲線斜率小穩(wěn)定性好,更平穩(wěn)。模糊集的分辨率要根據(jù)誤差的大小來選擇,誤差越大分辨率越低,誤差越小分辨率越高[21]。
隸屬函數(shù)在眾多形狀中,三角形的隸屬函數(shù)具有特殊性。偏差、偏差變化率和輸出控制量的隸屬函數(shù)均選擇為三角函數(shù)。Ee的隸屬度表如表2所示,Eec的隸屬度表如表3所示,U 的隸屬度表如表4所示。
表2 Ee 的隸屬度表
表3 Eec 的隸屬度表
表4 U 的隸屬度表
3.2.4 模糊控制表的建立
由上述模糊控制器的56條模糊控制規(guī)則,共有56條模糊關(guān)系;每條規(guī)則的模糊關(guān)系如式(9)所示,總的模糊關(guān)系如式(10)所示。由第i條語句所確定的模糊關(guān)系為:
模糊判決由式(11)實(shí)現(xiàn),判決結(jié)果經(jīng)過查詢隸屬函數(shù)后得到模糊控制查詢表中對(duì)應(yīng)位置的值。
式中:符號(hào)“°”為模糊矩陣的乘法運(yùn)算,其與普通矩陣的乘法運(yùn)算過程相似,但將兩數(shù)間相減改為“取小”,相加改為“取大”運(yùn)算;為的行向量依次排列而成的單列矩陣。按照最大隸屬度多控制器進(jìn)行模糊決策,則有:
根據(jù)Ee、Eec的論域量化等級(jí),可得如表5所示的模糊控制查詢表。
表5 u′模糊控制查詢表
由模糊控制查詢表得到的u′還是論域U中的一個(gè)等級(jí)值,還須乘上輸出量量化因子Ku,即Δu=u′·Ku,才是經(jīng)模糊控制算法后得到的確切控制增量。
3.3.1 模糊控制程序
把模糊控制查詢表制成文件形式存儲(chǔ)起來,在后續(xù)根據(jù)輸入的情況來查表選擇具體的控制方式。具體的程序?qū)崿F(xiàn)過程:讀取給定驅(qū)動(dòng)輪的速度值n0(k)和測(cè)量到的速度值n(k),得出偏差e偏差變化率ec,再量化和模糊處理,再得到模糊值;根據(jù)此值查詢模糊控制表,得到控制量的模糊量,把該模糊量乘上比例因子轉(zhuǎn)換為精確量Δu,再同前一時(shí)刻控制量u(k-1)相加可得該時(shí)刻的實(shí)際控制量u(k)=u(k-1)+Δu(k)。算法的程序流程圖如圖5所示。
圖5 模糊控制算法程序流程圖
3.3.2 模糊自整定PID控制程序
模糊自整定PID控制程序可以看作是模糊控制程序和PID控制的疊加,在程序設(shè)計(jì)之前,先把的模糊控制查詢表制成文件形式存儲(chǔ)起來,控制程序根據(jù)輸入的偏差和偏差變化率量化值,查詢得到需要的控制策略,進(jìn)而得到整定后的PID控制程序三參數(shù),再通過PID控制,完成系統(tǒng)控制要求。具體的程序流程如圖6所示。
圖6 模糊自整定PID控制算法流程圖
搭建了移動(dòng)機(jī)器人實(shí)驗(yàn)平臺(tái),如圖7所示,機(jī)身有2個(gè)直流電機(jī)獨(dú)立控制的5 寸驅(qū)動(dòng)輪和1 個(gè)直徑40 mm 隨動(dòng)的萬象輪,驅(qū)動(dòng)輪上含有編碼器,可以反饋移動(dòng)機(jī)器人運(yùn)動(dòng)速度。周邊有6 個(gè)紅外傳感器,底盤身上安裝控制卡、驅(qū)動(dòng)器、開關(guān)和電池。骨架上有2個(gè)超聲波傳感器,1個(gè)電子羅盤和視覺傳感器,可進(jìn)行360°的旋轉(zhuǎn)對(duì)周邊的環(huán)境進(jìn)行監(jiān)測(cè)。
圖7 移動(dòng)機(jī)器人平臺(tái)
移動(dòng)機(jī)器人的控制系統(tǒng)采用閉環(huán)結(jié)構(gòu),如圖8 所示,上位機(jī)發(fā)出的指令具有最高優(yōu)先級(jí),傳輸給控制卡解析后,帶動(dòng)驅(qū)動(dòng)器,使得直流電機(jī)轉(zhuǎn)動(dòng),帶動(dòng)驅(qū)動(dòng)輪旋轉(zhuǎn)即機(jī)器人的運(yùn)動(dòng)。從動(dòng)輪也隨之運(yùn)動(dòng),編碼器得出主動(dòng)輪的轉(zhuǎn)速和從動(dòng)輪的轉(zhuǎn)向角,再返回給控制卡。
圖8 控制系統(tǒng)閉環(huán)回路
在此平臺(tái)上進(jìn)行機(jī)器人運(yùn)動(dòng)路徑跟蹤實(shí)驗(yàn)。預(yù)設(shè)定了閉合的三角形的機(jī)器人的運(yùn)動(dòng)軌跡,如圖9(a)所示。機(jī)器人分別采用純PID 控制和模糊自整定PID 控制對(duì)預(yù)設(shè)的路徑上分別進(jìn)行3 次跟蹤實(shí)驗(yàn),可得機(jī)器人的實(shí)際運(yùn)動(dòng)軌跡,如圖9(b)~9(c)所示,通過實(shí)驗(yàn)數(shù)據(jù)分析,PID控制中終點(diǎn)定位誤差平均值為(406,-630),運(yùn)動(dòng)過程中x 軸平均誤差為344 mm,y軸平均誤差為-547 mm。模糊自整定PID控制中終點(diǎn)定位誤差平均值為(22,46),運(yùn)動(dòng)過程中x軸平均誤差為56 mm,y 軸平均誤差為37 mm。通過對(duì)比兩種控制方式的軌跡跟蹤可知,模糊自整定PID控制有效提高了控制精度。
圖9 移動(dòng)機(jī)器人運(yùn)動(dòng)路徑跟蹤實(shí)驗(yàn)
以移動(dòng)機(jī)器人運(yùn)動(dòng)控制為研究對(duì)象,采用了PID 控制和模糊控制二者相結(jié)合的方法,提出了一種PID 參數(shù)模糊自整定控制。一方面建立了相應(yīng)的模糊控制規(guī)則,根據(jù)速度偏差調(diào)整控制要求,另一方面建立了隸屬度表和模糊控制表,根據(jù)實(shí)際的控制變量選擇合適的參數(shù)。
最后在移動(dòng)機(jī)器人平臺(tái)上對(duì)比了PID控制和PID參數(shù)模糊自整定控制的軌跡跟蹤實(shí)驗(yàn),通過終點(diǎn)定位和路徑誤差的對(duì)比,模糊自整定PID 控制有效提高了跟蹤精度,驗(yàn)證了模糊自整定PID控制的可行性和準(zhǔn)確性。