張釜愷,芮挺,何雷,楊成松
(1.中國人民解放軍陸軍工程大學 研究生院,南京210000; 2.中國人民解放軍陸軍工程大學 野戰工程學院,南京210000)
近年來,隨著計算機、傳感器以及圖像處理技術[1]的進步,機器人技術也得到了蓬勃的發展。基于視覺的同步定位與建圖(Simultaneous Localization and Mapping,SLAM)[2]技術是機器人領域的重要技術之一。SLAM 可以利用輸入的連續圖像來實時解算攝像機的運動軌跡,并且構建場景的地圖用以指導機器人的行進。
室內環境是目前小型機器人的主要應用領域。在包括倉儲物流、工廠物料搬運、家居服務等應用場景中,小型機器人都有很大的應用潛力。對于以室內為主要工作環境的小型機器人來說,單目攝像頭視覺傳感器由于較低的成本、較小的體積以及較高的布置靈活性,是機器人獲取周圍信息的主要來源。利用單目視覺信息獲取場景信息以指導機器人的行動,是相關研究的重點方向之一。其中,地面可通行區域的信息,包含了地面的紋理與可通行地面的范圍,可以直接用于對機器人的導航。地面可通行區域的建模可以為指導機器人的行動提供很大的便利。
然而,由于室內小型機器人的體積小、視角低、運算能力弱、視場有限,應用視覺SLAM 方法來實時理解場景較為困難。能夠構建稠密地圖的SLAM方法對于計算資源有著較高的要求,不適合運算能力較弱的小型機器人使用。而且,由于其視野內的主要部分為地面且紋理特征較少,基于特征與梯度的SLAM方法只能獲得極為稀疏的地圖,對于場景的表現能力較差,無法指導機器人行動。但另一方面,絕大多數室內地面均為平面,而且紋理分布較為均勻,這又為地面的建模提供了方便。
針對此問題,本文提出了一種融合圖像分割與單目SLAM的室內地面快速建模方法來獲取機器人的可通行區域。該方法基于單目特征點SLAM,并結合圖像分割,利用SLAM 生成的點云與圖像分割之間的相互印證來提高地面構建的準確性。最終,生成地面可通行區域的稠密建模,用以指導機器人的行動。
通過實驗與對比,在小型移動機器人平臺上,相對于主流SLAM 方案,本文方法可以顯著提高對于地面建模的效果,并且滿足在移動平臺上實時處理的要求。相比較于經典的單目SLAM 方法,本文方法的運行速度接近特征點SLAM,而對地面可通行區域的建模效果則接近稠密,對于機器人的行動有較大的參考價值。
SLAM問題自1988年被提出,經過近30年的發展,取得了豐碩的成果。單目SLAM 目前主要有2條技術路線。直接法SLAM直接利用像素的亮度或梯度來匹配圖像間的像素,并可以在解算相機運動的同時生成稠密[3-4]或者半稠密[5-6]的場景地圖。特征法SLAM 利用點[7-8]或者線特征[9]來匹配圖像間的點或者線,進而解算相機運動并生成只包括特征點或線的場景地圖。
在建模方面,直接法生成的稠密或半稠密地圖相對于特征法生成的稀疏地圖有著更多的點,對于場景的描述也更加具有表現力。其中,代表性的系統有2011年的DTAM(Dense Tracking and Mapping)[10]、2014年 的LSD-SLAM(Large-Scale Direct monocular SLAM)[11]等。然而,雖然基于特征的SLAM系統只能獲得稀疏的地圖,但是一般來說具有更快的速度。而且由于便于使用束集調整(Bundle Adjustment,BA[12])進行優化,并進行回環檢測[13],特征法獲取的軌跡一般來說更加準確與魯棒。在特征法SLAM 中,2007年的Mono-SLAM系統[14]與同一年的PTAM(Parallel Tracking and Mapping)[15]是這一領域具有開創性的成果。2015 年 的 ORB-SLAM (ORiented Brief SLAM)[16]系統各項功能較為完備,已經被廣大研究者用作后續二次開發研究的基礎系統。
為了在保持穩定跟蹤的同時,獲得更加稠密的地圖,有一些方法在特征法的基礎上進行場景重建。2010年,Newcombe和Davison[17]提出的方法是在獲取了相機位姿與稀疏點云的基礎上,利用光流來重建場景表面。2015年,Murartal和Tardos基于ORB-SLAM系統,利用逆深度濾波像素匹配,構建了基于概率的半稠密場景地圖[18]。一般來說,此類方法的基本思想為基于SLAM 獲得的相機軌跡對圖像像素進行匹配,并計算其空間位置。此類思路雖然可以結合直接法和特征點法的優點,但是運算量也大大提升,并不符合小型移動平臺的運算能力。
為了提高運算的速度,以適應小型移動平臺較低的運算能力,近年來,基于視覺的低成本建模方法也成為了一個有意義的研究方向。2016年,Hinzmann等[19]提出了一種針對無人機平臺的低成本地面建模方法,利用無人機自身的傳感器感知姿態,并結合圖像處理方法獲得對于地面的稠密建模。但是,該方法基于的圖像內容全部為地面,不適用于小型地面無人車。2017年,蒙山和唐文名將直線引入點特征單目SLAM,并通過點線特征以及直線增強的J-Linkage算法構建包含特征平面的場景地圖[20],但是該地圖相對于純特征點地圖,對場景描述效果的提升有限。2017年,von Stumberg等[21]針對小型旋翼無人機,基于LSD-SLAM提出了一種本地探索避障策略與體素模型構建方法,但是對于地面的建模效果較差。2018年,蔣林等[22]對基于嵌入式平臺三維重建算法進行了研究,針對差動式機器人的運動特點對算法進行了針對性的簡化,但是所利用的視覺傳感器為深度相機而非單目相機。
總體來說,現有的主流單目SLAM 系統在小型室內機器人上運行時,由于平臺自身的特點,或是地圖構建過于稀疏;或是雖地圖稠密,但不能實現實時運行。一般并不能在構建場景方面取得令人滿意的效果。而現有的低成本建模方法中,針對小型地面機器人特點的研究不多,尚未出現較為合適的地面區域低成本建模方法。
本文提出的融合圖像分割與單目SLAM的室內地面快速建模方法構建在單目特征點SLAM的基礎上,利用SLAM 系統獲得的相機位姿與稀疏點云,結合地面區域的分割圖像獲得地面的稠密建模。
系統的基本流程如下:首先,利用SLAM系統獲得的相機位姿與稀疏點云。其次,利用地面區域的分割圖像,將稀疏點云中投影在地面區域的點提取出來,獲取粗略的地面稀疏點云。然后,進行濾波后,利用優化模型對這些地面點擬合平面,獲取地平面的數學表達。之后,通過計算稀疏點云中的點與該地平面之間的位置關系,將它們相對精確地分為地面與非地面點云。再利用該分類來篩選地面分割圖像。最后,通過相機的位姿,將篩選過的地面分割圖像投影到地面平面上,并進行濾波與降噪,獲得稠密的地面建模。整個系統的流程示意圖如圖1所示。
后文將對本文方法流程中的各主要功能模塊逐一進行介紹。

