本發(fā)明涉及一種改進(jìn)的光流算法及其在移動機(jī)器人導(dǎo)航上的應(yīng)用,屬于機(jī)器視覺應(yīng)用領(lǐng)域。
背景技術(shù):
光流是圖像運動的表達(dá)方式,是三維場景中物體在平面投影中的速度,可以看成是三維物體運動在成像平面投影的近似,在原則上可以近似獲得三維物體的結(jié)構(gòu)信息。因此光流計算不局限于用來進(jìn)行物體的運動估計,在三維重建、圖像配準(zhǔn)、目標(biāo)檢測和運動分割也有廣泛的應(yīng)用。雖然在光流計算的研究上目前以取得了豐碩的成果,但是光流算法仍然存在著易受光照變化和噪聲影響,大位移問題的處理,異質(zhì)點和算法實時性等等問題。
移動機(jī)器人是具有感知、思維和行動功能的機(jī)器,其在多種領(lǐng)域發(fā)揮了重要作用,比如清潔機(jī)器人、軍事探測機(jī)器人。基于光流的導(dǎo)航避障方法是受到大自然中飛行昆蟲的啟發(fā),科學(xué)家們通過解剖學(xué)、神經(jīng)生理學(xué)、電生理學(xué)的方法已經(jīng)對飛行昆蟲的視覺系統(tǒng)進(jìn)行了大量的研究。研究發(fā)現(xiàn),飛行昆蟲的視覺感知器官-復(fù)眼與人類相比,兩只復(fù)眼的距離很近,復(fù)眼的空間分辨率很低,但是復(fù)眼對時域非常敏感。基于以上特點,飛行昆蟲并不是利用雙目立體視覺來進(jìn)行導(dǎo)航的。srinivasan教授對蜜蜂做了大量的實驗,證明蜜蜂是通過兩眼中圖像速度即光流進(jìn)行導(dǎo)航的。
根據(jù)飛行昆蟲的視覺導(dǎo)航機(jī)理,以nicolasfranceschini為首的研究小組花了數(shù)年時間研究蒼蠅的視覺系統(tǒng)和它們是如何檢測并利用光流的,然后在實驗的基礎(chǔ)上研制出能夠在避開障礙物的過程中不斷接近目標(biāo)的輪式機(jī)器人“robotmouche”。srinivasan所在的研究小組通過研究蜜蜂的視覺行為,發(fā)現(xiàn)蜜蜂通過平衡映射在兩側(cè)眼睛上圖像運動的速度(光流)來調(diào)節(jié)它們的飛行方向。他們在裝有一個攝像頭和兩面鏡子的輪式機(jī)器人“corridor-followingrobot”上驗證了這個機(jī)制。后來srinivasan研究小組的sobey受到昆蟲飛行靈感的啟發(fā),提出一種使基于視覺的機(jī)器人在混亂的環(huán)境中安全行走的算法,并研制出的另外一個機(jī)器人“obstacle-avoidingrobot”。santos-victor等人研發(fā)了一個基于光流的視覺系統(tǒng)robee,該系統(tǒng)模擬了蜜蜂的視覺行為,認(rèn)為昆蟲的眼睛長在兩側(cè)的優(yōu)勢就在于它們的導(dǎo)航機(jī)制是基于運動產(chǎn)生的特征,而不是深度信息。在robee中,一個分開的雙目視覺方法被用于模仿蜜蜂的中心反射(centeringreflex)。
以上基于光流的導(dǎo)航避障方法,都是模擬蜜蜂的中心策略,通過平衡左右視場的光流幅值使機(jī)器人避開障礙物。這種方法只能適應(yīng)簡單的類似走廊的環(huán)境,機(jī)器人能在這種環(huán)境中沿著走廊的中心線行走,并不能滿足復(fù)雜環(huán)境中的避障。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供了一種基于改進(jìn)光流算法的移動機(jī)器人導(dǎo)航方法,針對目前光流算法在實際應(yīng)用中的不足之處,對光流算法進(jìn)行改進(jìn),在不需要建立復(fù)雜的環(huán)境模型的情況下,根據(jù)得到的光流矢量信息和機(jī)器人的位置信息通過人工勢場原理得出機(jī)器人的行駛路徑。
為實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為一種基于改進(jìn)光流算法的移動機(jī)器人導(dǎo)航方法,如圖1所示,該方法是按以下步驟實現(xiàn)的;
s1機(jī)器人開機(jī)啟動,進(jìn)行初始化,獲取初始化狀態(tài)參數(shù)、當(dāng)前坐標(biāo)位置和最終目標(biāo)點。
s2賦予機(jī)器人速度v,讓機(jī)器人以速度v勻速向前運動,獲得前后兩幀圖像。
s3輸入圖像,建立改進(jìn)光流算法的能量泛函模型。
針對基本光流計算方法中存在的對于光照變化的情況和噪聲非常敏感的問題,通過引入梯度守恒假設(shè),并使用了局部加權(quán)和雙邊濾波定義了新的數(shù)據(jù)項來改善這個問題,同時應(yīng)用charbonnie懲罰函數(shù)降低了數(shù)據(jù)線性化所造成的誤差,較好的解決了對突變區(qū)域的灰度間斷和分段平滑的問題,提高了計算結(jié)果的準(zhǔn)確性。
則改進(jìn)的變分方法得到光流估計模型如下式所示:
其中
對于窗函數(shù),采取雙邊濾波來代替高斯濾波。雙邊濾波對于高斯濾波的改進(jìn)就在于雙邊濾波屬于非線性濾波,在采樣時不僅考慮了像素點的空間位置關(guān)系,同時加入了對像素間的相似程度考慮。雙邊濾波是由空域高斯濾波和值域高斯濾波組合得到的??沼驗V波和值域濾波分別是對空間鄰域上的點和像素灰度值相近的點進(jìn)行加權(quán)平均,加權(quán)系數(shù)分別隨著距離和灰度值差的增大而減小。表達(dá)式如下:
其中,
其中,σs為高斯函數(shù)的距離標(biāo)準(zhǔn)差,σr為灰度值標(biāo)準(zhǔn)差。則通過調(diào)節(jié)兩個參數(shù),就可在過平滑和欠平滑中找到平衡,過平滑指的是圖像特征過分模糊,欠平滑指的是由于圖像中的噪聲和細(xì)紋理所引起的突變量過多。
s4構(gòu)造圖像金字塔。通過設(shè)定圖像采樣因子和最低分辨率閾值,即可自動獲取金字塔的層數(shù)。用兩幀圖像的第一幀為金字塔的原始圖像,用雙線性插值的方法進(jìn)行降采樣,直到滿足最低分辨率的閾值,這樣就得到了k層圖像。
s5用交替迭代的方法求解每層金字塔的光流矢量。將能量泛函最小化問題轉(zhuǎn)化為交替迭代的計算,加快計算的收斂速度,同時避免固定點迭代需要引入?yún)?shù),增加人為誤差的情況。通過引進(jìn)光流場的輔助變量
其中λ為小正常數(shù),取0.5。
當(dāng)
(1)固定
其中po=0,τ≤1/4。
(2)固定u,式
根據(jù)光流模型的求解分為兩個部分(1)、(2)反復(fù)迭代求解u
s6若為金字塔的最后一層,則輸出光流場u;否則將u,
s7根據(jù)輸出的光流場計算每個像素點的ttc(timetocontact);計算公式如下:
ttc=2/div(u,v)
s8構(gòu)造虛擬引力和斥力,確定機(jī)器人的最佳前進(jìn)方向;其具體步驟為:
s8.1根據(jù)相對深度ttc構(gòu)造障礙物虛擬斥力場模型:
式中δ為正比例位置增益系數(shù);ttc(x0,y0)為正常數(shù),表示障礙物區(qū)域?qū)C(jī)器人運動產(chǎn)生影響的最大相對深度;將整個圖像平面分成寬度相等的n列,n為5,對每一列包含的所有像素點的ttc的平均值,得到ttc(xi,yi)={ttc(x1,y1),ttc(x2,y2),...,ttc(xn,yn)}。
根據(jù)斥力模型得到機(jī)器人所受的排斥力:
式中
s8.2通過目標(biāo)的坐標(biāo)與機(jī)器人的末端位姿構(gòu)建目標(biāo)虛擬引力場模型:
為避免運動初期距離目標(biāo)較遠(yuǎn)時產(chǎn)生過大的虛擬引力的情況,通過d0對機(jī)器人處于距離目標(biāo)不同距離產(chǎn)生不同虛擬引力。得到的虛擬引力為:
s8.3計算合力方向并確定機(jī)器人的前進(jìn)方向。
合力方向決定被控對象的運動方向,在以機(jī)器人相機(jī)坐標(biāo)系為坐標(biāo)軸建立的引力點函數(shù)上,若選取引力點xg=(xg,yg),則機(jī)器人與引力點之間的夾角為:
a=arctan(yg,xg)
引力在橫、縱坐標(biāo)的分力為:
在坐標(biāo)軸建立的斥力點函數(shù)上,若選取斥力點xo(i)=(xo(i),yo(i)),則機(jī)器人與障礙物之間的夾角為:
bi=arctan(yo(i),xo(i))
斥力在橫、縱坐標(biāo)的分力為:
則機(jī)器人與合力的夾角,即期望的航向角為:
θ=arctan((fatt(y)+frep(y(i)))/(fatt(x)+frep(x(i))))
s9控制機(jī)器人旋轉(zhuǎn)前進(jìn)并記錄當(dāng)前的位置。
s10若機(jī)器人到達(dá)目標(biāo)點則停止運動,若還未到達(dá)目標(biāo)點則轉(zhuǎn)到s2繼續(xù)行走。
本發(fā)明公開了一種基于改進(jìn)光流的移動機(jī)器人導(dǎo)航方法,該方法能適應(yīng)復(fù)雜環(huán)境,根據(jù)單目攝像頭獲取的圖像序列分析障礙物分布,選擇最佳前進(jìn)方向。運用此方法,機(jī)器人可以在未知的充滿障礙物的環(huán)境中避開障礙物,朝目標(biāo)點行走。
附圖說明
圖1是基于光流的移動機(jī)器人導(dǎo)航方法的流程圖。
圖2是構(gòu)建的充滿了障礙物3d環(huán)境圖中行走的某一時刻獲取的兩幀圖像。
圖3為在圖2時刻計算出的光流場。
圖4為根據(jù)所求光流場得到的ttc(xi,yi)。
圖5為機(jī)器人在構(gòu)建虛擬環(huán)境圖的行走路線圖,圓圈表示目標(biāo)點。
具體實施方式
本實施例以前述的技術(shù)方案為前提,利用matlab虛擬現(xiàn)實工具箱搭建了一個充滿障礙物的虛擬的3d環(huán)境,如圖2所示,按照圖1所示的流程圖進(jìn)行實施,具體實施方案為:
s1機(jī)器人開機(jī)啟動,進(jìn)行初始化,獲取初始化狀態(tài)參數(shù)、當(dāng)前坐標(biāo)位置和最終目標(biāo)點。
s2賦予機(jī)器人速度v,v=0.05m/s讓機(jī)器人以速度v勻速向前運動,獲得前后兩幀圖像。
s3輸入圖像,建立改進(jìn)光流算法的能量泛函模型:
s4構(gòu)造圖像金字塔。本發(fā)明選取的采樣因子為0.5,最低分辨率的閾值為圖像的長寬都小于等于20。
s5用交替迭代的方法求解每層金字塔的光流矢量。
s6若為金字塔的最后一層,則輸出光流場u;否則將u,
s7根據(jù)輸出的光流場計算每個像素點的ttc(timetocontact);計算公式如下:
ttc=2/div(u,v)
s8構(gòu)造虛擬引力和斥力,確定機(jī)器人的最佳前進(jìn)方向;其具體步驟為:
s8.1根據(jù)相對深度ttc構(gòu)造障礙物虛擬斥力場模型:
式中δ為正比例位置增益系數(shù);ttc(x0,y0)為正常數(shù),表示障礙物區(qū)域?qū)C(jī)器人運動產(chǎn)生影響的最大相對深度;將整個圖像平面分成寬度相等的n列,n為5,對每一列包含的所有像素點的ttc求平均,得到ttc(xi,yi)={ttc(x1,y1),ttc(x2,y2),...,ttc(xn,yn)}。
根據(jù)斥力模型得到機(jī)器人所受的排斥力:
式中
s8.2通過目標(biāo)的坐標(biāo)與機(jī)器人的末端位姿構(gòu)建目標(biāo)虛擬引力場模型:
為避免運動初期距離目標(biāo)較遠(yuǎn)時產(chǎn)生過大的虛擬引力的情況,通過d0對機(jī)器人處于距離目標(biāo)不同距離產(chǎn)生不同虛擬引力。得到的虛擬引力為:
s8.3根據(jù)這兩力的合力確定機(jī)器人的前進(jìn)方向。機(jī)器人與合力的夾角,即期望的航向角為:
θ=arctan((fatt(y)+frep(y(i)))/(fatt(x)+frep(x(i))))
式中
s9控制機(jī)器人旋轉(zhuǎn)前進(jìn)并記錄當(dāng)前的位置。
s10若機(jī)器人到達(dá)目標(biāo)點則停止運動,若還未到達(dá)目標(biāo)點則轉(zhuǎn)到s2繼續(xù)行走。
讓機(jī)器人以上述方法在虛擬環(huán)境中漫游,機(jī)器人安全地繞過障礙物,無碰撞的行走,最終到達(dá)目標(biāo)點。證明了本發(fā)明方法的有效性。