周 輝,李 震,江本赤,錢 乘
(安徽工程大學(xué) 機(jī)械與汽車工程學(xué)院,安徽 蕪湖241000)
在德國率先提出工業(yè)4.0后,機(jī)器人話題迅速升溫。機(jī)器人在工業(yè)、軍事、空間探索等方面得到長足發(fā)展[1]。同時(shí),人們對機(jī)器人運(yùn)動(dòng)路徑規(guī)劃方面也提出了更為嚴(yán)格的標(biāo)準(zhǔn),保證在到達(dá)目標(biāo)點(diǎn)的過程中,機(jī)器人可對運(yùn)動(dòng)路徑進(jìn)行智能判斷,包括避讓運(yùn)動(dòng)路徑上的障礙物,規(guī)劃最佳運(yùn)動(dòng)路徑等。機(jī)器人無碰撞路徑規(guī)劃是目前機(jī)器人路徑規(guī)劃環(huán)節(jié)中較為困難的一項(xiàng)。傳統(tǒng)的算法主要有可視圖法、柵格法和自由空間法等。這些算法主要用在靜態(tài)情況,即障礙物的位置和大小已知的情況下,而無法滿足現(xiàn)實(shí)生活中的各種突發(fā)情況。對此問題,目前應(yīng)用較為廣泛的解決方法有神經(jīng)網(wǎng)絡(luò)算法、人工勢場算法、A+算法和模糊邏輯算法等。其中,人工勢場算法相對簡單、對環(huán)境適應(yīng)性強(qiáng),但存在局部最小點(diǎn)和振動(dòng)激蕩,在面對大量障礙物時(shí)計(jì)算量較大、對計(jì)算機(jī)硬件要求較高的問題。
斯坦福大學(xué)教授Khatib最早提出基于人工勢場的機(jī)器人路徑規(guī)劃問題[2]。人工勢場算法是在機(jī)器人的運(yùn)動(dòng)空間內(nèi)人為構(gòu)建出一種抽象的引力場:目標(biāo)點(diǎn)對機(jī)器人產(chǎn)生吸引力,當(dāng)目標(biāo)點(diǎn)與機(jī)器人距離較遠(yuǎn)時(shí),吸引力較大;障礙物對機(jī)器人產(chǎn)生排斥力,當(dāng)障礙物與機(jī)器人距離較近時(shí),排斥力較大[3],避免機(jī)器人與障礙物發(fā)生碰撞。機(jī)器人每前進(jìn)一步都檢測與目標(biāo)點(diǎn)及障礙物之間的距離,計(jì)算在運(yùn)動(dòng)區(qū)域中受到的合力,在合力的作用下,進(jìn)行下一步運(yùn)動(dòng)。
圖1所示為傳統(tǒng)人工勢場算法的基本思想。如圖1所示,起點(diǎn)位置定義為坐標(biāo)原點(diǎn)Oi,定義目標(biāo)點(diǎn)位置為Oe,并在目標(biāo)點(diǎn)Oe處構(gòu)建一個(gè)吸引力場Uatt。其中,吸引力場形狀為V字形,也稱之為圓錐形勢阱[4–7]。
圖1 傳統(tǒng)人工勢場算法示意圖
機(jī)器人受到的吸引力大小與機(jī)器人和目標(biāo)點(diǎn)的距離成反比,距離越長,目標(biāo)點(diǎn)對機(jī)器人的牽引作用越強(qiáng)。吸引力場方程為
其中,Oi(q)表示機(jī)器人運(yùn)行至第i點(diǎn)位置時(shí)指向目標(biāo)點(diǎn)的位置矢量,Oi(qf)表示機(jī)器人在下一步長將到達(dá)點(diǎn)的位置矢量。
吸引力場在除目標(biāo)位置外的任何位置均可能存在不可導(dǎo)點(diǎn),會產(chǎn)生運(yùn)動(dòng)的不穩(wěn)定性。為此,我們采用距離的平方產(chǎn)生連續(xù)可導(dǎo)的勢場
由于機(jī)器人處于吸引力場內(nèi),在機(jī)器人運(yùn)動(dòng)空間中,目標(biāo)點(diǎn)對機(jī)器人產(chǎn)生的吸引力為
為防止機(jī)器人與障礙物發(fā)生碰撞,需要在機(jī)器人運(yùn)動(dòng)空間中構(gòu)建以障礙物位置為基礎(chǔ)的排斥力場。排斥力場形狀也如同倒立的V字形狀,表達(dá)式為:
障礙物對機(jī)器人的排斥力為
機(jī)器人所受到的合力為
傳統(tǒng)人工勢場算法存在的缺陷是:在機(jī)器人運(yùn)動(dòng)區(qū)域內(nèi)的障礙物密集度足夠大的情況下,對非必要障礙物進(jìn)行篩選時(shí),傳統(tǒng)人工勢場中的障礙物距離影響系數(shù)作用并不顯著,對周圍障礙物的篩選能力較弱,尤其當(dāng)周圍障礙點(diǎn)較密集時(shí),大部分無關(guān)障礙點(diǎn)也被計(jì)算機(jī)納入計(jì)算,計(jì)算量較大,對計(jì)算機(jī)硬件要求較高,可能會導(dǎo)致計(jì)算機(jī)系統(tǒng)崩潰。為此,我們提出一種簡化算法。
我們對人工勢場函數(shù)進(jìn)行的改進(jìn)是在排斥力場函數(shù)上引入斥力場增益函數(shù)。斥力場函數(shù)為:
障礙物對機(jī)器人的排斥力函數(shù)為
為了驗(yàn)證該算法,我們在MATLAB中采用寬度為5、步速為10的移動(dòng)機(jī)器人為仿真對象。為去除大部分不必要的影響因素,在障礙物的選取上只考慮對機(jī)器人運(yùn)動(dòng)影響最大的障礙物。得到簡化算法流程如圖2所示,簡化前后的機(jī)器人路徑規(guī)劃圖如圖3所示。
圖2 簡化算法流程圖
圖3 簡化前后機(jī)器人路徑規(guī)劃圖
現(xiàn)有的基于人工勢場的MATLAB程序采用分組設(shè)計(jì),分別由參數(shù)化模塊、引力計(jì)算模塊、斥力計(jì)算模塊、合力計(jì)算模塊和繪圖模塊組成。其中,斥力計(jì)算模塊主要用于計(jì)算在每一步長下所有障礙物對機(jī)器人產(chǎn)生斥力的大小及方向。我們修改斥力計(jì)算模塊,在其中添加斥力增益函數(shù)來達(dá)到簡化的目的。通過圖3中簡化前后的運(yùn)動(dòng)軌跡可以看出,采用簡化算法后所生成的避障路徑并未發(fā)生明顯變化且均能到達(dá)目標(biāo)點(diǎn),對運(yùn)動(dòng)軌跡的生成并未造成干擾。
在地圖中設(shè)置4組障礙點(diǎn),在機(jī)器人完成目標(biāo)點(diǎn)運(yùn)動(dòng)后,在 MATLAB 編輯器中輸入 feature(“memstats”)命令,查看采用簡化算法前后計(jì)算機(jī)運(yùn)行內(nèi)存占用情況。生成計(jì)算機(jī)運(yùn)存占用情況如圖4所示。通過圖4可以看出,在障礙物只有4個(gè)的情況下,簡化前后的人工勢場程序在計(jì)算機(jī)中占用運(yùn)行內(nèi)存的大小,運(yùn)行內(nèi)存占用下降約60 MB,下降幅度約為1.6%。
在地圖中設(shè)置10組障礙點(diǎn),計(jì)算內(nèi)存情況如圖5所示。從圖5可以看出,在障礙物數(shù)量為10時(shí),運(yùn)存下降約200 MB,下降幅值約為4%。如圖6所示,隨著障礙物的增多,機(jī)器人所受的影響逐漸增大。仿真結(jié)果表明:在兩種算法均能到達(dá)目標(biāo)點(diǎn)的情況下,簡化算法對計(jì)算機(jī)硬件要求更低,占用計(jì)算機(jī)資源計(jì)算空間更少。
圖5 10組障礙點(diǎn)所需內(nèi)存大小
圖6 計(jì)算機(jī)運(yùn)行內(nèi)存隨障礙點(diǎn)的變化
分析了傳統(tǒng)人工勢場所存在問題,提出了一套簡化方案:在不改變目標(biāo)點(diǎn)位置的情況下,當(dāng)機(jī)器人運(yùn)動(dòng)路徑周圍存在較多障礙物時(shí),通過篩選留下影響最大的障礙物,去除非必要障礙物,避免過多冗余變量的產(chǎn)生。通過MATLAB仿真實(shí)驗(yàn)證明:該算法更加精簡,對電腦硬件要求更低,能夠有效降低電腦運(yùn)存,提高電腦使用效率。