圖1 本文方法整體流程圖Fig.1 Flowchart of proposed method
本文使用ORB-SLAM[16]作為系統的單目SLAM模塊。ORB-SLAM 是一個功能完善,接口便捷的單目SLAM 系統。整個系統圍繞ORB點特征建立,在效率與精度之間達到了較好的平衡,自發表以來就被研究者們所廣泛使用。該系統包含3個平行的線程:跟蹤線程(tracking thread)、局部建圖線程(local mapping thread)和回環檢測線程(loop closing thread)。其中,跟蹤線程負責計算相機的運動,以及指定關鍵幀,并在跟蹤丟失時負責重定位;局部建圖線程主要負責用局部束集調整(local BA)來對局部地圖進行優化,以及地圖點的插入和刪除;回環檢測線程主要負責進行回環檢測,在有回環出現時進行閉環全局優化。
在SLAM進程對相機位姿進行跟蹤的同時,系統對每一幀輸入圖像進行分割,以獲得地面區域的分割圖像。由于系統獲得的是一個地面分割的圖像序列,并且還需要和點云數據進行比對,所以對于單張地面分割圖像的精度要求不高,但是對于圖像分割的速度有著較高的要求,這使得采用目前主流的深度學習語義分割的方法[23]較為困難。基于以上分析,本文采用基于HSV(Hue,Saturation,Value)色彩空間的自適應閾值分割方法來對地面區域進行分割。
計算機存儲和處理圖片時一般采用的顏色編碼方式是RGB顏色空間,其將顏色按紅、綠、藍3個維度上的分量進行編碼,而HSV顏色空間是按照色度、飽和度和亮度來進行編碼,分別對應H、S、V 3個分量,更貼近人眼的視覺感知,受光照的影響也更小[24]。在本文的分割方法中,先將待分割的圖像轉化到HSV色彩空間。
由于室內小型機器人在運動過程中會與障礙物保持一定距離,所以其攝像頭拍攝圖像的中間底部一般為地面區域。基于此假設,對于輸入圖像I,本系統設定圖像的底部中間區域為默認地面區域MG,其位置與尺寸如圖2(a)所示。首先,統計得到默認地面區域MG內H、S、V 3個分量的最值。然后對全圖像的每個像素pi進行判斷:

