本文整理自王程老師在第二屆SLAM技術論壇中《移動測量中的雷射SLAM》的報告。
本文來源:深藍學院
王程,廈門大學信息學院教授,IET Fellow,福建省智慧城市感知與計算重點實驗室的執行主任,國際攝影測量與遙感學會的多傳感器集成與融合工作組的主席。研究興趣包括三維視覺,雷射雷達點雲處理,空間大數據分析,遙感圖像分析,移動測量。王老師發表論文200餘篇,包括CVPR,AAAI,VR,ISPRS JPRS,TRGS等高水平會議和期刊,是IEEE GRSL的編委,作為大會主席和組委會主席組織過CVPS2012,MMT-SS2015, ChinaLiDAR2018等多個國際學術會議和學術交流活動。
01 移動雷射掃描簡介
雷射掃描經歷了從一維到二維再到三維的發展過程,大家都知道雷射測距的原理,在街上經常能看到測繪單點無反射的全站儀,其中雷射測距的裝置就是一維的雷射雷達(LiDAR)。實際上一個單點也叫做LiDAR;如果把這條雷射掃起來,就可以得到一個二維的剖面,例如一些用於工業界避障用的雷射雷達;如果不斷在一個方面進行360度進行環掃,同時把環掃的剖面進行旋轉,就能得到環境中一個三維的表面模型,這就形成了三維的雷射掃描。
如果希望獲得更大範圍的三維建模,那就需要讓雷射雷達動起來。
三維雷射雷達可以放在不同的移動平臺上,例如手持平臺、車載平臺、機載平臺、船載的平臺和背包,除此之外,現在衛星平臺上面也已經開始嘗試用雷射雷達,但是目前衛星上還沒有辦法進行表面大規模的成像。
上述統稱叫做移動測量或者Mobile Mapping,因為它們使用了雷射掃描,所以又稱mobile laser scanning(簡稱MLS)。
雷射掃描獲得的一些典型場景
用於測圖的移動雷射掃描系統,其傳感器一般分成兩大類:
一類是位置和方向估算,例如IMU(慣性測量單元)、GNSS(全球導航衛星系統)、DMI。IMU一般是必不可少的,只是在不同場景下使用不同等級的IMU,如果控制成本就用比較便宜的MEMS IMU,高精度場景中可能要用幾十萬一臺的戰術級甚至戰略級IMU,比如用於飛彈或者洲際飛彈上;
GNSS包括GPS和北鬥,在開放的空間下GNSS顯得非常重要,因為它能夠通過差分得到近乎實時全球定位2釐米左右的定位精度;
DMI是指從車的輪轂中心處接出一條線做碼盤上的測量,接到車載的碼錶上,當然也可以外接,接入到整個組合導航系統。
另一類是環境地圖數據的收集和融合,主要是相機和雷射掃描儀。目前,為了能夠覆蓋周邊環境比較大的範圍,一般都使用多個相機;雷射雷達一般要配置兩個單線的雷射掃描,形成所謂butterfly的模式,該模式下掃一棟四方的樓能夠掃到三面,如果只有一條單線只能掃到兩面。所以一般在測繪級的應用上雷射雷達會採用兩個。移動雷射掃描系統獲得的點云為什麼能夠得到全球的定位坐標呢?原理如下圖所示:車上有一個組合導航系統,這個組合導航系統從衛星定位能夠獲得比較高頻率、高精度的定位信息,同時IMU提供了比較精確的方向,IMU跟相機或雷射雷達做了系統標定。由雷射雷達打一束光到P點,得到P點和雷達之間的相對坐標,同時因為雷射雷達與IMU有系統標定,所以可以計算P點在全球定位坐標裡的位置。
但該原理並不適用於所有環境,比如不能使用GNSS的環境(城市峽谷、隧道裡、室內、水下等)。除此之外,林業測量領域面臨同樣的問題,在山上使用GPS的精度和樹林的茂密程度有關,在樹林下使用GPS的誤差能夠達到50米,最多能夠達到300米;300米意味著在福建就在另外一個山頭上,其實樹林下是非常典型的GNSS Denial環境。在GNSS Denial環境下,一般的傳感器不再可靠,可選的替代方案有基於相機或者LiDAR SLAM,
本文將重點介紹LiDAR SLAM,在此之前,先給大家簡單介紹一下使用SLAM (Simultaneous Localization And Mapping)的原因。
02 多線雷射雷達SLAM
SLAM是機器人構建環境地圖並同時使用該地圖計算自身位置的過程。地圖可以為人或機器提供路徑規劃信息或直觀的可視化效果。像掃地機器人這一類2D的LiDAR SLAM一般是單線雷射掃描,得到一個二維的grid map,而三維雷射掃描主要用多線雷射掃描,得到三維點雲的模型。下圖是常見的多光束雷射掃描儀( Multi beam LiDAR scanner ),在早期Google的無人車以及諸多國產無人駕駛車上都可看到。其中,左圖為64線的雷射掃描儀,中間黑窟窿是車或者是傳感器架所在的位置,當前這一幀的數據是一圈一圈地展開。
實際上,在傳感器端幾何模型為:中間一個軸,64個beam圍繞該軸在旋轉,每一個beam朝著不同方向,右圖只展示了16線的模型。目前常用雷射雷達為旋轉式的LiDAR scanner,隨著無人駕駛不斷發展,已經有多家廠商在生產雷射雷達傳感器,例如鐳神、禾賽等。
其中一個很明顯的趨勢是前視的雷射雷達。上圖中的傳感器模型是旋轉式360度的,作為人類駕駛者在開車的時候眼睛是不會一圈一圈向後看的,可能偶爾看一下後視鏡,但主要是向前看。在無人駕駛這個領域的應用,向後掃描的點有些浪費,因此前視的雷射雷達是其發展的方向之一,最後的形態可能會像匣子一樣,前面的窗是雷射雷達多線向前掃描,類似於RGBD,但是它的掃描距離一般都要超過150米才能達到無人駕駛的標準,而且在這樣的距離要求下達到10釐米到幾十米的解析度。市場預期多線LiDAR scanner發展會非常迅速,預計今年多線雷射掃描儀的市場總量會呈一個指數級的快速增長。有人預測在每一輛車大燈裡都應該安裝前視的雷射雷達,從這個角度考慮,全球每年可能有100萬臺的出貨量。在掃描距離上能夠達到10公分到20公分的空間解析度。目前國際上的benchmark
,第一個是KITTI,含有比較豐富的原始數據以及標定結果,包括相機、64線以及高等級GPS/IMU的組合,涉及範圍和物體主要包括城區環境,還有一些居民地、高速公路和校園的環境。
第二個常用的數據為Ford Campus Vision 和LiDAR database,既有相機也有雷射雷達,獲取的數據特點與KITTI類似,但其周邊情況更加複雜一些。
第三個數據集是RobotCar,有大概1000公裡的數據,其特點是在一環道上面反覆獲取,每周獲取兩次,一年的期間採集了較多數據,對於測試可重複的情況較為有用。
第四個數據集是DBNet(drivers behavior net),由我們課題組於2018年推出,該數據集包括camera採集的前視圖像以及雷射雷達的數據,同時還記錄了操作者踩剎車和轉方向盤的角度。因為在駕駛車輛時,駕駛員與車輛互動的行為主要包含踩剎車、加油門、轉方向盤這三件事,將這些數據記錄下來,可以建立從drivers behavior到外界數據之間對應的數據集。目前DBNet數據集大概有1000公裡的數據,包括前視視頻、雷射雷達的點雲、GPS軌跡和drivers behavior,以及從總線裡面取出來的速度和轉速的情況。
第五個數據集為MI3DMAP,數據採用Backpacked system採集得到,數據包含雷射雷達採集的原始點雲數據以及團隊做出來的SLAM數據,還包括相機採集的數據、MEMS IMU的結果等。此外,Backpacked system上有多個手機,便於獲得WIFI 與藍牙的數據,這些數據可以為後續做基於電磁指紋的室內定位提供ground truth。
03 LiDAR SLAM介紹
LiDAR SLAM是工程性較強的問題,研究者們提出了諸多方法,本文重點介紹LiDAR Odometry的相關算法。首先介紹一下SLAM的時間線,
最早可以把主要論文分成四類:第一類是point-based即用點雲來做SLAM;第二類是feature-based,先提取出一些feature或者類似於feature的東西,用這些feature做匹配;第三類是learning-based;第四類是framework。point-based LiDAR Odometry方法中,ICP是非常傳統的方法,但到目前為止很多主流算法還是採用ICP的基本方案。在傳統ICP基礎上,還有從點到面(Point –to –Plane)的ICP方法。在基於點的LiDAR Odometry的基礎上,feature-based也是非常有效的一類方法,該類方法中比較經典的為LOAM方法,其後又發展出了V-LOAM,即在LOAM基礎上加了相機,相機跟LiDAR去結合。除了一些簡單Feature,我們在開放場景下可以將獨立物體切出來,我們稱之為Segment as Feature,較為經典的方法為SegMap框架。
04 基於學習的SLAM
深度學習在二維圖像中的應用取得了較大突破,但三維點雲深度學習框架實際上從2017年下半年逐漸發展起來,
其中比較典型的算法是PointNet。目前,該方法已經成為點雲處理的基本步驟。看起來跟CNN很像,區別在於圖中紅框中的這樣一個結構,這個結構進來是N×3個點,這個N是什麼呢?比如說你有1024個點,或者是2048個點,N就是1024或者2048,為什麼是3呢?因為你有XYZ,這樣輸進來就是一堆點,這堆點它的順序沒關係,其實 PointNet的本質就是要把點雲順序這個維度上面的隨機去掉。
接下來有一個MLP,多層感知的一個結構。對於每一個點它都做了64和64雙層感知,而且對每個點採用的網絡參數都是互相share,這樣XYZ的一個點經過這樣雙層感知變成了一個 64維長度的矢量,N×3變成了N×64,中間跨過了share MLP的這麼一個框架。它有多層,這樣整個框架的輸入是一個N×3的點,比如說1024個點或者2048個點,輸出是什麼呢? 是1024點或者2048個點得到的一個1024維的global feature description,而且這個description跟你輸入的點的順序無關,這也是PointNet標榜的一個主要性能。在此基礎上PointNet++ 把點雲用pointNet做了一個多層結構,這樣能夠擴大感知欲。pointCNN跟pointNet有很多相似之處,示意圖如下所示:這上面是圖像,圖像convolution的一個示意圖,底下是點雲,一個很小的點雲,10個點的點雲,就是所謂的X-convolution示意圖。其實建立點雲深度學習最關鍵的問題就是建立底層這樣一個類似於convolution的計算,
這裡面將它稱為X-convolution。這個作法就是把每個點的信息向著臨近的逐點去投射,這個投射的過程是用了一個類似於convolution的卷積計算的方法,而且X-convolution可以做多層,比如說一開始是10個點,第一層X-convolution以後變成了五個主點,接下來再投可以變成兩個點,這樣多層做下去以後,大規模的點雲變成了一個點數很少,但是在每個點上有著多維特徵的這樣一個簡化描述,跟我們圖像上面的convolution非常相像。下面給大家介紹End-to-End,Video進來以後直接用深度學習網絡,裡面把每一張圖像通過一個CNN加上RNN,這樣前後兩幀關聯起來,輸出就是一個pose。在三維點雲裡面也有類似End-to-End的工作,比如下面這個是2019年CVPR上的一個工作,叫做Point Cloud Matching。
這個工作它的特點首先在這裡面找到一些特徵點,這個特徵點是用別的一些特徵點提取方法來實現,對於每個特徵點上的特徵描述,先找到一個主軸投影方向,然後變成了一個類似於圖像的投影,接下來就是跟圖像很像的一個多層的類似CNN的處理方式,然後做兩邊的matching。下面介紹3Dfeat-Net,這個是2018年的工作,它是弱監督的工作,這裡邊採用正樣本、負樣本和中性樣本,上面的是正樣本,下面的是負樣本,中間的是中性樣本。有三個分支的孿生網絡,先進行特徵點的提取,但特徵點提取的時候有一個非常有意思的輸出,在這裡面不僅有所謂的feature descriptor,還有一個當地local feature的指向,這個指向應該說是個標準化的指向,為後續的匹配提供了一個很好的輸入,這個feature在後續的descriptor網絡裡面作為一個輸入進來,這樣對descriptor一致性有一個非常好的提高。前面介紹了從point based、feature based到Learning-based一些基本框架。接下來我介紹我們今年CVPR上的工作LO-Net,
我們做這件事動機有三個:1.我們剛才說了,其實點雲的三維深度學習整個框架還不是很有效,不管從處理效率還是準確度上,還是跟基於圖像的描述方式有差距。
2.雷射雷達它有一個特點,不同的傳感器,實際上每一支傳感器都有自己的一些激變,而且這些激變你要把它精確進行標定實際上是非常困難。因為SLAM它是在運動平臺做,在運動過程中雷射雷達掃描還是每秒10-30赫茲,它轉一圈是有時間的,在它轉一圈的時間裡面你在向前走, 如果原來是一個圓的話,你走得越快這個圓變得越扁,大家能想像到這個圓變得越扁。這應該是一個直線的牆,但是由於這樣的激變導致它是一個弧線,因此這樣的一些激變在不同品牌,甚至不同只的傳感器之間挺複雜的。
我們希望把這一部分用深度學習跨過去,不要每一隻傳感器都要做特別的標定。3.像KITTI這樣的數據它更多的是在一些歐洲的城市裡面來做,它周邊的環境還是比較靜態,我這裡弄的比較誇張,採集的古城的數據。而我們真正使用SLAM的時候經常是這樣一個動態的環境,包括我們背著背包在屋子裡面走的時候,周邊也經常有人開門關門等等的運動。運動環境下LiDAR SLAM是非常重要的一個motivation。我們做的第一步工作,就像下圖展示的那樣,雖然是一個雷射雷達,掃出來是點雲,但是
我們根據碼盤的讀數把它再投影回類似於一個圖像的東西,是一個很長條的圖像,如果使用的是64線的雷射雷達,得到的是一個64線高,大概2048寬的這麼一個類似於圖像的條帶。得到XYZ,同時還有回波強度以及距離,XYZ實際上可以反演出距離,但是因為這五個數據從雷射雷達可以直接讀出來,所以我們把它變成了五張圖像。這裡面不可避免有些點沒有反饋,所以有些點是需要你做標記。我們網絡情況下大概是下面這樣,採用雙分支,旁邊畫了兩個Mask,這個Mask就是為了防止把邊上的這些運動物體,讓它在訓練的時候對運動物體有所感知,訓練的時候一路這樣下來以後往Mask走,Mask要輸出的是一個運動物體的提取。但是訓練完了以後Mask這一步就不用了,唯一使用是encoder這個通道,把它share到用來做feature description,用feature來提取,這兩個feature提取完了以後使用一個全連接,輸直接輸出Odometry。這個方法它的特點是什麼呢?
我們在這裡面考慮到了在特徵描述的時候對於運動物體的這樣一個描述,因此在真正做Odometry的時候能夠對周邊的運動物體有所感知,這樣通過多任務的方式能夠提高整個網絡在SLAM時候的性能。下面是LO-Net 和其他方法的一個對比。我們看到在KITTI這樣的數據,我們有不少能夠比LOAM要好。更明顯是在Ford數據上,
Ford這樣的數據它周邊的運動物體會更多一些,我們的優勢也會更明顯一些。下面是Trajectory的結果,中間紅色這一條是結果。下面這個做的一個大範圍SLAM結果,這個範圍大概在幾百米,500-1000米這個距離上。這個是僅僅使用Mapping Results得到的結果,中間沒有用其他的,比如說GNSS,或者是camera其他一些傳感器,直接就是使用LiDAR的數據然後做的SLAM。
05 總結
基於SLAM的移動雷射掃描系統已經能夠為GNSS失效的環境服務。多任務能夠提升LiDAR SLAM能夠它的可靠性。
【歡迎大家提供行業新聞熱點,商業合作請聯繫:18562613430】
推薦閱讀
▼
免責聲明:
凡本公眾號註明「來源:XXX(非智車科技)」的作品,均轉載自其它媒體,轉載目的在於傳遞和分享更多信息,並不代表本平臺贊同其觀點和對其真實性負責,版權歸原作者所有,如有侵權請聯繫我們刪除。