《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 基于模糊控制的移動(dòng)機(jī)器人FPGA實(shí)現(xiàn)

基于模糊控制的移動(dòng)機(jī)器人FPGA實(shí)現(xiàn)

2009-01-05
作者:包 明,張 睿,余成波

??? 摘 要: 針對(duì)輪式移動(dòng)機(jī)器人尋線行走的跟蹤控制要求,提出一種通用的移動(dòng)機(jī)器人行走模糊控制設(shè)計(jì)方法,并以FPGA為核心器件,通過(guò)硬件描述語(yǔ)言(VHDL)實(shí)現(xiàn)移動(dòng)機(jī)器人模糊控制系統(tǒng),充分發(fā)揮模糊控制及可編程邏輯器件的優(yōu)點(diǎn)。實(shí)驗(yàn)表明,該移動(dòng)機(jī)器人具有自動(dòng)糾偏、尋線準(zhǔn)確、高集成度和高可靠性的特點(diǎn)。
??? 關(guān)鍵詞: 模糊控制;機(jī)器人;FPGA;VHDL;尋線

?

??? 移動(dòng)機(jī)器人是一種集環(huán)境感知、動(dòng)態(tài)決策與規(guī)劃、行為控制與執(zhí)行等多項(xiàng)功能于一體的智能化機(jī)器系統(tǒng),具有大延遲、高度非線性的特點(diǎn)。其建立精確的數(shù)學(xué)模型十分困難,在進(jìn)行路徑跟蹤控制時(shí),參數(shù)的變化對(duì)系統(tǒng)模型影響較大。傳統(tǒng)的機(jī)器人運(yùn)動(dòng)控制常采用PID控制器,將機(jī)器人的航向角誤差和誤差變化率作為控制器的輸入,控制器的輸出作為機(jī)器人的駕駛角。而在實(shí)際中,機(jī)器人的航向角還與其速度、轉(zhuǎn)動(dòng)慣量、重心位置、前后輪側(cè)偏系數(shù)、驅(qū)動(dòng)輪直徑和摩擦力、實(shí)際道路情況等諸多變化且很難確定的因素有關(guān)。這使得控制器參數(shù)設(shè)定和調(diào)整極為困難。針對(duì)這些問(wèn)題,本文在輪式移動(dòng)機(jī)器人尋線跟蹤控制中,提出移動(dòng)機(jī)器人的模糊控制算法,并且利用現(xiàn)場(chǎng)可編程門陣列(FPGA)器件來(lái)實(shí)現(xiàn)模糊算法的控制器。使得該控制器集成度高、速度快、效率高,易于現(xiàn)場(chǎng)實(shí)現(xiàn)多重配置,易于實(shí)現(xiàn)可編程片上系統(tǒng)(SoPC)。由于整個(gè)控制系統(tǒng)由硬件實(shí)現(xiàn),因此能滿足機(jī)器人實(shí)時(shí)性、快速性和精確性的控制要求。
1 移動(dòng)機(jī)器人結(jié)構(gòu)
1.1 機(jī)器人行進(jìn)機(jī)構(gòu)

??? 機(jī)器人應(yīng)能在任意區(qū)域內(nèi)沿引導(dǎo)線行進(jìn),自動(dòng)繞開(kāi)障礙并停在指定地點(diǎn)。機(jī)器人在地面上的移動(dòng)方式為三車輪式,前輪輔助后輪驅(qū)動(dòng)的差動(dòng)式行走方式。前輪為隨動(dòng)輪(萬(wàn)向輪),僅僅起到支撐車體的作用,無(wú)任何導(dǎo)向作用。后輪分別為兩個(gè)獨(dú)立的驅(qū)動(dòng)輪,利用它們的轉(zhuǎn)速差來(lái)控制機(jī)器人的運(yùn)動(dòng)方向。這種組合的特點(diǎn)是結(jié)構(gòu)簡(jiǎn)單、易于控制,而且當(dāng)兩個(gè)驅(qū)動(dòng)輪以相同速度、相反方向轉(zhuǎn)動(dòng)時(shí),車體能繞兩個(gè)驅(qū)動(dòng)輪連線的中點(diǎn)自轉(zhuǎn),易于定位。對(duì)驅(qū)動(dòng)輪采用直流步進(jìn)電機(jī)進(jìn)行驅(qū)動(dòng)。步進(jìn)電機(jī)構(gòu)成的驅(qū)動(dòng)系統(tǒng)具有結(jié)構(gòu)簡(jiǎn)單、運(yùn)行可靠、控制方便、控制性能好等特點(diǎn),常作為一種數(shù)字伺服執(zhí)行元件廣泛應(yīng)用于數(shù)控機(jī)床、自動(dòng)化儀表、機(jī)器人等領(lǐng)域,不但可以構(gòu)成開(kāi)環(huán)控制系統(tǒng),還可以應(yīng)用于閉環(huán)、半閉環(huán)伺服控制系統(tǒng)中,尤其在強(qiáng)調(diào)速度控制、位置控制的伺服系統(tǒng)中。
1.2 檢測(cè)裝置
??? 在機(jī)器人行進(jìn)機(jī)構(gòu)底盤上的前后方分別安裝一排光纖或光電傳感器用于引導(dǎo)線的檢測(cè),如圖1所示。根據(jù)前后排傳感器的在線檢測(cè)狀態(tài),可以計(jì)算出此刻機(jī)器人相對(duì)于引導(dǎo)線(白線)的偏移量和偏離角度。也就是指機(jī)器人車體中心軸線和場(chǎng)地引導(dǎo)線中心線的夾角。