式中:HG、SG、VG分別為默認地面區域MG中所有像素H、S、V分量的集合;hi、si、vi分別為像素pi的H、S、V分量。若像素pi的3個分量均在默認地面區域MG的分量范圍內,該像素就被加入候選地面區域G1,如圖2(b)所示。
在獲取候選地面區域之后,還需要進行后續的濾波與處理。首先進行開操作(采用運算符號“○”表示)。開操作用于使對象的輪廓變得光滑,斷開狹窄的間斷和消除細的突出物。開操作的流程是先用結構元素S對G1腐蝕(采用運算符號“⊕”表示),然后再用S對結果進行膨脹(采用運算符號“?”表示)[25]。將候選地面區域G1用開操作處理后,得到區域G2:

區域G2如圖2(c)所示。其中,本文方法采用的結構元素S為半徑為2像素的圓形結構。
最后對區域進行連通域劃分,劃分結果如圖2(d)所示。選取默認地面區域MG所在的連通域作為分割得到的地面區域G3,如圖2(e)所示。獲得的地面分割圖像如圖2(f)所示。
在SLAM模塊向稀疏點云地圖中添加每一個空間地圖點Qi時,都會判斷該點在其對應的地面分割圖像上是否位于地面區域。如果位于地面區域,則將該點加入地面點云Cg。
然后,利用該地面點云來獲得地平面的數學表達。由于點云位置計算誤差以及地面分割誤差的存在,在后續處理之前,需要先去除地面點云中明顯的誤差離群點。本文采用統計濾波的方法進行離群點的去除[26]:
1)計算點Qi與其鄰域范圍內k個鄰域點的平均距離。
2)分析所有點k鄰域平均距離,計算其均值m和標準差σ。
3)設置標準差倍數閾值std,確定距離閾值為

4)若點Qi的k鄰域平均距離大于距離閾值d,則為噪聲點,去除。
本文方法的應用環境是地面為平面的室內環境。建立優化模型對經過統計濾波的地面點云Cg′進行平面擬合,使點到平面的總距離最小。設地平面F的表達式為

優化模型為

在獲取了地平面F的表達式后,系統對地面分割圖像進行篩選。對于每一個關鍵幀,系統計算其觀察到的所有地圖點與地平面F的位置關系,并將所有位于地平面F上方μ(單位為cm)以上的點視為非地面點,其余視為地面點。
若某張地面分割圖像的地面區域上有超過n個非地面點的投影,則略去這張分割。在本文的實驗中,略去的分割如圖3所示(其中紅色為非地面點,綠色為地面點)。
從圖3可以看出,將墻體下沿的部分瓷磚也劃入了地面分割,從而包括了大量非地面點,并因此被略去。

圖3 被略去的地面分割圖像示例Fig.3 An example of excluded ground segmentation image
至此,系統通過對稀疏點云與地面分割圖像的交叉比對,已經獲得了相對精確的地平面與分割圖像。利用關鍵幀的位姿,將地面分割圖像投影到地平面上即可得到稠密的地面點云模型,如圖4所示。
首先,通過相機內參矩陣K,將地面分割圖像上的像素pi從圖像坐標[u,v]T反投影到相機坐標系中,獲得相機坐標系下的坐標PC=[Xc,Yc,]T:

式中:深度值ZC為未知量。
然后,通過該幀的相機位姿變換矩陣Twc,將相機坐標系下的坐標轉換到世界坐標系坐標Pw,即


