本發(fā)明涉及智能機(jī)器人路徑規(guī)劃領(lǐng)域的一種路徑規(guī)劃方法,具體是一種基于語(yǔ)義地圖的建立,并根據(jù)語(yǔ)義信息在地圖的不同區(qū)域應(yīng)用不同路徑規(guī)劃算法的混合多策略路徑規(guī)劃方法。使得機(jī)器人能夠更加智能地,在不同的運(yùn)動(dòng)環(huán)境中,自主選擇適應(yīng)于該環(huán)境的路徑規(guī)劃算法。
背景技術(shù):
當(dāng)下能夠自主導(dǎo)航避障的機(jī)器人系統(tǒng)研究異?;馃幔乙惨呀?jīng)有許多產(chǎn)品應(yīng)用于實(shí)踐。如餐館的服務(wù)機(jī)器人,就擁有障礙物識(shí)別,路徑規(guī)劃的能力;又如家庭掃地機(jī)器人,也擁有在開(kāi)闊空間內(nèi)規(guī)劃自身運(yùn)動(dòng)路徑的能力。在公共運(yùn)輸方面,無(wú)人機(jī)快遞投遞的應(yīng)用已經(jīng)開(kāi)展的如火如荼,在快遞投遞上也必須用到路徑規(guī)劃,以使無(wú)人機(jī)能夠在避開(kāi)障礙物的前提下以最短的路徑到達(dá)目的地并完成投遞。
路徑規(guī)劃即是指機(jī)器人決策如何從地圖的某一點(diǎn)運(yùn)動(dòng)到另一點(diǎn)的能力。首先要求機(jī)器人能夠獲得當(dāng)前環(huán)境的地圖信息,并能定位當(dāng)前自身的位置,隨后才可以進(jìn)行路徑規(guī)劃,定位和建圖的算法目前最實(shí)用的就是slam算法。目前有許多路徑規(guī)劃算法,如a*、dijkstra、rrt、prm等。
但是目前在機(jī)器人應(yīng)用中,都是采用單一的路徑規(guī)劃策略,例如在ros操作系統(tǒng)下的導(dǎo)航算法包,其運(yùn)用了a*算法作為機(jī)器人的全局路徑規(guī)劃,無(wú)論機(jī)器人處于何種環(huán)境,它都將使用a*算法來(lái)進(jìn)行導(dǎo)航。但是,隨著機(jī)器人應(yīng)用領(lǐng)域的不斷擴(kuò)大,機(jī)器人應(yīng)用的場(chǎng)景也越來(lái)越多,單一的路徑規(guī)劃策略是很難滿足人們對(duì)機(jī)器人日漸提高的要求。a*算法是非常優(yōu)秀的路徑規(guī)劃算法,它在房間、辦公室等地形復(fù)雜,障礙物較多的環(huán)境中有很好的表現(xiàn),但它在走廊、大廳這樣的障礙物較少或者道路細(xì)長(zhǎng)的環(huán)境中表現(xiàn)就顯得不盡如人意,因?yàn)閍*的路徑總是貼近障礙物邊緣的,但在走廊,更傾向于機(jī)器人能夠走在道路的正中間,以更高的安全性通過(guò)細(xì)長(zhǎng)的走廊。因此在不同的場(chǎng)景下,機(jī)器人對(duì)路徑規(guī)劃算法的需求也是不同的,在本發(fā)明中,就提出了一種基于地圖的語(yǔ)義推斷和語(yǔ)義地圖的建立,根據(jù)地圖的語(yǔ)義信息來(lái)在不同語(yǔ)義區(qū)域使用不同路徑規(guī)劃算法的混合策略路徑規(guī)劃方法,在混合策略路徑規(guī)劃方法下,機(jī)器人就能更加智能地依據(jù)當(dāng)前所處的環(huán)境,來(lái)選擇合適的路徑規(guī)劃算法。
本發(fā)明中所使用的基本技術(shù)有廣義沃羅諾伊圖(gvg)、條件隨機(jī)場(chǎng)推斷(crf)、形態(tài)學(xué)操作等。沃羅諾伊圖是俄國(guó)數(shù)學(xué)家voronoi建立的空間分割方法,在本發(fā)明中,應(yīng)用了廣義沃羅諾伊圖來(lái)生成走廊區(qū)域的道路,它有很明顯的特征,即距離障礙物最遠(yuǎn),到其兩側(cè)的障礙物的距離相等的,亦即是道路中線,機(jī)器人在這樣的道路上行走會(huì)有很高的安全性。而條件隨機(jī)場(chǎng)(crf)模型是lafferty于2001年在最大熵模型和隱馬爾科夫模型的基礎(chǔ)上,提出的一種判別式概率無(wú)向圖學(xué)習(xí)模型,在機(jī)器視覺(jué)、自然語(yǔ)言處理等領(lǐng)域都有很好的應(yīng)用,在本發(fā)明中則用其來(lái)推斷地圖各個(gè)區(qū)域的語(yǔ)義。形態(tài)學(xué)開(kāi)操作和閉操作是形態(tài)學(xué)的基本操作,常常用于圖像的處理,在opencv計(jì)算機(jī)視覺(jué)庫(kù)中,對(duì)形態(tài)學(xué)操作有很好的支持。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的技術(shù)解決問(wèn)題:革新了移動(dòng)機(jī)器人路徑規(guī)劃算法應(yīng)用的方法,不同于以往機(jī)器人只使用一種規(guī)劃算法,在本發(fā)明中,首先基于語(yǔ)義地圖的建立,賦予了機(jī)器人更高的智能,完成了機(jī)器人在不同的應(yīng)用環(huán)境中采用不同的路徑規(guī)劃算法的能力,使得最終路徑更易于機(jī)器人行走。
本發(fā)明的技術(shù)解決方案:一種基于語(yǔ)義地圖的移動(dòng)機(jī)器人多策略路徑規(guī)劃方法,其特征在于,基于語(yǔ)義地圖的建立并在其上作混合策略的路徑規(guī)劃算法,其步驟如下:
步驟1:對(duì)slam算法得到的地圖進(jìn)行預(yù)處理,先應(yīng)用形態(tài)學(xué)閉操作濾去地圖的白噪聲,再應(yīng)用形態(tài)學(xué)開(kāi)操作使地圖中各個(gè)獨(dú)立區(qū)域分割出來(lái),得到的結(jié)果地圖稱為基地圖;
步驟2:在基地圖上生成廣義沃羅諾伊圖(gvg),并將地圖中的每個(gè)獨(dú)立區(qū)域分割與廣義沃羅諾伊圖相互映射,提取兩個(gè)相鄰獨(dú)立區(qū)域之間共有的沃羅諾伊圖線部分,并取該線的中點(diǎn),作為這兩個(gè)獨(dú)立區(qū)域相連的門(mén)(doorway),此過(guò)程稱為doorway提取過(guò)程;
步驟3:將每一個(gè)獨(dú)立區(qū)域的幾何中心作為節(jié)點(diǎn),連接得到無(wú)向圖d,將無(wú)向圖d和每一個(gè)獨(dú)立區(qū)域的不變矩作為參數(shù),應(yīng)用條件隨機(jī)場(chǎng)(crf)進(jìn)行推斷,得到各個(gè)區(qū)域的類型,即為各個(gè)區(qū)域賦予語(yǔ)義信息,是房間(room)或是走廊(hallway),得到語(yǔ)義結(jié)果,此過(guò)程稱為地圖的語(yǔ)義賦予過(guò)程;
步驟4:將步驟2所得的doorway連接成一個(gè)無(wú)向圖g(v,e),其中v代表圖頂點(diǎn),e代表邊,無(wú)向圖g稱為區(qū)域拓?fù)涞貓Drtm(regiontopologicalmap,rtm),此過(guò)程稱為rtm生成過(guò)程;
步驟5:根據(jù)步驟3所得的語(yǔ)義結(jié)果,將步驟4所得的rtm中每一條邊區(qū)分為房間內(nèi)的和走廊內(nèi)的,此過(guò)程稱為規(guī)劃預(yù)處理;
步驟6:給定起點(diǎn)和終點(diǎn),并將起點(diǎn)和終點(diǎn)連入rtm中,進(jìn)行多策略路徑規(guī)劃,得到最終路徑,此過(guò)程稱為路徑規(guī)劃過(guò)程。
所述步驟5中,區(qū)分rtm邊類型的方法為:
根據(jù)步驟3所得的語(yǔ)義結(jié)果,將步驟4所得的rtm中每一條邊都區(qū)分為房間內(nèi)的和走廊內(nèi)的,若rtm某一條邊所連接的兩個(gè)節(jié)點(diǎn)必定與一個(gè)區(qū)域同時(shí)相關(guān),若該區(qū)域?yàn)樽呃?hallway),則該條邊為走廊內(nèi)的邊,否則該條邊為房間內(nèi)的邊。
所述步驟6中,路徑規(guī)劃的方法為:
給定起點(diǎn)和終點(diǎn),假定所給的路徑規(guī)劃任務(wù)都是從房間到房間的規(guī)劃任務(wù),這也是符合機(jī)器人的路徑規(guī)劃任務(wù)特點(diǎn),將起點(diǎn)和終點(diǎn)分別和與之最近的rtm中的節(jié)點(diǎn)連接,得到一張與特定規(guī)劃任務(wù)對(duì)應(yīng)的拓?fù)鋱D,并在該拓?fù)鋱D上應(yīng)用迪杰斯特拉(dijkstra)算法尋找從起點(diǎn)到終點(diǎn)的代價(jià)最小的節(jié)點(diǎn)序列,節(jié)點(diǎn)間的代價(jià)用節(jié)點(diǎn)之間的歐氏距離來(lái)計(jì)算;從起點(diǎn)開(kāi)始遍歷所得節(jié)點(diǎn)序列,根據(jù)上述無(wú)向圖g的邊e上的標(biāo)記,若兩節(jié)點(diǎn)之間的邊是房間內(nèi)的邊,則在這兩點(diǎn)應(yīng)用a*路徑規(guī)劃算法得到最終路徑;若兩節(jié)點(diǎn)之間的邊是走廊內(nèi)的邊,則直接從廣義沃羅諾伊圖取得這兩節(jié)點(diǎn)之間的廣義沃羅諾伊圖作為這兩節(jié)點(diǎn)之間的最終路徑,遍歷整個(gè)節(jié)點(diǎn)序列后,即得到從起點(diǎn)到終點(diǎn)的完整路徑;房間內(nèi)使用a*路徑,走廊內(nèi)使用廣義沃羅諾伊圖作為路徑。
本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于:
(1)本發(fā)明應(yīng)用了語(yǔ)義導(dǎo)航的技術(shù),提高了機(jī)器人的智能,不同于一般技術(shù)在二值地圖上做路徑規(guī)劃,在本發(fā)明中,機(jī)器人可以明確直到當(dāng)前行走的區(qū)域的語(yǔ)義信息,即知道當(dāng)前的環(huán)境的何種環(huán)境;
(2)本發(fā)明提出了語(yǔ)義拓?fù)涞貓D(rtm)的概念,不同于一般技術(shù)建立的拓?fù)涞貓D,本發(fā)明中的拓?fù)涞貓D也是具有語(yǔ)義信息的,在語(yǔ)義拓?fù)渖蠈ふ业玫降淖疃搪窂綄в姓Z(yǔ)義信息,為多策略路徑規(guī)劃提供了基礎(chǔ);
(3)本發(fā)明使用了在地圖的不同語(yǔ)義部分使用不同路徑規(guī)劃算法的混合規(guī)劃策略,可以組合生成特征不同的路徑,亦即基于語(yǔ)義拓?fù)涞貓D,機(jī)器人在不同的運(yùn)動(dòng)場(chǎng)景下,調(diào)用不同的路徑規(guī)劃算法,將每一種路徑規(guī)劃算法的優(yōu)點(diǎn)在該運(yùn)動(dòng)場(chǎng)景下完全體現(xiàn)出來(lái),而隱去其不足之處,可說(shuō)這種混合策略規(guī)劃方法是綜合了各個(gè)路徑規(guī)劃算法的優(yōu)點(diǎn)并最大程度消除了路徑規(guī)劃算法的不足,在本發(fā)明中,a*路徑可以有效避開(kāi)障礙物,在房間內(nèi)這樣復(fù)雜的環(huán)境下可以發(fā)揮其最大的優(yōu)勢(shì),而在走廊內(nèi),廣義沃羅諾伊圖則可以得到最安全的路徑,兩者結(jié)合使得最終的路徑更加適合于機(jī)器人的行走。
附圖說(shuō)明
圖1為本發(fā)明語(yǔ)義拓?fù)涞貓D的示意圖;
圖2為本發(fā)明方法的流程圖;
圖3為本發(fā)明路徑規(guī)劃示意圖。
具體實(shí)施方式
如圖2所示,本發(fā)明具體實(shí)施步驟詳細(xì)說(shuō)明如下:
步驟1:對(duì)slam算法獲得的地圖首先進(jìn)行形態(tài)學(xué)閉操作,濾除slam地圖中的白噪聲,再對(duì)地圖進(jìn)行形態(tài)學(xué)開(kāi)操作,使地圖中各個(gè)獨(dú)立區(qū)域被分割出來(lái),得到的區(qū)域分割圖稱為基地圖,地圖預(yù)處理完成;
步驟2:將基地圖中每一個(gè)獨(dú)立區(qū)域內(nèi)的廣義沃羅諾伊圖與該區(qū)域建立映射關(guān)系,再對(duì)比相鄰區(qū)域之間的廣義沃羅諾伊圖,提取其共有的部分,取這部分廣義沃羅諾伊圖的中點(diǎn),作為這兩個(gè)相鄰區(qū)域的doorway。對(duì)每?jī)蓚€(gè)相鄰的區(qū)域都進(jìn)行這樣的操作,即可提取出地圖上每一個(gè)doorway;
步驟3:以每一個(gè)獨(dú)立區(qū)域的幾何中心作為節(jié)點(diǎn),每?jī)蓚€(gè)相鄰的區(qū)域之間建立邊,得到無(wú)向圖d,將無(wú)向圖d和每一個(gè)獨(dú)立區(qū)域的不變矩作為條件隨機(jī)場(chǎng)(crf)推斷的參數(shù),得到各個(gè)區(qū)域的類型,在本發(fā)明中,地圖的語(yǔ)義僅有兩種,即房間(room)和走廊(hallway)。假設(shè)無(wú)向圖共有n個(gè)節(jié)點(diǎn),則所有不同的語(yǔ)義組合共有2n種,則crf的循環(huán)次數(shù)即為2n次,在每次循環(huán)中,地圖的語(yǔ)義都有一個(gè)確定的狀態(tài),crf則通過(guò)計(jì)算每種狀態(tài)的置信度,并最終選取置信度最大的一個(gè)語(yǔ)義狀態(tài)作為最終的推斷結(jié)果,是房間(room)或是走廊(hallway)。crf的置信度計(jì)算可以由以下公式表示:
計(jì)算得到概率最大的語(yǔ)義組合即為crf的推斷結(jié)果,亦即最終每一個(gè)獨(dú)立區(qū)域均有一個(gè)語(yǔ)義信息;
步驟4:根據(jù)區(qū)域的相鄰關(guān)系將步驟2得到的doorway連接成一個(gè)無(wú)向圖。由于每一個(gè)doorway均與兩個(gè)相鄰區(qū)域相關(guān),對(duì)同一區(qū)域相關(guān)的任意兩個(gè)不同的doorway,一般來(lái)說(shuō)都為其添加邊,但若某一doorway在該區(qū)域內(nèi)已經(jīng)有三個(gè)不同的doorway與其相連,則不再為其添加新的邊,最終將得到一個(gè)連通的無(wú)向圖g(e,v),其中v代表圖頂點(diǎn),e代表邊,無(wú)向圖g即稱為區(qū)域拓?fù)涞貓D(rtm);
步驟5:根據(jù)步驟3所得的語(yǔ)義結(jié)果,將步驟4所得的rtm中每一條邊都區(qū)分為房間內(nèi)的和走廊內(nèi)的。若rtm某一條邊所連接的兩個(gè)節(jié)點(diǎn)必定與一個(gè)區(qū)域同時(shí)相關(guān),若該區(qū)域?yàn)樽呃?hallway),則該條邊為走廊內(nèi)的邊,否則該條邊為房間內(nèi)的邊。
步驟6:給定起點(diǎn)和終點(diǎn),在本發(fā)明中,假定所給的路徑規(guī)劃任務(wù)都是從房間到房間的規(guī)劃任務(wù),這也是符合一般機(jī)器人的路徑規(guī)劃任務(wù)特點(diǎn)。將起點(diǎn)和終點(diǎn)分別和與之最近的rtm中的節(jié)點(diǎn)連接,得到一張與特定規(guī)劃任務(wù)對(duì)應(yīng)的拓?fù)鋱D,并在該拓?fù)鋱D上應(yīng)用迪杰斯特拉(dijkstra)算法尋找從起點(diǎn)到終點(diǎn)的代價(jià)最小的節(jié)點(diǎn)序列,在本發(fā)明中,節(jié)點(diǎn)間的代價(jià)用節(jié)點(diǎn)之間的歐氏距離來(lái)計(jì)算。從起點(diǎn)開(kāi)始遍歷所得節(jié)點(diǎn)序列,根據(jù)上述無(wú)向圖的邊e上的標(biāo)記,若兩節(jié)點(diǎn)之間的邊是房間內(nèi)的邊,則在這兩點(diǎn)應(yīng)用a*路徑規(guī)劃算法得到最終路徑;若兩節(jié)點(diǎn)之間的邊是走廊內(nèi)的邊,則直接從廣義沃羅諾伊圖取得這兩節(jié)點(diǎn)之間的廣義沃羅諾伊圖作為這兩節(jié)點(diǎn)之間的最終路徑。遍歷整個(gè)節(jié)點(diǎn)序列后,即得到從起點(diǎn)到終點(diǎn)的完整路徑,其特征為:房間內(nèi)使用a*路徑,走廊內(nèi)使用廣義沃羅諾伊圖作為路徑。
如圖1,是本發(fā)明生成的區(qū)域分割和區(qū)域拓?fù)涞貓D的示意圖,三角形和星形示意處分別是起點(diǎn)和終點(diǎn),圖中各個(gè)圓點(diǎn)既表示區(qū)域間的doorway,也表示區(qū)域拓?fù)涞貓D的節(jié)點(diǎn),節(jié)點(diǎn)間的粗線表示房間內(nèi)的邊,節(jié)點(diǎn)間的細(xì)線則表示走廊內(nèi)的邊。
如圖3,是本發(fā)明路徑規(guī)劃的示意圖,三角形和星形示意處分別是起點(diǎn)和終點(diǎn),左圖是在區(qū)域拓?fù)涞貓D上求取最短路徑的結(jié)果示意,包含兩條房間內(nèi)的邊和走廊內(nèi)的邊,右圖則是在該最短路徑下的路徑規(guī)劃示意圖,在房間內(nèi)的邊上使用a*路徑規(guī)劃,用曲線作為示意,在走廊內(nèi)的邊上取用廣義沃羅諾伊圖作為路徑。