?


??? 在圖1中前后排各有9個(gè)光纖傳感器,后排的9個(gè)傳感器檢測(cè)點(diǎn)安裝在兩個(gè)驅(qū)動(dòng)輪的軸線上,檢測(cè)機(jī)器人與引導(dǎo)線的偏移量。前排的9個(gè)傳感器檢測(cè)點(diǎn)檢測(cè)機(jī)器人與引導(dǎo)線的偏離角度。為了擴(kuò)大機(jī)器人的偏差糾錯(cuò)能力,檢測(cè)點(diǎn)安裝成非線性的排列結(jié)構(gòu),且相對(duì)于引導(dǎo)線中心線成對(duì)稱分布,中間的三個(gè)檢測(cè)點(diǎn)分布在引導(dǎo)線的中間和左右兩邊,以便使檢測(cè)點(diǎn)相對(duì)于引導(dǎo)線的位置變化較為敏感。其余兩側(cè)的12個(gè)檢測(cè)點(diǎn)分布較為分散,主要是為了在機(jī)器人轉(zhuǎn)彎或偏差過(guò)大時(shí)“捕捉”引導(dǎo)線。
2 模糊控制器設(shè)計(jì)
??? 根據(jù)移動(dòng)機(jī)器人的結(jié)構(gòu)和剛體平動(dòng)原理,對(duì)于兩輪驅(qū)動(dòng)的移動(dòng)機(jī)器人,主要控制其角速度和線速度,前者完成移動(dòng)機(jī)器人的轉(zhuǎn)向控制,后者實(shí)現(xiàn)機(jī)器人前進(jìn)速度的控制,利用機(jī)器人兩個(gè)獨(dú)立驅(qū)動(dòng)輪的轉(zhuǎn)速來(lái)控制機(jī)器人的運(yùn)行和運(yùn)動(dòng)方向。輪式機(jī)器人作為被控對(duì)象,具有大慣性、純滯后、時(shí)變的特點(diǎn)。過(guò)去常用PID 算法,如果條件稍有變化,系統(tǒng)參數(shù)(T、KP、Ti、Td)必須改變,否則難以達(dá)到滿意的效果。而模糊控制基于模糊集合理論,模仿人的控制經(jīng)驗(yàn),運(yùn)用模糊推理方法根據(jù)輸出直接映射出被控對(duì)象的控制量,它不依賴于被控對(duì)象的數(shù)學(xué)模型而實(shí)現(xiàn)其控制,具有魯棒性好的特點(diǎn),很適合輪式機(jī)器人這樣的大慣性非線性系統(tǒng)。因此采用模糊控制算法對(duì)輪式機(jī)器人進(jìn)行控制。
??? 為了滿足機(jī)器人沿引導(dǎo)線行走的目的,可以根據(jù)光電檢測(cè)傳感器檢測(cè)車體偏離引導(dǎo)線的大小來(lái)調(diào)整左右驅(qū)動(dòng)步進(jìn)電機(jī)的行進(jìn)速度,隨時(shí)調(diào)整機(jī)器人的行進(jìn)路線,從而使機(jī)器人沿引導(dǎo)線行進(jìn)。下面根據(jù)移動(dòng)機(jī)器人的行走方式,介紹模糊算法控制器的設(shè)計(jì)方法。
??? 首先把移動(dòng)機(jī)器人車體底盤上的前后光電檢測(cè)傳感器進(jìn)行編號(hào)(如圖1所示)。這些檢測(cè)點(diǎn)的編號(hào)可作為機(jī)器人偏離引導(dǎo)線的狀態(tài)值, 對(duì)于本系統(tǒng)模糊控制器采用雙變量二維控制方法,控制器的兩輸入為前后光電檢測(cè)點(diǎn)的輸入編號(hào);輸出為左右步進(jìn)電機(jī)驅(qū)動(dòng)脈沖數(shù)。模糊控制器的輸入量的模糊子集選取為:{LB,LS,ZO,RS,RB},對(duì)應(yīng)意義為{左大,左小,中心,右小,右大}。輸出量的模糊子集選取為:{NB,NM,NS,ZO,PS,PM,PB},其對(duì)應(yīng)為{負(fù)大,負(fù)中,負(fù)小,零,正小,正中,正大}。
??? 根據(jù)控制規(guī)則及相應(yīng)的控制變量隸屬度定義, 給出了如圖2所示的輸入變量前檢測(cè)點(diǎn)位置(BF)和后檢測(cè)點(diǎn)位置(BA)的隸屬度函數(shù)。輸出變量左、右步進(jìn)電機(jī)轉(zhuǎn)速的隸屬度函數(shù)如圖3所示。通過(guò)仿真實(shí)驗(yàn)分析,得到左電機(jī)轉(zhuǎn)速控制規(guī)則表(右電機(jī)轉(zhuǎn)速控制規(guī)則表相似)如表1。