圖4 將分割圖像投影到地平面對地面建模Fig.4 Projecting segmented images to groundplane for ground modeling
該世界坐標(xw,yw,zw)應該在平面F上,即

利用式(8)解出未知深度ZC,即可以得到該像素點對應的世界坐標。對所有地面分割圖像如此操作后,再進行體素濾波,設定濾波半徑為0.01,即半徑0.01的范圍內只保留一個點。最終,得到地面的稠密點云模型。
為了驗證本文方法的可行性與實用性,使用搭載了單目攝像頭的小型機器人獲取數據。數據的處理使用筆記本電腦,搭載Ubuntu 16.04系統,處理器(CPU)為Intel 4 200 H,內存4 G。并同樣的環境中用同樣的平臺運行了ORB-SLAM 系統,與本文的系統相對比。
分別以辦公室與教室作為實驗環境。其中,辦公室的地面為瓷磚,顏色與紋理相對連續,但是如圖5(a)所示,地面存在很嚴重的倒影現象。教室場景較為簡單,光照較為均勻,但是如圖5(b)所示,教室的地面上存在明顯的黑色地磚縫,地面色彩與紋理不連續。2個實驗環境對于地面區域的建模均具有一定的挑戰。
經過預實驗,在實驗中將點云的統計濾波參數設置為k=10,std=1,將地面分割圖像篩選過程中的參數設置為μ=3 cm,n=50。

圖5 實驗環境Fig.5 Experimental environment
3.1.1 辦公室場景
辦公室環境和機器人的運動軌跡如圖6所示。本文方法得到的稠密地面建模與非地面稀疏點云如圖7所示。ORB-SLAM得到的場景稀疏點云如圖8所示。

圖6 辦公室環境與機器人運動軌跡Fig.6 Office environment and robot movement track
辦公室場景的地面可通行區域邊界本身就并不明晰,所以建模的邊緣并不規則。但是本文方法得到的模型能夠基本準確地反映通路的寬窄與通過情況,例如中間一段通路中最細的部分反映了因墻面突起造成的障礙。

圖7 本文方法得到的辦公室稠密地面建模與非地面稀疏點云Fig.7 Office dense ground modeling and non-ground sparse point cloud obtained by proposed method

圖8 ORB-SLAM得到的辦公室稀疏點云Fig.8 Office sparse point cloud obtained by ORB-SLAM
3.1.2 教室場景
教室環境和機器人的運動軌跡如圖9所示。本文方法得到的稠密地面建模與非地面稀疏點云如圖10所示。ORB-SLAM 得到的場景稀疏點云如圖11所示。

圖9 教室環境與機器人運動軌跡Fig.9 Classroom environment and robot movement track

圖10 本文方法得到的教室稠密地面建模與非地面稀疏點云Fig.10 Classroom dense ground modeling and non-ground sparse point cloud obtained by proposed method

圖11 ORB-SLAM得到的教室稀疏點云Fig.11 Classroom sparse point cloud obtained by ORB-SLAM
教室場景的地面比較規則,本文方法所建的模型較好地還原了通行區域的地面情況。但是由于通路狹窄,在轉彎的位置相機面對旁邊的課桌,地面的圖像區域不足,造成轉彎部分建模效果稍差。
3.1.3 建模效果
從圖11中可以看出,原ORB-SLAM 生成的點云十分稀疏,只是標記了特征點的位置,根本無法從中獲得地面的位置以及場景的有效信息,對場景的還原效果較差,基本不能用于對場景的描述,指導機器人行動。而本文方法獲得了對于地平面的稠密建模,基本涵蓋了機器人視野范圍內的可通行區域。相比較原ORB-SLAM 算法,本文方法生成的地圖更具有實用性。
在實際的運行中,本文方法與ORB-SLAM 算法平均每一幀各階段的運算時間如表1所示。
從表1數據可以看出,相比較于ORB-SLAM,本文方法中的SLAM運算時間基本不變。增加的計算時間中,占比最大的部分是圖像的分割與地面稠密建模。由于本文方法添加的操作全部是基于關鍵幀的,所以實際平均到每一幀的時間都很短。總體來看,本文方法能夠達到21幀/s的平均運行速度,ORB-SLAM的平均運行速度約為30幀/s。本文方法約為ORB-SLAM的70%,能夠滿足預期的應用要求。

