1. 程式人生 > >移動機器人的幾種視覺演算法

移動機器人的幾種視覺演算法

轉載https://zhuanlan.zhihu.com/p/21879928

談到移動機器人,大家第一印象可能是服務機器人,實際上無人駕駛汽車、可自主飛行的無人機等等都屬於移動機器人範疇。它們能和人一樣能夠在特定的環境下自由行走/飛行,都依賴於各自的定位導航、路徑規劃以及避障等功能,而視覺演算法則是實現這些功能關鍵技術。

如果對移動機器人視覺演算法不瞭解,你或許不知道獲取物體深度資訊、定位導航以及壁障等都是基於不同的視覺演算法,本期硬創公開就帶大家聊一聊幾種不同但又必不可少的視覺演算法組成。

分享嘉賓:陳子衝,Segway & Ninebot機器人業務高階架構師和演算法負責人。本科畢業於清華大學電子工程系,完成基於DSP的衛星信標機的全套軟硬體實現,獲本科生校級優秀論文。後在瑞士聯邦理工大學深造獲得博士學位,其博士課題獲得國家優秀自費留學生獎。歸國後,加入華為媒體實驗室,帶領團隊成功研發應用於華為手機的實時雙目視覺演算法。2015年,陳子衝加入Segway Robot專案,致力於機器人導航等視覺感知演算法的研發。Segway Robot專案於2016年1月在國際電子消費展(CES)主題演講上釋出,受到包括CNN、福布斯、TechCrunch、Wired等多家國際媒體的關注,並被評為CES最佳機器人之一。

 

Segway Robot是一個輪式的可移動機器人,它的底盤是一臺具有400多項專利技術的平衡車,此外,它擁有Intel Atom處理器、RealSense深度攝像頭以及多種感測器。

 

移動機器人的視覺演算法種類

Q:實現定位導航、路徑規劃以及避障,那麼這些過程中需要哪些演算法的支援?

談起移動機器人,很多人想到的需求可能是這樣的:“嘿,你能不能去那邊幫我拿一杯熱拿鐵過來。”這個聽上去對普通人很簡單的任務,在機器人的世界裡,卻充滿了各種挑戰。為了完成這個任務,機器人首先需要載入周圍環境的地圖,精確定位自己在地圖中的位置,然後根據地圖進行路徑規劃控制自己完成移動。

而在移動的過程中,機器人還需要根據現場環境的三維深度資訊,實時的躲避障礙物直至到達最終目標點。在這一連串機器人的思考過程中,可以分解為如下幾部分的視覺演算法:

1.深度資訊提取

 

2.視覺導航

 

3.視覺避障

後面我們會詳細說這些演算法,而這些演算法的基礎,是機器人腦袋上的視覺感測器。

視覺演算法的基礎:感測器

Q:智慧手機上的攝像頭可以作為機器人的眼睛嗎?

所有視覺演算法的基礎說到底來自於機器人腦袋上的視覺感測器,就好比人的眼睛和夜間視力非常好的動物相比,表現出來的感知能力是完全不同的。同樣的,一個眼睛的動物對世界的感知能力也要差於兩個眼睛的動物。每個人手中的智慧手機攝像頭其實就可以作為機器人的眼睛,當下非常流行的Pokeman Go遊戲就使用了計算機視覺技術來達成AR的效果。

 

圖片來源:ulightech

 

像上圖畫的那樣,一個智慧手機中攝像頭模組,其內部包含如下幾個重要的元件:鏡頭,IR filter,CMOS sensor。其中鏡頭一般由數片鏡片組成,經過複雜的光學設計,現在可以用廉價的樹脂材料,做出成像質量非常好的手機攝像頭。

 

圖片來源:wikipedia

 

CMOS sensor上面會覆蓋著叫做Bayer三色濾光陣列的濾色片。每個不同顏色的濾光片,可以通過特定的光波波長,對應CMOS感光器件上就可以在不同位置分別獲得不同顏色的光強了。如果CMOS感測器的解析度是4000x3000,為了得到同樣解析度的RGB彩色影象,就需要用一種叫做demosaicing的計算攝像演算法,從2綠1藍1紅的2x2網格中解算出2x2的RGB資訊。

 

