*,移動(dòng)機(jī)器人是工廠物料運(yùn)輸?shù)慕鉀Q方案,是提高生產(chǎn)效率,降低生產(chǎn)成本,增強(qiáng)生產(chǎn)穩(wěn)定性的*。為了滿(mǎn)足工業(yè)生產(chǎn)需求,一款的移動(dòng)機(jī)器人產(chǎn)品首先需要解決三大問(wèn)題:
小藍(lán)(杭州藍(lán)芯科技有限公司簡(jiǎn)稱(chēng))就是專(zhuān)業(yè)解決導(dǎo)航規(guī)劃問(wèn)題滴,接下來(lái)就和大家好好嘮嘮怎么實(shí)現(xiàn)一次走位。
軌跡計(jì)劃
世界上遙遠(yuǎn)的距離不是生與死,而是明明出口就在眼前,而我卻要去遠(yuǎn)遠(yuǎn)的兜一圈才能到。移動(dòng)機(jī)器人在面對(duì)復(fù)(luan)雜(dui)環(huán)(luan)境(fang)時(shí),也需要完成走迷宮般的絕望任務(wù)。
圖 1
為了應(yīng)付復(fù)雜的人類(lèi)以及胖胖的自己,我們機(jī)智的機(jī)器人,擁有了自己的軌跡規(guī)劃方法。那就是把你們變胖,把自己變瘦(美麗)!于是提出了兩個(gè)重要假設(shè)(敲黑板):
機(jī)器人是一個(gè)點(diǎn),障礙物按機(jī)器人半徑進(jìn)行膨脹;
機(jī)器人是完整的,忽略非完整約束對(duì)姿態(tài)的限制;
于是,工作空間就的降為了二維物理空間(姿態(tài)空間),如圖2
圖 2
于是路徑規(guī)劃問(wèn)題就變成了姿態(tài)空間的搜索問(wèn)題:在自由姿態(tài)空間中為機(jī)器人尋找一條路徑,使其從初始姿態(tài)發(fā)展到目標(biāo)姿態(tài)。將姿態(tài)空間離散化以后,就能進(jìn)行啦。
快速擴(kuò)展隨機(jī)樹(shù)法(RRT)
快速擴(kuò)展隨機(jī)樹(shù)法可以看作一種樹(shù)形算法,它從一個(gè)起始構(gòu)型(對(duì)于二維圖,就是一個(gè)點(diǎn))出發(fā),不斷延伸樹(shù)型數(shù)據(jù),終與目標(biāo)點(diǎn)相連。具體做法就是以一個(gè)初始點(diǎn)作為根節(jié)點(diǎn),通過(guò)隨機(jī)采樣增加葉子節(jié)點(diǎn)的方式,生成一個(gè)隨機(jī)擴(kuò)展樹(shù),當(dāng)隨機(jī)樹(shù)中的葉子節(jié)點(diǎn)包含了目標(biāo)點(diǎn)或進(jìn)入了目標(biāo)區(qū)域,便可以在隨機(jī)樹(shù)中找到一條由從初始點(diǎn)到目標(biāo)點(diǎn)的路徑。
圖 3
RRT算法也有一些缺點(diǎn),它是一種純粹的隨機(jī)搜索算法對(duì)環(huán)境類(lèi)型不敏感,當(dāng)C-空間中包含大量障礙物或狹窄通道約束時(shí),算法的收斂速度慢,效率會(huì)大幅下降。同時(shí),RRT 的一個(gè)弱點(diǎn)是難以在有狹窄通道的環(huán)境找到路徑。因?yàn)楠M窄通道面積小,被碰到的概率低。
因此有學(xué)者提出了RRTConnect算法,基本的RRT每次搜索都只有從初始狀態(tài)點(diǎn)生長(zhǎng)的快速擴(kuò)展隨機(jī)樹(shù)來(lái)搜索整個(gè)狀態(tài)空間,如果從初始狀態(tài)點(diǎn)和目標(biāo)狀態(tài)點(diǎn)同時(shí)生長(zhǎng)兩棵快速擴(kuò)展隨機(jī)樹(shù)來(lái)搜索狀態(tài)空間,效率會(huì)更高。
該算法與原始RRT相比,在目標(biāo)點(diǎn)區(qū)域建立第二棵樹(shù)進(jìn)行擴(kuò)展。每一次迭代中,開(kāi)始步驟與原始的RRT算法一樣,都是采樣隨機(jī)點(diǎn)然后進(jìn)行擴(kuò)展。然后擴(kuò)展完棵樹(shù)的新節(jié)點(diǎn)qnew后,以這個(gè)新的目標(biāo)點(diǎn)作為第二棵樹(shù)擴(kuò)展的方向。
圖 4
這種雙向的RRT技術(shù)具有良好的搜索特性,比原始RRT算法的搜索速度、搜索效率有了顯著提高,被廣泛應(yīng)用。首先,Connect算法較之前的算法在擴(kuò)展的步長(zhǎng)上更長(zhǎng),使得樹(shù)的生長(zhǎng)更快;其次,兩棵樹(shù)不斷朝向?qū)Ψ浇惶鏀U(kuò)展,而不是采用隨機(jī)擴(kuò)展的方式,特別當(dāng)起始位姿和目標(biāo)位姿處于約束區(qū)域時(shí),兩棵樹(shù)可以通過(guò)朝向?qū)Ψ娇焖贁U(kuò)展而逃離各自的約束區(qū)域。這種帶有啟發(fā)性的擴(kuò)展使得樹(shù)的擴(kuò)展更加貪婪和明確,使得雙樹(shù)RRT算法較之單樹(shù)RRT算法更加有效。
單元分解法
單元分解法的基本思想是將姿態(tài)空間中的自由空間分隔成幾個(gè)小區(qū)域,將每個(gè)區(qū)域當(dāng)成一個(gè)單元。以單元為頂點(diǎn),以單元之間的相鄰關(guān)系為邊構(gòu)成一張連通圖。然后在連通圖中搜索初始姿態(tài)和目標(biāo)姿態(tài)所在的單元,然后搜索連接初始單元和目標(biāo)單元的路徑。后就能按照所得路徑的單元序列生成單元內(nèi)部的路徑了。
圖 5
單元分解法的有點(diǎn)在于,機(jī)器人不需要考慮它在每個(gè)空閑單元中的具體位置,只需要考慮如何從一個(gè)單元移動(dòng)到相鄰的空閑單元,同時(shí)單元數(shù)和環(huán)境大小無(wú)關(guān)。
但是計(jì)算效率會(huì)地依賴(lài)于環(huán)境中的物體的復(fù)雜度,為了解決這方面的問(wèn)題,又提出了新的單元分解法,也就是柵格表示法:將環(huán)境分解成若干個(gè)大小相同的柵格。這樣其實(shí)就是對(duì)地圖的一種近似,就不用考慮環(huán)境的疏密和物體形狀的復(fù)雜度。
圖 6
人工勢(shì)場(chǎng)法
人工勢(shì)場(chǎng)法利用磁場(chǎng)的特性來(lái)解決路徑規(guī)劃的問(wèn)題。假設(shè)目標(biāo)點(diǎn)對(duì)機(jī)器人產(chǎn)生吸引力,障礙物對(duì)機(jī)器人產(chǎn)生排斥力。這樣就能根據(jù)力的合成構(gòu)成機(jī)器人的控制方法了。
圖 7
引力場(chǎng)(attraction)隨機(jī)器人與目標(biāo)點(diǎn)的距離增加而單調(diào)遞增,且方向指向目標(biāo)點(diǎn);斥力場(chǎng)(repulsion)在機(jī)器人處在障礙物位置時(shí)有一值,并隨機(jī)器人與障礙物距離的增大而單調(diào)減小,方向指向遠(yuǎn)離障礙物方向。如圖8就是引力場(chǎng)和斥力場(chǎng)同時(shí)作用下的勢(shì)場(chǎng)圖。
圖 8
人工勢(shì)場(chǎng)法通過(guò)構(gòu)建人工勢(shì)場(chǎng),進(jìn)行勢(shì)場(chǎng)力計(jì)算,受力分析進(jìn)而計(jì)算合力,得到終加速度。
圖 9
人工勢(shì)場(chǎng)法結(jié)構(gòu)簡(jiǎn)單,便于底層的實(shí)時(shí)控制,在實(shí)時(shí)避障和平滑的軌跡控制方面得到廣泛的應(yīng)用。但是由于斥力作用范圍較小的問(wèn)題,勢(shì)場(chǎng)法只能解決局部空間的避障問(wèn)題,它缺乏全局信息,這樣,它就很容易陷入局部小值。當(dāng)機(jī)器人位于局部小點(diǎn)的時(shí)候,機(jī)器人容易產(chǎn)生振蕩或者停滯不前。障礙物越多,產(chǎn)生局部小點(diǎn)的可能性就越大,產(chǎn)生局部小點(diǎn)的數(shù)量也就越多,這是具體實(shí)現(xiàn)過(guò)程中需要注意的。
通過(guò)上述介紹,想必大家存在一個(gè)疑惑,構(gòu)建了很多單元和路徑(拓?fù)鋱D),那么如何去搜索路徑呢,又怎么去判斷哪條路徑更加呢。下期論點(diǎn),讓我們討論路徑規(guī)劃算法中的路徑所搜法,一起學(xué)習(xí)A*算法,遺傳算法以及粒子濾波算法是如何為我們服務(wù)的。