程 謙 高 嵩 曹 凱 陳超波
(西安工業(yè)大學(xué)電子信息工程學(xué)院 陜西 西安 710021)
近些年移動機(jī)器人技術(shù)得到了飛躍性的進(jìn)步,而路徑規(guī)劃作為移動機(jī)器人技術(shù)的重要基礎(chǔ)成為了研究的熱點。目前,路徑規(guī)劃算法被應(yīng)用于工業(yè)、服務(wù)、娛樂等各個方面,例如無人車、掃地機(jī)器人、餐廳機(jī)器人等。機(jī)器人在執(zhí)行任務(wù)時都依賴路徑規(guī)劃算法,而有效的路徑規(guī)劃技術(shù)可以使機(jī)器人完成任務(wù)時節(jié)省大量的物力財力,同時也可以提高執(zhí)行任務(wù)時的安全性[1]。
根據(jù)路徑規(guī)劃在規(guī)劃過程中搜索的方式不同主要分為三大類:基于圖論的路徑搜索算法,基于離散采樣的規(guī)劃算法,智能路徑規(guī)劃算法。基于圖論的搜索算法于1959年被提出,主要思想是將狀態(tài)空間定義為占據(jù)網(wǎng)格,將障礙定義為不可訪問的網(wǎng)格點,然后算法搜索可用的網(wǎng)格點,如果路徑存在,則給出解決方案。如果網(wǎng)格分辨率足夠,基于圖論的算法可以保證解決方案。Dijkstra算法[2]作為圖論經(jīng)典的算法被廣泛應(yīng)用,隨后又發(fā)展出A*算法[3]、DFS算法[4]等。文獻(xiàn)[5]將圖論的規(guī)劃方法與其他算法進(jìn)行了比較,在解決兩點之間最短距離的情況下,圖論的方法較其他算法有較大的優(yōu)勢?;陔x散采樣的規(guī)劃算法的主要思想是在配置空間中選擇非結(jié)構(gòu)有限數(shù)量的點,并在這些點之間建立連接。基于采樣的方法是簡單、通用、高效和概率完備的(當(dāng)時間接近無限時一定有解),如隨機(jī)路徑圖法(PRM)[6]、快速隨機(jī)擴(kuò)展樹(RRT)[7]等?;诓蓸拥囊?guī)劃算法雖然一定能夠規(guī)劃出路徑,但是因為其離散隨機(jī)的特性解不一定是最優(yōu)的。以PRM算法為例,在面對含有狹窄通道時算法的效率和成功率會明顯下降。針對這個問題文獻(xiàn)[8]提出了一種長短期存儲器(LSTM)模型,通過預(yù)測障礙物位置,將障礙物軌跡劃分為時間序列,并將下一時刻的位置估計引入到規(guī)劃算法的狀態(tài)有效性測試中,以生成最優(yōu)路徑。通過對障礙物模型的預(yù)測,可以減少穿越和重編程的時間,通過優(yōu)化采樣階段,也可以增加狹窄通道中采樣點的數(shù)量,從而提高算法的效率。智能路徑規(guī)劃算法是近些年慢慢發(fā)展起來的一個熱門方向,因為人工智能的興起,越來越多的智能算法被應(yīng)用在移動機(jī)器人路徑規(guī)劃上,如遺傳算法[9]、粒子群優(yōu)化算法[10]、蟻群算法[11]和人工勢場法[12]等。文獻(xiàn)[13]將人工勢場法和遺傳算法進(jìn)行結(jié)合,通過引入指數(shù)因子來模擬斥力,從而解決了機(jī)器人在尋找路徑過程中易陷入局部極小值的問題,然后利用遺傳算法進(jìn)行尋優(yōu),找出最優(yōu)路徑。
目前,隨著機(jī)器人應(yīng)用范圍越來越廣,機(jī)器人所處環(huán)境的障礙物也越來越復(fù)雜?;趫D論搜索的傳統(tǒng)規(guī)劃算法需要精確定位障礙物,其算法計算量過大,在現(xiàn)實中非常不適用。而基于離散采樣規(guī)劃算法的PRM算法可以有效避免對位姿空間精確定位,并且算法的復(fù)雜度并不依賴于地圖的復(fù)雜度,所以可以有效地應(yīng)用于實際。但是PRM算法在實際的應(yīng)用中也會有各種問題,例如在處理狹窄通道方面有明顯的不足。針對這個問題,文獻(xiàn)[14-16]提出了利用高斯采樣、橋測試法和自適應(yīng)采樣研究方法,旨在提高狹窄通道中的采樣點個數(shù),從而提高對狹窄通道的適應(yīng)性。此外,PRM算法因為采樣點個數(shù)較多,所花費的時間較長,大大限制了其應(yīng)用性。文獻(xiàn)[17]提出了減少碰撞檢測的思想來加大算法的效率,但是在一定程度上又增加了算法復(fù)雜性。
本文對PRM算法進(jìn)行深入研究,提出一種基于連接點的優(yōu)化方法,剔除算法在學(xué)習(xí)階段構(gòu)建的無效路徑,使路徑總數(shù)減少,從而縮短在查詢階段的搜索時間,有效地提高了PRM算法的規(guī)劃速度。同時因為規(guī)劃出的路徑連接了更多的采樣點,使路線在彎道有更好的適應(yīng)性,顯著提升了路線的安全性。
通過在環(huán)境中建立路徑網(wǎng)絡(luò)圖,將連續(xù)的空間轉(zhuǎn)化為離散的空間,然后再進(jìn)行路徑規(guī)劃,使算法的復(fù)雜程度只依賴于搜索路徑的復(fù)雜度,從而使復(fù)雜程度降低。PRM算法也可以用在多自由度的移動機(jī)器人路徑規(guī)劃中,而且可以有效地克服局部極小值的缺點,在解決高維空間和復(fù)雜障礙物的情況下有計算量小的優(yōu)勢。
PRM算法的基本思想是用概率圖來表示移動機(jī)器人所處環(huán)境的自由空間。在自由空間內(nèi)進(jìn)行隨機(jī)采樣,把采樣點加入到圖集中,利用局部規(guī)劃器把各個采樣點進(jìn)行連接,構(gòu)成路徑網(wǎng)絡(luò)圖,然后在這個隨機(jī)網(wǎng)絡(luò)中使用搜索算法來找到移動機(jī)器人的可行路徑。該算法可以分兩個階段完成,即離線學(xué)習(xí)階段和查詢階段。
在自由空間中進(jìn)行盡可能隨機(jī)且均勻的采樣,然后連接各個點,構(gòu)建出一幅路徑網(wǎng)絡(luò)圖。
學(xué)習(xí)階段具體步驟如下:
1)創(chuàng)建采樣點集x
2)在地圖中采用均勻采樣隨機(jī)采取一點ni
3)while:采集到足夠的采樣點跳出
4) if:ni在障礙物內(nèi)
5)舍棄該點
6)else:將ni加入到點集x
7)end
8)創(chuàng)建路徑集f
9)while:分別依次連接點集x中的兩點xinit,xgoal
10)if:兩點之間連線碰撞到障礙物
11)舍棄該路線
12)else:將兩點之間路線加入路徑集f
13)end
14)建立無向網(wǎng)絡(luò)圖G(x,f)
15)if:G(x,f)為空
16)不存在路徑
17)else:查找最優(yōu)路徑
PRM算法學(xué)習(xí)階段是在地圖內(nèi)進(jìn)行隨機(jī)采樣,并對采樣點進(jìn)行碰撞檢測,從而保證采樣點不會落在地圖障礙物內(nèi),使采樣點隨機(jī)均勻地分布在自由無障礙空間內(nèi)。采樣完成后通過連接各個點,構(gòu)建路徑網(wǎng)絡(luò)圖。構(gòu)建網(wǎng)絡(luò)圖時,采用從一個點開始,向周圍點擴(kuò)散的方法,如果兩個點之間可以連接,并且沒有碰到障礙物,就把路線添加到網(wǎng)絡(luò)圖中,反之則舍棄,從而構(gòu)建出整幅路徑網(wǎng)絡(luò)圖,如圖1所示。其中:左上角大圓點代表起始點;右下角大圓點代表終點;黑色為障礙物;小點為采樣點;細(xì)線為路徑網(wǎng)絡(luò)圖中路徑。
(a)采樣圖 (b)網(wǎng)絡(luò)路徑圖
查詢階段步驟利用學(xué)習(xí)階段建立好的無向路徑網(wǎng)絡(luò)圖,在無向網(wǎng)絡(luò)圖中設(shè)置好起點和終點,根據(jù)設(shè)置好的起點和終點搜索出一條符合需求的路徑,具體可以分為以下三步:
(1)把地圖中離起始點和目標(biāo)點最近的兩個點分別進(jìn)行連接;
(2)在網(wǎng)絡(luò)圖中搜索路徑,找到起始點到目標(biāo)點的路線;
(3)找到路徑后,通過平滑處理,優(yōu)化路徑。
最終結(jié)果如圖2所示,深色粗線為規(guī)劃出的路線。
圖2 PRM查詢階段
PRM算法在學(xué)習(xí)階段通過對隨機(jī)地圖進(jìn)行均勻采樣,使采樣點在障礙物地圖中均勻分布,通過連接各個采樣點構(gòu)建出路徑網(wǎng)絡(luò)圖,隨后在查詢階段中利用A*算法進(jìn)行路徑查詢,從而尋找出最優(yōu)路徑。在PRM算法整個階段中學(xué)習(xí)階段花費的時間最少,影響算法整體效率的主要是查詢階段,而路徑網(wǎng)絡(luò)圖中的路徑數(shù)量直接影響查詢階段花費的時間。
為了有效地減少路徑網(wǎng)絡(luò)圖中的路徑數(shù)量,對學(xué)習(xí)階段進(jìn)行改進(jìn)。通過改變連接點的距離,使一些連接距離較遠(yuǎn)且不合理的路徑大大減少,導(dǎo)致算法在查詢階段查找的路徑減少,從而減少花費的時間,進(jìn)而提高運算效率。以未優(yōu)化前一個點所構(gòu)成的路徑網(wǎng)絡(luò)圖為例,如圖3(a)所示,A點在學(xué)習(xí)階段連接各個點,構(gòu)建一幅不接觸障礙物的路徑網(wǎng)絡(luò)圖(如果路線接觸障礙物自動舍棄不連接)。為了減少路徑的數(shù)量,限定采樣點的連接距離,經(jīng)過優(yōu)化后A點的連接如圖3(b)中實線所示,距離A點較遠(yuǎn)的E點和F點不進(jìn)行連接,使構(gòu)成的路徑網(wǎng)絡(luò)的路徑數(shù)量大大減少。
因為限定了連接點的距離,優(yōu)化后的路線圖中路線較長的路徑消失,為了尋找到最優(yōu)路徑,路線圖會連接更多的采樣點,使得規(guī)劃出的路徑在彎道處更加靈活,加大路線離障礙物的距離,如優(yōu)化前A-F和A-E路線(圖3(a)中所示)優(yōu)化后變?yōu)锳-H-F和A-C-D-E路線(圖3(b)中虛線所示)。雖然優(yōu)化后的路線在一定程度上加大了最終規(guī)劃出來路徑的長度,但是使得路線更加安全可靠,加大了在實際中的應(yīng)用性和實用性。
(a)優(yōu)化前 (b)優(yōu)化后
優(yōu)化過程中連接點限定距離的取值可以根據(jù)實際地圖情況進(jìn)行選取。限定距離取值越大越接近傳統(tǒng)PRM算法,優(yōu)化效果越弱;限定距離越小,網(wǎng)絡(luò)路徑圖中路線的數(shù)量越少,并且構(gòu)成最優(yōu)路徑時連接的采樣點越多,效果越顯著。但當(dāng)限定距離過小時,因為連接不到采樣點,可能使路徑規(guī)劃失敗,所以設(shè)置最小值,在最小值上依次疊加,直到取到第一個采樣點,進(jìn)而找到能保證規(guī)劃成功的最小限定距離。
為了驗證改進(jìn)算法的有效性,在如圖4所示的兩種地圖中進(jìn)行仿真,同時與優(yōu)化前PRM算法進(jìn)行對比。在仿真過程中為計算方便,設(shè)置連接點最小距離為1米,仿真實驗的采樣點數(shù)量為150和300,對比在不同采樣點情況下優(yōu)化算法的優(yōu)化效果。
(a)簡單障礙物地圖 (b)復(fù)雜障礙物地圖
當(dāng)采樣點N=50時,簡單地圖優(yōu)化前后結(jié)果如圖5(a)和圖5(b)所示,能夠規(guī)劃出路徑,并且經(jīng)優(yōu)化后路徑網(wǎng)絡(luò)圖中的路徑數(shù)量明顯減少,并且路線較傳統(tǒng)相比離障礙物較遠(yuǎn)。復(fù)雜障礙物地圖優(yōu)化前后如圖5(c)和圖5(d)所示,因為采樣點過少,在建立出的路徑網(wǎng)絡(luò)圖中沒有可以到達(dá)目標(biāo)點的路徑,規(guī)劃失敗。
(a)簡單障礙物地圖優(yōu)化前 (b)簡單障礙物地圖優(yōu)化后
當(dāng)采樣點N=150時,簡單地圖優(yōu)化前后結(jié)果如圖6(a)和圖6(b)所示,優(yōu)化前所構(gòu)成的路徑網(wǎng)絡(luò)圖都有較多的路徑,優(yōu)化后路徑顯著減少,都能夠合理地規(guī)劃出路徑,但優(yōu)化后的路徑在彎道處離障礙物較遠(yuǎn),安全性比優(yōu)化前增強(qiáng)。復(fù)雜地圖優(yōu)化前后結(jié)果如圖6(c)和圖6(d)所示,優(yōu)化后路徑網(wǎng)絡(luò)圖中路徑的數(shù)量明顯減少,并且路徑安全顯著增強(qiáng)。
(a)簡單障礙物地圖優(yōu)化前 (b)簡單障礙物地圖優(yōu)化后
當(dāng)采樣點N=300時,優(yōu)化前圖像如圖7(a)和圖7(b)所示,優(yōu)化后結(jié)果如圖7(c)和圖7(d)所示。
(a)簡單障礙物地圖優(yōu)化前 (b)簡單障礙物地圖優(yōu)化后
成功的路徑規(guī)劃才是路線安全的根本,因此為了驗證改進(jìn)算法的成功率,對復(fù)雜地圖進(jìn)行改進(jìn),增加多個障礙物,使障礙物密度大大提高,能夠充分地測試算法的有效性和成功率,改進(jìn)的復(fù)雜地圖如圖8所示。在地圖中固定采樣點為150個,對算法優(yōu)化前后分別進(jìn)行150次重復(fù)性實驗。改進(jìn)的復(fù)雜地圖仿真結(jié)果如圖9所示。
圖8 改進(jìn)的復(fù)雜地圖
(a)優(yōu)化前PRM算法 (b)優(yōu)化后PRM算法
仿真結(jié)果如表1所示。采樣點個數(shù)可以決定能否規(guī)劃出路徑,采樣點數(shù)量越多,成功規(guī)劃出路線的概率越大,特別是復(fù)雜地圖中,如果采樣點過少,則可能規(guī)劃不出路徑,導(dǎo)致任務(wù)失敗。在采樣點相同時,優(yōu)化后的PRM算法與PRM算法相比,時間最大縮短了近50%,且隨著采樣點數(shù)量的上升愈發(fā)明顯。在安全性上對比,改進(jìn)后算法距障礙物最短的安全距離要遠(yuǎn)遠(yuǎn)大于改進(jìn)前,使得路線更加可靠。由表2可知,優(yōu)化后的PRM算法在同一幅地圖相同采樣點時,規(guī)劃路徑的成功率有所提升,增強(qiáng)了算法的適應(yīng)性。綜上可得,優(yōu)化后的PRM算法在時間、成功率和安全性上都有了顯著的提高,增強(qiáng)了PRM算法在實際中的實用性。
表1 不同地圖和采樣點優(yōu)化前后結(jié)果
表2 算法優(yōu)化前后仿真成功率對比
為了驗證算法實際的應(yīng)用性,在Linux操作系統(tǒng)上的ROS環(huán)境中使用物理仿真平臺 Stage 進(jìn)行機(jī)器人路徑規(guī)劃仿真。仿真過程采用的機(jī)器人是一個搭載激光雷達(dá)可編程的基于 ROS 的移動機(jī)器人。在Stage下構(gòu)建障礙物地圖,如圖10所示,黑色為障礙物,圓形物體為移動機(jī)器人。機(jī)器人上搭載激光雷達(dá),可以實時地避障和構(gòu)建地圖,在可視化工具Rviz中可以實時觀察到機(jī)器人激光雷達(dá)實時構(gòu)建地圖,如圖11所示,黑色為障礙物。
(a) (b)
圖11 激光雷達(dá)實時構(gòu)建地圖
機(jī)器人起始點設(shè)為(-1.8,-5.4),位置如圖12(a)所示。終點設(shè)置為(-2,3),位置如圖12(b)所示。在相同采樣點N=150的情況下分別使用PRM算法和優(yōu)化的PRM算法進(jìn)行路徑優(yōu)化,PRM算法路徑規(guī)劃結(jié)果如圖13所示,其中灰線表示所構(gòu)成的路徑網(wǎng)絡(luò)圖。優(yōu)化前PRM算法的規(guī)劃結(jié)果如圖13(a)所示,機(jī)器人花費的時間為1.5 s,優(yōu)化后PRM算法規(guī)劃結(jié)果如圖13(b)所示,機(jī)器人花費的時間為0.9 s。
(a)起始點(-1.8,5.4) (b)終點(-2,3)
(a)優(yōu)化前PRM算法 (b)優(yōu)化后PRM算法
優(yōu)化后PRM算法較優(yōu)化前在機(jī)器人實時路徑規(guī)劃時所構(gòu)成的路徑網(wǎng)絡(luò)圖明顯減少,在搜索效率上有明顯改觀,并且路徑規(guī)劃的結(jié)果較之前在彎道處遠(yuǎn)離障礙物,安全性明顯提升。
為了驗證優(yōu)化算法的成功率,進(jìn)行了30次重復(fù)性實驗,實驗結(jié)果如表3所示,在機(jī)器人實際路徑規(guī)劃時優(yōu)化后的PRM算法較優(yōu)化前,在花費時間較少的前提下,成功率也有所提升。但實際機(jī)器人路徑規(guī)劃成功率因為要考慮數(shù)據(jù)的誤差,以及機(jī)器人自身的物理體積,與MATLAB純算法仿真相比成功率明顯下降。
表3 機(jī)器人物理仿真結(jié)果
本文分析研究PRM算法的原理和過程,針對PRM算法運行速度和安全性進(jìn)行改進(jìn),提出基于連接點距離的改進(jìn)方法,通過改變連接點的連接距離,減少不合理(如連接點間距離遠(yuǎn)的情況)的路徑,使運行速度有明顯的提升,并增加了障礙物的安全距離。本文優(yōu)化方法應(yīng)用方便,結(jié)構(gòu)簡單,優(yōu)化后的算法能夠有效地提高實時性和安全性,更好地運用在機(jī)器人實時路徑中。