?

?

?


??? 在完成以上模糊控制器的模糊輸入量、模糊推理決策模塊后,再進(jìn)行模糊輸出接口設(shè)計(jì)。模糊輸出接口是將輸出的模糊控制量轉(zhuǎn)化為精確量后去控制執(zhí)行機(jī)構(gòu),使被控對(duì)象的值接近參考值。反模糊化采用重心法, 通過(guò)多次實(shí)驗(yàn)進(jìn)行修正,得到如表2所示的左步進(jìn)電機(jī)轉(zhuǎn)速控制信號(hào)輸出表(用十六進(jìn)制數(shù)表示)。右步進(jìn)電機(jī)轉(zhuǎn)速控制信號(hào)輸出表也可用類似方法得到。

?


??? 從以上模糊控制器的設(shè)計(jì)過(guò)程可知,根據(jù)機(jī)器人車體底盤上的前后光電檢測(cè)點(diǎn)的狀態(tài)作為輸入量進(jìn)行模糊化,在模糊規(guī)則約束下經(jīng)模糊推理,得到精確的控制變量。模糊控制器承擔(dān)的任務(wù)實(shí)際上是從輸入映射到模糊控制表對(duì)應(yīng)的輸出量。實(shí)際應(yīng)用模糊控制場(chǎng)合時(shí)大多數(shù)采用查表法來(lái)設(shè)計(jì)模糊控制器,通過(guò)離線計(jì)算與實(shí)際控制經(jīng)驗(yàn)而得到一個(gè)表示輸入量精確值與輸出量精確值之間的控制表,然后將得到的控制表移植到計(jì)算機(jī)、其他專用或通用模糊控制芯片中,這種映射在查表時(shí)是一一對(duì)應(yīng)的邏輯關(guān)系;現(xiàn)場(chǎng)控制時(shí),只需要用軟件或硬件電路來(lái)查找控制表,獲得所需的控制量去控制執(zhí)行機(jī)構(gòu)。
3 模糊控制器的FPGA實(shí)現(xiàn)
??? 現(xiàn)場(chǎng)可編程門陣列(FPGA)是近年來(lái)發(fā)展迅速的大規(guī)??删幊踢壿嬈骷?,它具有設(shè)計(jì)周期短、片內(nèi)資源豐富、可無(wú)限次加載和現(xiàn)場(chǎng)可編程等特點(diǎn)。在FPGA上實(shí)現(xiàn)模糊控制器是一種介于專用集成電路(ASIC)和通用處理器之間的方案,具有電子產(chǎn)品的高速度、高可靠性、小型化、集成化、低功耗、保密性能好、具有自主知識(shí)產(chǎn)權(quán)、產(chǎn)品上市快等優(yōu)勢(shì)。
??? 用可編程邏輯器件完成模糊控制器的任務(wù)有多種方法,可以用VHDL語(yǔ)言設(shè)計(jì)一個(gè)ROM將模糊控制輸出表的數(shù)據(jù)寫入其中,也可以把模糊控制輸出量用邏輯表達(dá)式表示出來(lái),通過(guò)脈沖分配器驅(qū)動(dòng)步進(jìn)電機(jī)。根據(jù)表2用VHDL語(yǔ)言設(shè)計(jì)的ROM模糊控制輸出模塊如下:
??? LIBRARY ieee;
?? ?USE ieee.std_logic_1164.all;
?? ?USE ieee.std_logic_arith.all;
?? ?USE ieee.std_logic_unsigned.all;
?? ?ENTITY Fuzzy_rom IS
PORT (BF_b,BA_b:IN STD_LOGIC_VECTOR(3 downto 0);
??????? nena??:IN?STD_LOGIC;
?? ???? L_out??:OUT INTEGER RANGE 0 TO 6000);
END Fuzzy_rom;
ARCHITECTURE a OF Fuzzy_rom IS
?? ?SIGNAL?addr:STD_LOGIC_VECTOR(7 downto 0);
BEGIN
?? ?addr<=BA_b&BF_b;
?? ?L_out<=
?? ?16#DB6#? when addr=X″00″ and nena=′0′ else
?? ?16#CBC#? when addr=X″01″ and nena=′0′ else
?? ?16#BF4#? when addr=X″02″ and nena=′0′ else
?? ?16#BCC#? when addr=X″03″ and nena=′0′ else
?? ?16#BB8#? when addr=X″04″ and nena=′0′ else
?? ?16#BAE#? when addr=X″05″ and nena=′0′ else
?? ?16#B72#? when addr=X″06″ and nena=′0′ else
?? ?16#AE1#? when addr=X″07″ and nena=′0′ else
?? ?16#A6E#? when addr=X″08″ and nena=′0′ else
??????????????????????????……
??? 16#10BE# when addr=X″85″ and nena=′0′ else
??? 16#FFC#? when addr=X″86″ and nena=′0′ else
??? 16#FA2#? when addr=X″87″ and nena=′0′ else
??? 16#D73#? when addr=X″88″ and nena=′0′ else
??? 16#0000#;
END a;
????在ROM模糊控制模塊中,輸入變量BF_b和BA_b為前后光電檢測(cè)點(diǎn)狀態(tài)的編碼信號(hào),作為模糊控制輸出表的地址碼(一個(gè)字節(jié)),由它來(lái)決定模糊控制輸出表的數(shù)據(jù),即步進(jìn)電機(jī)轉(zhuǎn)速的周期。周期值越大,頻率越小,步進(jìn)電機(jī)的轉(zhuǎn)速就越慢;反之步進(jìn)電機(jī)的轉(zhuǎn)速就快。圖4所示為ROM模塊的仿真波形。