圖片來源:thorlabs

 

 

圖片來源:alibaba

 

一般的CMOS感光特性除了選擇紅綠藍三色之外,對於紅外光是透明的。因此在光路中加上IR濾光片,是為了去除太陽光線中紅外光對CMOS的干擾。加上濾光片後,通常影象的對比度會得到顯著的提升。

Q:計算機視覺中還會用到什麼感測器?

除了RGB相機,計算機視覺中常用的還有其他種類的特殊相機。例如有一種相機的濾光片是隻允許通過紅外光波段的。因為人眼通常是看不見紅外光的,所以可以在相機附近加上主動紅外光源,用於測距等應用。

 

圖片來源:dailyvsvidz

 

另外,大部分我們用到的camera都是以rolling shutter的形式實現電子曝光的,像圖中左側那樣,為了減少電子器件的成本,曝光通常是一行一行分別進行,這樣勢必造成物體快速移動時,相機採集到的影象會發生形變。為了避免這種形變對基於立體幾何進行計算的視覺演算法的影響(例如VSLAM),選用global shutter的相機就顯得特別重要了。

 

圖片來源:ericmojo

 

 

圖片來源:teledynedalsa

 

深度相機是另一大類視覺演算法中需要的感測器,可以分成如下幾類:

1.TOF感測器(例如Kinect 2代),類似昆蟲複眼。成本高,室外可以使用。

2.結構光感測器(例如Kinect 1代),三角定位原理,成本中,室外不能用。

3.雙目視覺(例如Intel Realsense R200),主動照明或被動照明,IR或可見光皆可。成本低,室外可以使用。

演算法一:深度資訊提取

Q:深度相機如何識別物體的深度資訊的呢?

簡而言之,其原理就是使用兩個平行的相機,對空間中的每個點三角定位。通過匹配左右兩個相機中成像點的位置,來計算對應三維點在空間中的距離。學術界對雙目匹配恢復深度圖研究有很長的歷史,在NASA火星車上就開始採用這個技術。但是其真正在消費電子品市場得到廣泛應用還是從微軟的Kinect體感感測器開始。

 

圖片來源:osapublishing

 

Kinect感測器背後使用了以色列Primesense公司授權的結構光技術(如今已被Apple收購)。其原理是避開雙目匹配中複雜的演算法設計,轉而將一個攝像頭更換成向外主動投射覆雜光斑的紅外投影儀,而另一個平行位置的相機也變成了紅外相機,可以清楚的看到投影儀投射的所有光斑。因為人眼看不到紅外光斑,而且紋理非常複雜,這就非常有利於雙目匹配演算法,可以用非常簡潔的演算法,識別出深度資訊。

儘管Kinect的內在原理官方並沒有給出解釋,在近年來一篇Kinect Unleashed的文章中,作者向公眾hack了這個系統的工作原理:

首先,紅外影象在基線方向上取樣8倍,這樣可以保證在做雙目匹配後實現3bit的亞畫素精度。然後,對影象做sobel濾波,使得影象的匹配精度提高。而後,影象與預存的投影光斑模板影象進行SAD block matching。該演算法的計算複雜度小,適合硬化和並行。最後,經過簡單的影象後處理,下采樣到原始解析度,得到最終的深度圖。

 

圖表來源:Martinez, Manuel, and Rainer Stiefelhagen. "Kinect Unleashed: Getting Control over High Resolution Depth Maps." MVA. 2013.

 

我們可以看到,隨著2009年Kinect裝置在消費機市場的爆發(發售頭10天100萬臺),逐漸開始催生了類似技術變種在移動端裝置的研發熱潮。從2013年至今,隨著計算能力的提升和演算法的進步,硬體成本更低的主動/被動雙目深度相機開始在移動手機上湧現。

過去認為很難實時執行的雙目匹配演算法,即使在沒有主動結構光輔助的情況下,也表現出非常優異的3D成像質量。Segway robot採用了主動/被動可切換的雙目深度視覺系統。如下圖所示,

 

