郭 娜,李彩虹,王 迪,張 寧,宋 莉
(山東理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 山東 淄博 255049)
移動(dòng)機(jī)器人可以在某些環(huán)境尤其是惡劣環(huán)境下代替人類完成相應(yīng)的工作,這使得移動(dòng)機(jī)器人的研究在國(guó)內(nèi)外受到廣泛關(guān)注,而路徑規(guī)劃作為移動(dòng)機(jī)器人完成某項(xiàng)工作的基礎(chǔ)功能顯得尤為重要,如何快速、準(zhǔn)確地規(guī)劃路徑成為移動(dòng)機(jī)器人領(lǐng)域的一大研究熱點(diǎn)[1]。
移動(dòng)機(jī)器人的路徑規(guī)劃包含全局路徑規(guī)劃和局部路徑規(guī)劃[2-3]。全局路徑規(guī)劃是在機(jī)器人位姿、環(huán)境和目標(biāo)都已知的情形下,尋找一條從起始位置到達(dá)目標(biāo)位置的無碰撞最優(yōu)路徑。局部路徑規(guī)劃是在運(yùn)行環(huán)境未知的情況下實(shí)時(shí)地規(guī)劃路徑,移動(dòng)機(jī)器人由于傳感器探測(cè)距離有限以及周圍環(huán)境的不確定性,很難從整體最優(yōu)上進(jìn)行路徑規(guī)劃,因此機(jī)器人從局部最優(yōu)進(jìn)行路徑規(guī)劃[4-5]。
局部路徑規(guī)劃的方法主要有人工勢(shì)場(chǎng)法、模糊控制法、遺傳算法、神經(jīng)網(wǎng)絡(luò)等[6-7]。人工勢(shì)場(chǎng)法由于其操作簡(jiǎn)單、應(yīng)用性強(qiáng)被廣泛使用,但易出現(xiàn)因受力平衡導(dǎo)致局部震蕩無法到達(dá)目標(biāo)點(diǎn)的情況[8]。模糊控制具有較好的實(shí)時(shí)性[9],模擬了駕駛員在駕駛過程中面對(duì)各種情況作出反應(yīng)[10-11],但在復(fù)雜環(huán)境下,如U型障礙,易出現(xiàn)死鎖的現(xiàn)象。針對(duì)這種現(xiàn)象李擎等[12]設(shè)計(jì)了U型槽模糊控制器,能夠解決U型障礙物的死鎖問題,但只是針對(duì)障礙環(huán)境已知的情況下,在未知環(huán)境下并不通用。魏立新等[13]通過機(jī)器人旋轉(zhuǎn)角度來判斷是否進(jìn)入和逃脫U型陷阱區(qū)取得了很好的效果,但在其他障礙情況下是否依然可行還有待驗(yàn)證。Aouf等[14]設(shè)計(jì)了去目標(biāo)障礙和墻跟隨的行為仲裁方法,可有效避免與凹凸障礙物的碰撞。本文針對(duì)傳統(tǒng)模糊控制算法中存在的死鎖問題,首先設(shè)計(jì)模糊控制器,設(shè)置模糊規(guī)則,然后加入障礙逃脫策略和轉(zhuǎn)向策略,在各種障礙物環(huán)境下進(jìn)行仿真研究。
設(shè)計(jì)模糊控制器首先要根據(jù)實(shí)際需要確定輸入量和輸出量,確立模糊語言變量,選擇合適的隸屬度函數(shù)[15],根據(jù)人類經(jīng)驗(yàn)設(shè)計(jì)模糊控制規(guī)則[16]。本文采用模糊控制的方法,模仿人行走時(shí)行為的推理和決策過程,由測(cè)得的與障礙物的距離推理下一步的前進(jìn)方向和步長(zhǎng)。
移動(dòng)機(jī)器人上安裝了三個(gè)距離傳感器,分別為正前方M、左方L和右方R,左右方向都與正前方相差30°,正前方是面向目標(biāo)點(diǎn)的方向,如圖1所示。
模糊控制器是雙輸入、雙輸出的結(jié)構(gòu),其中輸入量為機(jī)器人正前方即目標(biāo)點(diǎn)方向距障礙物的距離dM、左邊距障礙物的距離減去右邊距障礙物的距離dLR。輸出量為機(jī)器人下一步前進(jìn)方向的轉(zhuǎn)角Angle以及步長(zhǎng)Step,結(jié)構(gòu)如圖2所示。
圖1 移動(dòng)機(jī)器人探測(cè)方向Fig.1 Detection direction of mobile robot
模糊控制器的輸入量要進(jìn)行模糊化,也就是需要把確定的輸入量轉(zhuǎn)化為模糊向量。表1給出了模糊變量的論域、劃分情況和語義對(duì)照。
以輸入量dLR中的RB為例,RB是一個(gè)表示距障礙物左近右遠(yuǎn)的模糊集合,μRB(x)表示元素x屬于集合RB的程度,取值范圍為[0,1],稱μRB(x)為x屬于模糊集合RB的隸屬度。當(dāng)模糊集合RB由連續(xù)函數(shù)構(gòu)成,各元素的隸屬度就構(gòu)成了隸屬度函
圖2 模糊控制器結(jié)構(gòu)圖Fig.2 Structure of fuzzy controller
表1 模糊語言變量語義對(duì)照表
Tab.1 Semantic comparison of fuzzy linguistic variables
模糊變量dM/mdLR/mStep/mAngle/rad論域[1,10][-10,10][0,1][-1.5,1.5]模糊語言變量及其對(duì)應(yīng)語義VS很近RVB左很近右很遠(yuǎn)VS很短TRVB右大轉(zhuǎn)S近RB左近右遠(yuǎn)S短TRB右小轉(zhuǎn)M適中CE左右距離相同M適中CE不轉(zhuǎn)B遠(yuǎn)LB左遠(yuǎn)右近B長(zhǎng)TLB左小轉(zhuǎn)VB很遠(yuǎn)LVB左很遠(yuǎn)右很近VB很長(zhǎng)TLVB左大轉(zhuǎn)
數(shù)μRB(x),此時(shí)模糊集合RB表示為
(1)
隸屬度函數(shù)是用于表征模糊集合的數(shù)學(xué)工具,本文選用梯形隸屬度函數(shù),使用主觀經(jīng)驗(yàn)法來確定。梯形曲線可由4個(gè)參數(shù)a、b、c和d確定,RB的隸屬度函數(shù)可表示為
(2)
通過確定各個(gè)模糊集合的隸屬度函數(shù)參數(shù),確定隸屬度函數(shù)。輸入量dM的隸屬度函數(shù)如圖3所示,其余輸入輸出量隸屬度函數(shù)與dM的相同。
圖3 輸入量dM的隸屬度函數(shù)Fig.3 Membership function of input dM
模糊控制器規(guī)則的設(shè)置是根據(jù)駕駛員駕駛汽車的經(jīng)驗(yàn),并將左、右兩個(gè)傳感器探測(cè)到的障礙物距離做差,減少了輸入量,精簡(jiǎn)了規(guī)則數(shù)量。根據(jù)此方法一共設(shè)計(jì)了25條規(guī)則,見表2。
表2 模糊控制規(guī)則
Tab.2 Rules of fuzzy control
Angle/StepdMVSSMBVBdLRRVBTRVB/VSTRVB/STRB/MTRB/BTRB/VBRBTRVB/VSTRB/STRB/MTRB/BTRB/VBCECE/VSCE/SCE/MCE/BCE/VBLBTLVB/VSTLB/STLB/MTLB/BTLB/VBLVBTLVB/VSTLVB/STLB/MTLB/BTLB/VB
根據(jù)不同方向距障礙物的距離不同,確定合適的模糊規(guī)則,當(dāng)輸入量dM為VS,dLR為RVB時(shí),輸出量Step為VS,Angle為TRVB,則模糊控制規(guī)則表示為:
If (dMisVS) and (dLRisRVB)
then (StepisVS) (AngleisTRVB)
根據(jù)表2模糊控制規(guī)則的設(shè)置,得到了輸入量和輸出量的關(guān)系,如圖4所示。
(a)Step與dM、dLR的關(guān)系
常用的模糊推理有兩種方法:Zadeh法和Mamdani法。Mamdani推理法是在模糊控制中普遍使用的方法,其本質(zhì)是一種合成推理方法,本文采用Mamdani法進(jìn)行模糊推理。
以dM= 6.93 m、dLR= -6.99 m為例,在圖5所示的規(guī)則查看器中可以看出,在此狀態(tài)下觸發(fā)了模糊規(guī)則第21條和第24條,按照對(duì)規(guī)則取極小值和取極大值的方法,得到輸出值。在第21條規(guī)則中選取極小值dLR中RVB的隸屬度函數(shù),在第24條規(guī)則中取極小值dLR中RB的隸屬度函數(shù),兩條規(guī)則得到的隸屬度函數(shù)再各自取極大值即可得到兩個(gè)輸出量的隸屬度函數(shù)。
圖5 模糊控制規(guī)則查看器Fig.5 Fuzzy control rule viewer
經(jīng)模糊推理得到的推論結(jié)果是模糊量,要對(duì)其進(jìn)行解模糊,將模糊量轉(zhuǎn)化為精確量。解模糊的方法有:最大隸屬度法、重心法和加權(quán)平均法等。最大隸屬度法的優(yōu)勢(shì)是簡(jiǎn)單,選取模糊集合中隸屬度最大的元素作為輸出值,適用于控制要求不高的場(chǎng)合。重心法則是以隸屬度函數(shù)曲線與橫坐標(biāo)圍成的面積的重心作為輸出值,能夠得到更準(zhǔn)確的控制量。加權(quán)平均法廣泛應(yīng)用于工業(yè)控制中,根據(jù)系數(shù)的選擇決定系統(tǒng)具有不同的響應(yīng)特征。本文選用重心法計(jì)算模糊推理的最終輸出值,計(jì)算公式為
(3)
將推論結(jié)果的隸屬度函數(shù)代入式(3)進(jìn)行解模糊,得到輸出量Step=1.4 m,Angle=0.6 rad。
模糊控制模擬駕駛車輛出現(xiàn)的各種反應(yīng)設(shè)置模糊規(guī)則,但當(dāng)遇到障礙物對(duì)稱或大片連續(xù)的障礙物,如U型障礙物和一字型障礙物時(shí),會(huì)出現(xiàn)局部震蕩也就是死鎖的現(xiàn)象。本文針對(duì)復(fù)雜障礙物環(huán)境提出了障礙逃脫策略,算法流程如圖6所示。
圖6 障礙逃脫策略算法流程Fig.6 Flow chart of obstacle escape strategy algorithm
在機(jī)器人朝目標(biāo)點(diǎn)方向行駛的過程中,當(dāng)遇到小物體的障礙時(shí),根據(jù)制定的模糊規(guī)則基本能夠找到無碰撞的最優(yōu)路徑。當(dāng)遇到連續(xù)復(fù)雜的障礙環(huán)境,根據(jù)模糊規(guī)則不能走出障礙陷阱區(qū)時(shí),進(jìn)入障礙逃脫策略。
判斷進(jìn)入逃脫策略的方法:當(dāng)機(jī)器人距離目標(biāo)點(diǎn)非常近,通過模糊規(guī)則得到的輸出量在轉(zhuǎn)角方向的步長(zhǎng)已經(jīng)大于在此方向上距障礙物的安全距離,就進(jìn)入障礙逃脫狀態(tài)。
根據(jù)進(jìn)入逃脫狀態(tài)前左右距障礙物距離dL和dR的比較,選定轉(zhuǎn)動(dòng)方向,設(shè)置轉(zhuǎn)動(dòng)方向標(biāo)志JudgeTurn,JudgeTurn的計(jì)算公式為
(4)
以圖7所示情境為例,dR大于dL,選擇初始轉(zhuǎn)動(dòng)方向?yàn)橛摇C(jī)器人向右偏轉(zhuǎn)一定角度θr直到前方距障礙物距離可行。設(shè)置初始偏轉(zhuǎn)角度θr=0,每次循環(huán)累加固定角度及隨機(jī)擾動(dòng)值ε,預(yù)防陷入死循環(huán),θr的計(jì)算公式為
(5)
圖7 逃脫過程示意圖Fig.7 Schematic diagram of escape process
在此方向上設(shè)立方向點(diǎn),暫時(shí)將方向點(diǎn)代替目標(biāo)點(diǎn),讓機(jī)器人繼續(xù)沿障礙物邊緣前行。以圖7中方向點(diǎn)1為例,在F點(diǎn)向右偏轉(zhuǎn),當(dāng)偏轉(zhuǎn)到θr角度時(shí),在此方向上探測(cè)不到障礙物,設(shè)置方向點(diǎn)1暫時(shí)代替目標(biāo)點(diǎn),機(jī)器人朝向方向點(diǎn)1前行。
當(dāng)機(jī)器人到達(dá)方向點(diǎn)時(shí),測(cè)量當(dāng)前位置到目標(biāo)點(diǎn)方向向右一定范圍(例如120°)內(nèi)有無障礙物,如圖7中黃色扇形區(qū)域。若有障礙物,則在當(dāng)前位置到目標(biāo)點(diǎn)方向向右120°方向上設(shè)立新的方向點(diǎn),沿新方向點(diǎn)前行;若沒有障礙物,則判斷走出了障礙范圍,機(jī)器人將繼續(xù)沿目標(biāo)點(diǎn)方向前行。
若障礙物環(huán)境是復(fù)雜又近似封閉的,在進(jìn)入障礙逃脫狀態(tài)后,很難準(zhǔn)確判斷是否走出整個(gè)障礙環(huán)境,由于初始轉(zhuǎn)動(dòng)方向確定后若隨意改變易出現(xiàn)回退現(xiàn)象,若始終保持不變則容易在局部范圍出現(xiàn)路徑往復(fù)現(xiàn)象,而初始轉(zhuǎn)動(dòng)方向可能不是得到最優(yōu)路徑的選擇。為了能使機(jī)器人盡可能不走回頭路地到達(dá)目標(biāo)點(diǎn),要找到適合改變轉(zhuǎn)動(dòng)方向的時(shí)機(jī)。
每當(dāng)下一步不可行并且指向目標(biāo)點(diǎn)時(shí),記錄當(dāng)前點(diǎn),當(dāng)再次到達(dá)記錄點(diǎn)并且仍指向目標(biāo)點(diǎn)時(shí),改變初始轉(zhuǎn)動(dòng)方向。
添加了改變轉(zhuǎn)動(dòng)方向的行為后,在復(fù)雜的障礙物環(huán)境中,基本能夠最終到達(dá)目標(biāo)點(diǎn),但由于視野的局限性,得到的路徑并不一定最優(yōu)。
在MATLAB R2016平臺(tái)上,對(duì)本文提出的算法進(jìn)行了仿真驗(yàn)證。圖8是在各種障礙物環(huán)境下得到的路徑規(guī)劃仿真結(jié)果。仿真環(huán)境大小是100×100,“*”代表起始點(diǎn),“?”代表目標(biāo)點(diǎn),黑色區(qū)域代表障礙物。
圖8(a)所示,在障礙物成離散分布的一般環(huán)境中,僅使用模糊規(guī)則就能找到最優(yōu)路徑。圖8(b)和(e)所示,當(dāng)運(yùn)動(dòng)到距障礙物很近的狀態(tài)下,探測(cè)到右邊到障礙物的距離大于左邊的,選擇向右轉(zhuǎn)向,沿邊走出障礙物,朝向目標(biāo)點(diǎn)繼續(xù)前進(jìn)。圖8(c)所示,探測(cè)到左邊到障礙物的距離大于右邊的,選擇向左轉(zhuǎn)向,沿邊走出障礙物。圖8(d)所示,當(dāng)采取障礙逃脫策略運(yùn)動(dòng)到封閉環(huán)境的出口處時(shí),探測(cè)到走出障礙物,朝向目標(biāo)點(diǎn)前進(jìn),當(dāng)再次運(yùn)動(dòng)到距障礙物很近的狀態(tài)下,依然選擇第一次進(jìn)入逃脫狀態(tài)的逃脫方向,直至走出障礙物。本文的模糊控制規(guī)則和障礙逃脫策略能夠較好地找到從起始點(diǎn)到達(dá)目標(biāo)點(diǎn)的較優(yōu)路徑。但由于機(jī)器人運(yùn)動(dòng)時(shí)探測(cè)距離的局限性,在進(jìn)入障礙逃脫策略時(shí)根據(jù)左右探測(cè)距離的遠(yuǎn)近決定逃脫方向,如圖8(f)所示,機(jī)器人在進(jìn)入障礙逃脫策略時(shí)選擇右轉(zhuǎn)逃脫成功到達(dá)目標(biāo)點(diǎn)。若在進(jìn)入障礙逃脫策略時(shí)選擇左轉(zhuǎn)逃脫,則易困在障礙物內(nèi),出現(xiàn)路徑往復(fù)的現(xiàn)象,無法到達(dá)目標(biāo)點(diǎn),如圖9所示。加入了轉(zhuǎn)向策略后,如圖10所示,機(jī)器人能在第二次經(jīng)過記錄點(diǎn)時(shí)改變轉(zhuǎn)向方向, 順利到達(dá)目標(biāo)點(diǎn),雖然得到的結(jié)果經(jīng)過了一段不必要的路徑,但由于探測(cè)距離和對(duì)周圍信息的感知有限,機(jī)器人在復(fù)雜環(huán)境中邊探測(cè)邊行走,能夠不走回頭路地到達(dá)目標(biāo)點(diǎn),達(dá)到了本文算法的預(yù)期。
(a)一般環(huán)境 (b)一字型障礙物
(c)U型障礙物 (d)近似封閉環(huán)境
(e)L型障礙物 (f)復(fù)雜環(huán)境圖8 各種障礙物環(huán)境下的路徑規(guī)劃Fig.8 Path planning in various obstacle environments
圖9 未使用轉(zhuǎn)向策略Fig.9 Path planning without steering policy
圖10 使用轉(zhuǎn)向策略Fig.10 Path planning with steering strategy
本文采用模糊控制的方法,加入了逃脫策略和轉(zhuǎn)向策略解決模糊控制中易出現(xiàn)的死鎖問題。在MATLAB R2016平臺(tái)上使用本文算法進(jìn)行仿真。仿真結(jié)果表明,在一般復(fù)雜環(huán)境中,能夠規(guī)劃出從起始點(diǎn)到目標(biāo)點(diǎn)無碰撞的較優(yōu)路徑;在較封閉的復(fù)雜環(huán)境中,也能夠規(guī)劃出可行路徑到達(dá)目標(biāo)點(diǎn)。本文算法還存在路徑冗余和不平滑的問題,解決這一問題可以嘗試結(jié)合其他智能算法,使得能夠更早地判斷即將進(jìn)入陷阱區(qū),優(yōu)化路徑。