?


??? 該模糊控制器在QuartusII集成開(kāi)發(fā)環(huán)境中,利用Cyclone系列中的EP1C6器件進(jìn)行了設(shè)計(jì)和仿真,并組成測(cè)試系統(tǒng)進(jìn)行測(cè)試。實(shí)踐證明,該移動(dòng)機(jī)器人具有自動(dòng)糾偏、尋線準(zhǔn)確、高集成度和高可靠性的特點(diǎn)。用可編程邏輯器件設(shè)計(jì)的模糊控制,設(shè)計(jì)方便、修改容易,它可以和其他功能模塊電路同時(shí)用FPGA來(lái)完成,可以充分發(fā)揮模糊控制及可編程器件的優(yōu)點(diǎn),使兩種先進(jìn)的技術(shù)有機(jī)結(jié)合。除了以上介紹的機(jī)器人行走控制器外,還有其他單元電路,如紅外光電檢測(cè)電路、超聲波檢測(cè)電路、光電碼盤檢測(cè)和電機(jī)驅(qū)動(dòng)電路,以及可以隨時(shí)接收上位機(jī)發(fā)出指令的通訊模塊電路。為了實(shí)現(xiàn)機(jī)器人可靠的行進(jìn),檢測(cè)電路的設(shè)計(jì)顯得非常重要。
參考文獻(xiàn)
[1] 齊昕,鞏憲鋒,王長(zhǎng)松.基于模糊算法的機(jī)器人行進(jìn)控制[J].機(jī)電工程技術(shù),2006,35(1):21-24.
[2] 黃永志,陳衛(wèi)東.兩輪移動(dòng)機(jī)器人運(yùn)動(dòng)控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].機(jī)器人,2004,26(1):40-44.
[3] 陳文光,饒益花,單長(zhǎng)虹.基于可編程器件的模糊控制器[J].微電子學(xué)與計(jì)算機(jī),2004,21(5):41-43.
[4] 包明,包奎.基于FPGA的搬運(yùn)機(jī)器人控制系統(tǒng)[J].電子技術(shù)應(yīng)用,2005,31(12):59-61.
[5] KIM D.An Implementation of Fuzzy Logic Controller on the Reconfigurable FPGA Systems[J].IEEE ransactions on?Industrial Electronics,2000,47(3):703-715.
[6] Altera Corporation.QuartusII development software handbookv5.1[DB/OL].[2005-09-3].http://www.Altera.com.cn/literature/hb/qts/quartusii_hand_book.pdf.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。