表1 平均每幀運算時間Table 1 Average operation time per frame
由于單目SLAM方法生成的空間數據具有尺度不確定性,所以為分析本文方法的建模精度,首先將生成的相機軌跡與真實的軌跡進行配準,得到數據的正確尺度后,再與實際數據相對比,進行精度分析。而ORB-SLAM得到的稀疏點云地圖則過于稀疏,基本上無法從中提取通路的位置與具體范圍,精度也無從談起,故不對其進行精度分析。
3.3.1 地平面的位置還原精度
本文方法對地面進行還原的重要步驟是擬合地平面。由于搭載的相機高度已知,通過對比相機真實高度與相機和擬合地平面之間的平均距離,可以得到地平面的位置還原精度,如表2所示。可見,地平面位置的還原平均絕對誤差為5.8%。
3.3.2 場景建模精度
在2個場景中,分別在系統生成的稠密地面模型上選取3處通路的寬度進行測量,與實際地面上通路的寬度進行對比,以分析方法的場景建模精度。由于轉彎處存在遮擋,相機拍不到通路的全貌,故選取直線前行的部分通路作為實驗分析的對象。
1)辦公室
對地面上3段通路的寬度進行測量(見圖12)。
與真實的寬度進行對比,得到的結果如表3所示。
通過對地面3處通路的寬度進行測量后,我們發現a處和b處精度較高,而c處誤差較大。經分析,這部分的誤差較大主要是由于地面倒影的影響,分析詳見后文3.4.1節。
2)教室
對系統生成的稠密地面模型進行測量,對地面上3段通路的寬度進行測量(見圖13)。

表2 地平面位置還原精度Table 2 Accuracy of ground plane position restoration

圖12 辦公室通路寬度測量Fig.12 Path width measurement of office

表3 辦公室地面建模精度Table 3 Ground modeling accuracy of office

圖13 教室通路寬度測量Fig.13 Path width measurement of classroom
與真實的寬度進行對比,得到的結果如表4所示(b處下方藍圈內為兩條通路交叉的位置,并非通路寬度)。
通過對地面3處通路的寬度進行測量后,發現a處和b處精度較高,而c處相對誤差較大。經分析,該部分誤差主要由地面紋理不連續造成,分析詳見后文3.4.2節。

表4 教室地面建模精度Table 4 Ground modeling accuracy of classroom
3.4.1 地面倒影
在圖12辦公室建模的c處,這一區域攝像機面向窗戶,由于室外亮度較大,在地面瓷磚上產生了倒影,使得地面中間區域亮度較高,地面的顏色出現了較大區別。對于地面劃分出現了一定的誤差,如圖14所示。

圖14 地面倒影對圖像分割的影響Fig.14 Effect of ground reflection on image segmentation
3.4.2 地面不均勻紋理
地面的不均勻紋理對于本文方法存在一定的影響。在教室中,地面存在明顯的地磚縫,導致有少部分圖像對于地面區域的分割不連續,經過連通域計算后只留下一塊地磚內的地面,如圖15所示。
根據對于重建效果的觀察和重建精度的分析,雖然存在倒影與地面紋理不均勻造成的圖像分割誤差,但是它們對于整體的地面重建效果影響較為有限。由于本文方法利用了圖像的序列整體信息,對于部分圖像的信息缺失,可以通過序列中其他相對正確的分割投影所掩蓋。

圖15 地面不均勻紋理對圖像分割的影響Fig.15 Effect of uneven texture of ground on image segmentation
關于場景的建模,從場景中獲取有意義的信息。速度與效果間的矛盾一直是研究中一個繞不過去的問題。近年來,國內外有許多研究試圖在二者之間達到合適的平衡。本文結論如下:
1)對于室內小型機器人這一特定應用平臺,以及室內環境這一特定場景,很多問題可以得到簡化。
2)本文方法最大限度地利用了特定環境與特定需求,將對全場景的建模簡化為地面的建模,將圖片深度的求取簡化為直接投影在地平面上,可以用盡可能小的計算量來為機器人實時提供盡可能多的信息。
3)實驗證明,本文方法可以以接近特征點SLAM 的速度,生成較為準確的地面可通行區域稠密建模。點云與分割的交叉驗證以及圖像序列的使用也可以在相當程度上抵消地面倒影、地面分割困難等不利情況的影響。