機(jī)器人視覺避障解讀:從傳感器到算法原理
發(fā)布時(shí)間:2019-03-19 責(zé)任編輯:xueqi
【導(dǎo)讀】視覺避障是指移動(dòng)機(jī)器人在行走過程中,通過傳感器感知到在其規(guī)劃路線上存在靜態(tài)或動(dòng)態(tài)障礙物時(shí),按照 一定的算法實(shí)時(shí)更新路徑,繞過障礙物,最后達(dá)到目標(biāo)點(diǎn)。以下將從傳感器到算法原理,解讀機(jī)器人如何實(shí)現(xiàn)視覺避障。
避障常用哪些傳感器?
不管是要進(jìn)行導(dǎo)航規(guī)劃還是避障,感知周邊環(huán)境信息是第一步。就避障來說,移動(dòng)機(jī)器人需要通過傳感器 實(shí)時(shí)獲取自身周圍障礙物信息,包括尺寸、形狀和位置等信息。避障使用的傳感器多種多樣,各有不同的原理和特點(diǎn),目前常見的主要有視覺傳感器、激光傳感器、紅外傳感器、超聲波傳感器等。下面我簡(jiǎn)單介紹一下這幾種傳感器的基本工作原理。
超聲波
超聲波傳感器的基本原理是測(cè)量超聲波的飛行時(shí)間,通過d=vt/2測(cè)量距離,其中d是距離,v是聲速,t是 飛行時(shí)間。由于超聲波在空氣中的速度與溫濕度有關(guān),在比較精確的測(cè)量中,需把溫濕度的變化和其它因素考慮進(jìn)去。
上面這個(gè)圖就是超聲波傳感器信號(hào)的一個(gè)示意。通過壓電或靜電變送器產(chǎn)生一個(gè)頻率在幾十kHz的超聲波脈沖組成波包,系統(tǒng)檢測(cè)高于某閾值的反向聲波,檢測(cè)到后使用測(cè)量到的飛行時(shí)間計(jì)算距離。超聲波傳感器一般作用距離較短,普通的有效探測(cè)距離都在幾米,但是會(huì)有一個(gè)幾十毫米左右的最小探測(cè)盲區(qū)。由于超聲傳感器的成本低、實(shí)現(xiàn)方法簡(jiǎn)單、技術(shù)成熟,是移動(dòng)機(jī)器人中常用的傳感器。超聲波傳感器也有一些缺點(diǎn),首先看下面這個(gè)圖。
因?yàn)槁曇羰清F形傳播的,所以我們實(shí)際測(cè)到的距離并不是 一個(gè)點(diǎn),而是某個(gè)錐形角度范圍內(nèi)最近物體的距離。
另外,超聲波的測(cè)量周期較長(zhǎng),比如3米左右的物體,聲波傳輸這么遠(yuǎn)的距離需要約20ms的時(shí)間。再者,不同材料對(duì)聲波的反射或者吸引是不相同的,還有多個(gè)超聲傳感器之間有可能會(huì)互相干擾,這都是實(shí)際應(yīng)用的過程中需要考慮的。
紅外
一般的紅外測(cè)距都是采用三角測(cè)距的原理。紅外發(fā)射器按照一定角度發(fā)射紅外光束,遇到物體之后,光會(huì)反向回來,檢測(cè)到反射光之后,通過結(jié)構(gòu)上的幾何三角關(guān)系,就可以計(jì)算出物體距離D。
當(dāng)D的距離足夠近的時(shí)候,上圖中L值會(huì)相當(dāng)大,如果超過CCD的探測(cè)范圍,這時(shí),雖然物體很近,但是傳感器反而看不到了。當(dāng)物體距離D很大時(shí),L值就會(huì)很小,測(cè)量量精度會(huì)變差。因此,常見的紅外傳感器 測(cè)量距離都比較近,小于超聲波,同時(shí)遠(yuǎn)距離測(cè)量也有最小距離的限制。另外,對(duì)于透明的或者近似黑體的物體,紅外傳感器是無(wú)法檢測(cè)距離的。但相對(duì)于超聲來說,紅外傳感器具有更高的帶寬。
激光
常見的激光雷達(dá)是基于飛行時(shí)間的(ToF,time of flight),通過測(cè)量激光的飛行時(shí)間來進(jìn)行測(cè)距d=ct/2,類似于前面提到的超聲測(cè)距公式,其中d是距離,c是光速,t是從發(fā)射到接收的時(shí)間間隔。激光雷達(dá)包括發(fā)射器和接收器 ,發(fā)射器用激光照射目標(biāo),接收器接收反向回的光波。機(jī)械式的激光雷達(dá)包括一個(gè)帶有鏡子的機(jī)械機(jī)構(gòu),鏡子的旋轉(zhuǎn)使得光束可以覆蓋 一個(gè)平面,這樣我們就可以測(cè)量到一個(gè)平面上的距離信息。
對(duì)飛行時(shí)間的測(cè)量也有不同的方法,比如使用脈沖激光,然后類似前面講的超聲方案,直接測(cè)量占用的時(shí)間,但因?yàn)楣馑龠h(yuǎn)高于聲速,需要非常高精度的時(shí)間測(cè)量元件,所以非常昂貴;另一種發(fā)射調(diào)頻后的連續(xù)激光波,通過測(cè)量接收到的反射波之間的差頻來測(cè)量時(shí)間。
比較簡(jiǎn)單的方案是測(cè)量反射光的相移,傳感器以已知的頻率發(fā)射一定幅度的調(diào)制光,并測(cè)量發(fā)射和反向信號(hào)之間的相移,如上圖一。調(diào)制信號(hào)的波長(zhǎng)為lamda=c/f,其中c是光速,f是調(diào)制頻率,測(cè)量到發(fā)射和反射光束之間的相移差theta之后,距離可由lamda*theta/4pi計(jì)算得到,如上圖二。
激光雷達(dá)的測(cè)量距離可以達(dá)到幾十米甚至上百米,角度分辨率高,通??梢赃_(dá)到零點(diǎn)幾度,測(cè)距的精度也高。但測(cè)量距離的置信度會(huì)反比于接收信號(hào)幅度的平方,因此,黑體或者遠(yuǎn)距離的物體距離測(cè)量不會(huì)像光亮的、近距離的物體那么好的估計(jì)。并且,對(duì)于透明材料,比如玻璃,激光雷達(dá)就無(wú)能為力了。還有,由于結(jié)構(gòu)的復(fù)雜、器件成本高,激光雷達(dá)的成本也很高。
一些低端的激光雷達(dá)會(huì)采用三角測(cè)距的方案進(jìn)行測(cè)距。但這時(shí)它們的量程會(huì)受到限制,一般幾米以內(nèi),并且精度相對(duì)低一些,但用于室內(nèi)低速環(huán)境的SLAM或者在室外環(huán)境只用于避障的話,效果還是不錯(cuò)的。
視覺
常用的計(jì)算機(jī)視覺方案也有很多種, 比如雙目視覺,基于TOF的深度相機(jī),基于結(jié)構(gòu)光的深度相機(jī)等。深度相機(jī)可以同時(shí)獲得RGB圖和深度圖,不管是基于TOF還是結(jié)構(gòu)光,在室外強(qiáng)光環(huán)境下效果都并不太理想,因?yàn)樗鼈兌际切枰鲃?dòng)發(fā)光的。
像基于結(jié)構(gòu)光的深度相機(jī),發(fā)射出的光會(huì)生成相對(duì)隨機(jī)但又固定的斑點(diǎn)圖樣,這些光斑打在物體上后,因?yàn)榕c攝像頭距離不同,被攝像頭捕捉到的位置也不相同,之后先計(jì)算拍到的圖的斑點(diǎn)與標(biāo)定的標(biāo)準(zhǔn)圖案在不同位置的偏移,利用攝像頭位置、傳感器大小等參數(shù)就可以計(jì)算出物體與攝像頭的距離。而我們目前的E巡機(jī)器人主要是工作在室外環(huán)境,主動(dòng)光源會(huì)受到太陽(yáng)光等條件的很大影響,所以雙目視覺這種被動(dòng)視覺方案更適合,因此我們采用的視覺方案是基于雙目視覺的。
雙目視覺的測(cè)距本質(zhì)上也是三角測(cè)距法,由于兩個(gè)攝像頭的位置不同,就像我們?nèi)说膬芍谎劬σ粯樱吹降奈矬w不一樣。兩個(gè)攝像頭看到的同一個(gè)點(diǎn)P,在成像的時(shí)候會(huì)有不同的像素位置,此時(shí)通過三角測(cè)距就可以測(cè)出這個(gè)點(diǎn)的距離。與結(jié)構(gòu)光方法不同的是,結(jié)構(gòu)光計(jì)算的點(diǎn)是主動(dòng)發(fā)出的、已知確定的,而雙目算法計(jì)算的點(diǎn)一般是利用算法抓取到的圖像特征,如SIFT或SURF特征等,這樣通過特征計(jì)算出來的是稀疏圖。
要做良好的避障,稀疏圖還是不太夠的,我們需要獲得的是稠密的點(diǎn)云圖,整個(gè)場(chǎng)景的深度信息。稠密匹配的算法大致可以分為兩類,局部算法和全局算法。局部算法使用像素局部的信息來計(jì)算其深度,而全局算法采用圖像中的所有信息進(jìn)行計(jì)算。一般來說,局部算法的速度更快,但全局算法的精度更高。
這兩類各有很多種不同方式的具體算法實(shí)現(xiàn)。能過它們的輸出我們可以估算出整個(gè)場(chǎng)景中的深度信息,這個(gè)深度信息可以幫助我們尋找地圖場(chǎng)景中的可行走區(qū)域以及障礙物。整個(gè)的輸出類似于激光雷達(dá)輸出的3D點(diǎn)云圖,但是相比來講得到信息會(huì)更豐富,視覺同激光相比優(yōu)點(diǎn)是價(jià)格低很多,缺點(diǎn)也比較明顯,測(cè)量精度要差 一些,對(duì)計(jì)算能力的要求也高很多。當(dāng)然,這個(gè)精度差是相對(duì)的,在實(shí)用的過程中是完全足夠的,并且我們目前的算法在我們的平臺(tái)NVIDIA TK1和TX1上是可以做到實(shí)時(shí)運(yùn)行。
KITTI采集的圖
實(shí)際輸出的深度圖,不同的顏色代表不同的距離
在實(shí)際應(yīng)用的過程中,我們從攝像頭讀取到的是連續(xù)的視頻幀流,我們還可以通過這些幀來估計(jì)場(chǎng)景中 目標(biāo)物體的運(yùn)動(dòng),給它們建立運(yùn)動(dòng)模型,估計(jì)和預(yù)測(cè)它們的運(yùn)動(dòng)方向、運(yùn)動(dòng)速度,這對(duì)我們實(shí)際行走、避障規(guī)劃是很有用的。
以上幾種是最常見的幾種傳感器 ,各有其優(yōu)點(diǎn)和缺點(diǎn),在真正實(shí)際應(yīng)用的過程中,一般是綜合配置使用多種不同的傳感器 ,以最大化保證在各種不同的應(yīng)用和環(huán)境條件下,機(jī)器人都能正確感知到障礙物信息。我們公司的E巡機(jī)器人的避障方案就是以雙目視覺為主,再輔助以多種其他傳感器,保證機(jī)器人周邊360度空間立體范圍內(nèi)的障礙物都能被有效偵測(cè)到,保證機(jī)器人行走的安全性。
避障常用算法原理
在講避障算法之前,我們假定機(jī)器人已經(jīng)有了一個(gè)導(dǎo)航規(guī)劃算法對(duì)自己的運(yùn)動(dòng)進(jìn)行規(guī)劃,并按照規(guī)劃的路徑行走。避障算法的任務(wù)就是在機(jī)器人執(zhí)行正常行走任務(wù)的時(shí)候,由于傳感器的輸入感知到了障礙物的存在,實(shí)時(shí)地更新目標(biāo)軌跡,繞過障礙物。
Bug算法知乎用戶無(wú)方表示
Bug算法應(yīng)該是最簡(jiǎn)單的一種避障算法了,它的基本思想是在發(fā)現(xiàn)障礙后,圍著檢測(cè)到的障礙物輪廓行走,從而繞開它。Bug算法目前有很多變種, 比如Bug1算法,機(jī)器人首先完全地圍繞物體,然后從距目標(biāo)最短距離的點(diǎn)離開。Bug1算法的效率很低,但可以保證機(jī)器人達(dá)到目標(biāo)。
Bug1算法示例
改進(jìn)后的Bug2算法中,機(jī)器人開始時(shí)會(huì)跟蹤物體的輪廓,但不會(huì)完全圍繞物體一圈,當(dāng)機(jī)器人可以直接移動(dòng)至目標(biāo)時(shí),就可以直接從障礙分離,這樣可以達(dá)到比較短的機(jī)器人行走總路徑。
Bug2算法示例
除此之外,Bug算法還有很多其他的變種, 比如正切Bug算法等等。在許多簡(jiǎn)單的場(chǎng)景中,Bug算法是實(shí)現(xiàn)起來比較容易和方便的,但是它們并沒有考慮到機(jī)器人的動(dòng)力學(xué)等限制,因此在更復(fù)雜的實(shí)際環(huán)境中就不是那么可靠好用了。
勢(shì)場(chǎng)法(PFM)
實(shí)際上,勢(shì)場(chǎng)法不僅僅可以用來避障,還可以用來進(jìn)行路徑的規(guī)劃。勢(shì)場(chǎng)法把機(jī)器人處理在勢(shì)場(chǎng)下的 一個(gè)點(diǎn),隨著勢(shì)場(chǎng)而移動(dòng),目標(biāo)表現(xiàn)為低谷值,即對(duì)機(jī)器人的吸引力,而障礙物扮演的勢(shì)場(chǎng)中的一個(gè)高峰,即斥力,所有這些力迭加于機(jī)器人身上,平滑地引導(dǎo)機(jī)器人走向目標(biāo),同時(shí)避免碰撞已知的障礙物。當(dāng)機(jī)器人移動(dòng)過程中檢測(cè)新的障礙物,則需要更新勢(shì)場(chǎng)并重新規(guī)劃。
上面這個(gè)圖是勢(shì)場(chǎng)比較典型的示例圖,最上的圖a左上角是出發(fā)點(diǎn),右下角是目標(biāo)點(diǎn),中間三個(gè)方塊是障礙物。中間的圖b就是等勢(shì)位圖,圖中的每條連續(xù)的線就代表了一個(gè)等勢(shì)位的一條線,然后虛線表示的在整個(gè)勢(shì)場(chǎng)里面所規(guī)劃出來的一條路徑,我們的機(jī)器人是沿著勢(shì)場(chǎng)所指向的那個(gè)方向一直行走,可以看見它會(huì)繞過這個(gè)比較高的障礙物。
最下面的圖,即我們整個(gè)目標(biāo)的吸引力還有我們所有障礙物產(chǎn)生的斥力最終形成的一個(gè)勢(shì)場(chǎng)效果圖,可以看到機(jī)器人從左上角的出發(fā)點(diǎn)出發(fā),一路沿著勢(shì)場(chǎng)下降的方向達(dá)到最終的目標(biāo)點(diǎn),而每個(gè)障礙物勢(shì)場(chǎng)表現(xiàn)出在很高的平臺(tái),所以,它規(guī)劃出來的路徑是不會(huì)從這個(gè)障礙物上面走的。
一種擴(kuò)展的方法在基本的勢(shì)場(chǎng)上附加了了另外兩個(gè)勢(shì)場(chǎng):轉(zhuǎn)運(yùn)勢(shì)場(chǎng)和任務(wù)勢(shì)場(chǎng)。它們額外考慮了由于機(jī)器人本身運(yùn)動(dòng)方向、運(yùn)動(dòng)速度等狀態(tài)和障礙物之間的相互影響。
轉(zhuǎn)動(dòng)勢(shì)場(chǎng)考慮了障礙與機(jī)器人的相對(duì)方位,當(dāng)機(jī)器人朝著障礙物行走時(shí),增加斥力, 而當(dāng)平行于物體行走時(shí),因?yàn)楹苊黠@并不會(huì)撞到障礙物,則減小斥力。任務(wù)勢(shì)場(chǎng)則排除了那些根據(jù)當(dāng)前機(jī)器人速度不會(huì)對(duì)近期勢(shì)能造成影響的障礙,因此允許規(guī)劃出 一條更為平滑的軌跡。
另外還有諧波勢(shì)場(chǎng)法等其他改進(jìn)方法。勢(shì)場(chǎng)法在理論上有諸多局限性, 比如局部最小點(diǎn)問題,或者震蕩性的問題,但實(shí)際應(yīng)用過程中效果還是不錯(cuò)的,實(shí)現(xiàn)起來也比較容易。
向量場(chǎng)直方圖(VFH)
它執(zhí)行過程中針對(duì)移動(dòng)機(jī)器人當(dāng)前周邊環(huán)境創(chuàng)建了一個(gè)基于極坐標(biāo)表示的局部地圖,這個(gè)局部使用柵格圖的表示方法,會(huì)被最近的一些傳感器數(shù)據(jù)所更新。VFH算法產(chǎn)生的極坐標(biāo)直方圖如圖所示:
圖中x軸是以機(jī)器人為中心感知到的障礙物的角度,y軸表示在該方向存在障礙物的概率大小p。實(shí)際應(yīng)用的過程中會(huì)根據(jù)這個(gè)直方圖首先辨識(shí)出允許機(jī)器人通過的足夠大的所有空隙,然后對(duì)所有這些空隙計(jì)算其代價(jià)函數(shù),最終選擇具有最低代價(jià)函數(shù)的通路通過。
代價(jià)函數(shù)受三個(gè)因素影響: 目標(biāo)方向、機(jī)器人當(dāng)前方向、之前選擇的方向,最終生成的代價(jià)是這三個(gè)因素的加權(quán)值,通過調(diào)節(jié)不同的權(quán)重可以調(diào)整機(jī)器人的選擇偏好。VFH算法也有其他的擴(kuò)展和改進(jìn),比如在VFH+算法中,就考慮了機(jī)器人運(yùn)動(dòng)學(xué)的限制。由于實(shí)際底層運(yùn)動(dòng)結(jié)構(gòu)的不同,機(jī)器的實(shí)際運(yùn)動(dòng)能力是受限的,比如汽車結(jié)構(gòu),就不能隨心所欲地原地轉(zhuǎn)向等。VFH+算法會(huì)考慮障礙物對(duì)機(jī)器人實(shí)際運(yùn)動(dòng)能力下軌跡的阻擋效應(yīng),屏蔽掉那些雖然沒有被障礙物占據(jù)但由于其阻擋實(shí)際無(wú)法達(dá)到的運(yùn)動(dòng)軌跡。我們的E巡機(jī)器人采用的是兩輪差動(dòng)驅(qū)動(dòng)的運(yùn)動(dòng)形式,運(yùn)動(dòng)非常靈活,實(shí)際應(yīng)用較少受到這些因素的影響。
具體可以看 一下這個(gè)圖示:
類似這樣傳統(tǒng)的避障方法還有很多,除此之外,還有許多其他的智能避障技術(shù),比如神經(jīng)網(wǎng)絡(luò)、模糊邏輯等。
神經(jīng)網(wǎng)絡(luò)方法對(duì)機(jī)器人從初始位置到目標(biāo)位置的整個(gè)行走路徑進(jìn)行訓(xùn)練建模,應(yīng)用的時(shí)候,神經(jīng)網(wǎng)絡(luò)的輸 入為之前機(jī)器人的位姿和速度以及傳感器的輸 入,輸出期望的下一目標(biāo)或運(yùn)動(dòng)方向。
模糊邏輯方法核心是模糊控制器,需要將專家的知識(shí)或操作人員的經(jīng)驗(yàn)寫成多條模糊邏輯語(yǔ)句,以此控制機(jī)器人的避障過程。 比如這樣的模糊邏輯:第一條,若右前方較遠(yuǎn)處檢測(cè)到障礙物,則稍向左轉(zhuǎn);第 二條,若右前方較近處檢測(cè)到障礙物,則減速并向左轉(zhuǎn)更多角度等。
特別推薦
- 音頻放大器的 LLC 設(shè)計(jì)注意事項(xiàng)
- 服務(wù)器電源設(shè)計(jì)中的五大趨勢(shì)
- 電子技術(shù)如何助力高鐵節(jié)能?
- 利用創(chuàng)新FPGA技術(shù):實(shí)現(xiàn)USB解決方案的低功耗、模塊化與小尺寸
- 加速度傳感器不好選型?看這6個(gè)重要參數(shù)!
- 功率器件熱設(shè)計(jì)基礎(chǔ)(十三)——使用熱系數(shù)Ψth(j-top)獲取結(jié)溫信息
- IGBT并聯(lián)設(shè)計(jì)指南,拿下!
技術(shù)文章更多>>
- 解鎖AI設(shè)計(jì)潛能,ASO.ai如何革新模擬IC設(shè)計(jì)
- 汽車拋負(fù)載Load Dump
- 50%的年長(zhǎng)者可能會(huì)聽障?!救贖的辦法在這里
- ADI 多協(xié)議工業(yè)以太網(wǎng)交換機(jī)
- 攻略:7種傾斜傳感器的設(shè)計(jì)選擇
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
功率電阻
功率放大器
功率管
功率繼電器
功率器件
共模電感
固態(tài)盤
固體繼電器
光傳感器
光電池
光電傳感器
光電二極管
光電開關(guān)
光電模塊
光電耦合器
光電器件
光電顯示
光繼電器
光控可控硅
光敏電阻
光敏器件
光敏三極管
光收發(fā)器
光通訊器件
光纖連接器
軌道交通
國(guó)防航空
過流保護(hù)器
過熱保護(hù)
過壓保護(hù)