左側三個感測器分別為,左紅外相機,紅外pattern投影,右紅外相機。在室內工作時,因為紅外光源不足,紅外投影開啟,輔助雙目匹配演算法。在室外工作時,紅外光源充足,紅外投影關閉,雙目匹配演算法可以直接執行。綜合看,此係統在室內外都表現出優異的深度感測能力。

 

演算法二:定位導航

Q:視覺處理後,機器人是如何實現導航的?

 

圖片來源:pirobot

 

機器人導航本身是一個比較複雜的系統。其中涉及到的技術會有如下列表。

•視覺里程計 VO

•建圖,利用VO和深度圖

•重定位,從已知地圖中識別當前的位置

•閉環檢測·,消除VO的閉環誤差

•全域性導航

•視覺避障

•Scene tagging,識別房間中物體加上tag

機器人開機,視覺里程計就會開始工作,記錄從開機位置起的6DOF定位資訊。在機器人運動過程中,mapping演算法開始構建機器人看到的世界,將空間中豐富的特徵點資訊,二維的地圖資訊記錄到機器人map中。

當機器人運動過程中因為遮擋、斷電等原因丟失了自身的座標,重定位演算法就需要從已知地圖中定位到機器人當前的位置估計。另外,當機器人運動中回到了地圖中曾經出現過的位置,往往視覺里程計的偏差會導致軌跡並沒有完全閉合,這就需要閉環演算法檢測和糾正這個錯誤。

有了全域性地圖之後,機器人就可以給定一些目標點指令,做全域性的自主導航了。在現實中,因為環境是不停變化的,全域性地圖並不能完全反映導航時的障礙物狀況,因此需要凌駕於全域性導航之上的視覺避障演算法進行實時的運動調整。

最後,一個自動的導航系統還需要機器人自動識別和理解空間中的不同物體的資訊、位置、高度和大小。這些tag資訊疊加在地圖上,機器人就可以從語義上理解自己所處的環境,而使用者也可以從更高層次下達一些指令。

Q:視覺VSLAM在機器人上的實現有哪些難點?

視覺VSLAM是一個集合了視覺里程計,建圖,和重定位的算法系統。近年來發展很快。基於特徵的視覺SLAM演算法從經典的PTAM演算法開端,目前以ORB-SLAM為代表的演算法已經可以在PC上達到實時執行。下面是一個ORBSLAM的框圖:

 

從名字可見,其使用ORB作為影象特徵提取工具,並且在後續的建圖及重定位中均使用了同一份特徵點資訊。相對於傳統的SIFT和SURF特徵提取演算法,其效率高出很多。

 

ORB-SLAM包含三個並行的執行緒,即跟蹤,建圖和閉環。其中跟蹤執行緒執行在前端,保證實時執行,建圖和閉環執行緒執行在後端,速度不需要實時,但是與跟蹤執行緒共享同一份地圖資料,可以線上修正使得地圖資料精度和跟蹤精度更高。下圖是ORB-SLAM地圖的主要資料結構,

點雲和關鍵幀。兩者之間通過影象上2D特徵點與空間中的點雲建立對映關係,同時還維護了關鍵幀之間的covisibility graph關係。通過這些資料關聯,用優化方法來維護整個地圖。

ORB-SLAM在機器人上應用仍然存在如下難點:

1.計算量過大,在4核處理器上通常會佔去60%左右CPU資源。

2.在機器人運動過快時會出現跟丟不可復原的情況。

3.單目SLAM存在尺度不確定的問題。在機器人快速旋轉時,此問題尤其明顯,很快會出現閉環誤差過大無法糾正的情況。

針對尺度問題,有兩種方法解決:增加一個攝像頭形成雙目SLAM系統,或者增加一個IMU形成鬆耦合/緊耦合的視覺慣導定位系統。這裡簡單介紹鬆耦合的視覺慣導定位系統。一般把VSLAM當成一個黑盒子,將其的輸出作為觀測量放到一個基於IMU的EKF系統中,EKF最終fuse的輸出即是系統的輸出。

考慮到camera資料和IMU資料通常是不同步的,因此通過硬體時間戳,需要判斷影象資料對應的時間戳與IMU時間戳的關係。在EKF propagate步驟,更高幀率的IMU資料不停的更新EKF的狀態。在camera資料到來時,觸發EKF update步驟,根據EKF建模方程來更新狀態變數、協方差矩陣,並且重新更新所有晚於camera資料的IMU資料對應的狀態變數。

 

Segway Robot採用了業界領先的視覺慣導定位系統,下面是一個在樓道里面執行一圈,回到原點之後的效果圖,具體有如下優勢:

 

 

1.在大尺度下可以保證非常小的閉環誤差

2.實時執行,需求CPU資源小

3.允許快速旋轉等情形,不會跟丟

演算法三:避障

Q:視覺避障的演算法原理是怎樣的?

導航解決的問題是引導機器人接近目標。當機器人沒有地圖的時候,接近目標的方法稱為視覺避障技術。避障演算法解決的問題是根據視覺感測器的資料,對靜態障礙物、動態障礙物實現躲避,但仍維持向目標方向運動,實時自主導航。

 

圖片來源:sciepub

 

避障演算法有很多,然而這些方法都有嚴格的假設,假設障礙物為圓形或假設機器人為圓形,假設機器人可以任意方向運動,s或假設它只能走圓弧路徑。然而實際應用上,機器人很難達到條件。比如VFF演算法, 該演算法假設機器人為點,而且可以任意方向運動。VFH+假設機器人為圓形,通過圓形膨脹障礙物,在考慮運動學問題時僅僅假設機器人以圓弧路徑運動。DWA也假設機器人為圓形,在考慮運動學問題時只模擬了前向圓弧運動時的情況。

相對而言,我們不限制機器人的形狀,考慮運動學問題時,模擬多種運動模型,而不限於圓弧運動,因為這樣可以為機器人找到更佳避開障礙物的行為。

 

這張圖顯示了使用不同運動學模型導致不同的避障結果。左圖表示使用圓弧模型時模擬的路徑,右圖表示使用另一種路徑模型模擬的路徑。在這種狹小環境,此方法可以提前預測多個方向的障礙物情況,選擇合適的模型可以幫助找到更合適的運動方向躲避障礙物。

 

和目前常用的避障演算法之間存在的差異在於,它將運動學模型抽象化到周圍環境地圖中,然後就可以使用任何常用的避障演算法,這樣就解耦了運動學模型與演算法的捆綁,而且任何要求嚴格的避障演算法都能加入進來。Segway Robot的避障系統,綜合了深度感測器,超聲波,IMU等sensor。在複雜的環境中,可以自如躲避障礙物。

 

這張圖是我們的避障系統的一個截圖,可以看到深度圖和2維的避障地圖。最下面紅色的指標就代表了每時每刻避障的決策。

 

精彩問答

Q:為什麼選用ir相機而不是傳統的rgb相機呢?ir相機相對來講的優勢在哪裡?

A:ir相機可以看到人眼看不到的物體,比如深度相機需要在室內投射紅外紋理,幫助深度識別。人眼看不到,但ir相機可以看。

Q:現在機器人導航是否主要是slam技術,還有沒其他導航技術?主要流行的slam技術有哪些?用於無人駕駛和無人機的視覺導航技術有哪些異同?

A:slam技術是導航中的一個基礎模組,種類很多,有單目,雙目,depth,imu+視覺等感測器為基礎的演算法。雙目相機可以很好的適應室內和室外的環境。他的體積其實非常小,segway robot使用的camera長度在10cm左右

Q:現在有無用於機器人導航的導航地圖存在,類似車載導航地圖?用於機器人導航的地圖資料有哪些?

A:現在還沒有這樣的機器人導航地圖存在,但是是研發熱點。比如tesla和mobileye的地圖之爭。我們會在今年下半年發售開發者版本的機器人,可以到http://robot.segway.com上申請。