論SLAM技術的產業化應用
來自專欄 SLAM學習25 人贊了文章
2018年7月,深藍學院發起並承辦的「第一屆全國SLAM技術論壇」,舉行了「SLAM技術的產業化應用」的圓桌對話,邀請鐳神智能的雷祖芳、圖森未來 @圖森未來 的王乃岩、縱目科技的宋宇、地平線 @地平線HorizonRobotics 的楊德剛4位重量級嘉賓參與分享。現將內容整理公布,希望更多SLAMer受益(文末有彩蛋)。
劉越:在近一天半的論壇中,來自學術界和企業界的多位專家向我們介紹了SLAM技術及其在無人駕駛、無人車等領域的應用。今天上午的圓桌論壇,我們希望利用一個小時左右的時間,一起來探討SLAM技術產業化應用方面的話題。今天所探討的話題都是由會務組在論壇中徵集到的,也都是比較開放的問題。我對這樣的問題非常感興趣,非常高興有這樣的機會可以跟各位嘉賓探討。
問題1:SLAM技術可以在未知的環境中構建地圖,通過所構建的地圖可以實現無人車和無人機的自主導航和自主定位等應用。那麼,SLAM技術在無人車和無人機的應用中目前主要的技術有哪些?未來發展的趨勢是怎樣的?
宋宇:我是來自縱目科技的宋宇,很高興能和大家分享。
首先,我來回答第一個問題,SLAM技術在無人車和無人機的應用。SLAM這個詞最早出現在機器人領域,意思是同時定位與地圖創建。它包含兩個部分,一部分是localization,另一部分是mapping。對於無人機來講,它主要是用Localization。由於我以前是做無人機方面研究的,在無人機上我們主要運用多感測器信息融合技術,包括視覺感測器、視覺慣導、氣壓計、羅盤、GPS等低成本的感測器。在無人機的應用中,比如無人機的室內旋停和自主飛行等應用,都需要用到VIO技術。VIO相對於SLAM來說缺少了loop closure這一步。
其次,在無人車這一領域,我認為SLAM技術還難以達到產業化的要求。但是,在特殊場景下的無人車的SLAM已經可以實現。我認為視覺SLAM在無人車領域的應用中,主要是用於定位。在已經建立好地圖的情況下,用於localization。在建立地圖的過程中,我認為使用激光雷達來建立地圖是更好的選擇。而對於視覺的應用,我認為視覺更多、更可能的應用應該是用來做視覺慣性里程計,然後結合地圖做低頻的校正,這是一種可實現的方式。因為,視覺SLAM建的地圖和激光雷達SLAM建的地圖是不一樣的。激光雷達SLAM所建的地圖是稠密地圖,除了能用於定位,還可以用於路徑規劃,包括全局的路徑規劃。但是,視覺SLAM建立的地圖只是稀疏地圖。如果想要通過視覺SLAM建立稠密地圖有兩種方式,一種就是利用立體視覺技術來恢復深度信息;另外一種方式就是像沈老師(沈劭劼)介紹的單目恢復深度信息的方式。這種方式目前仍處於研究階段,這種技術能否應用於無人車還有待於探討。雖然在無人車上使用視覺SLAM和激光SLAM都可以,但是我認為對於視覺的應用,更多來自於它的重定位技術,也就是視覺里程計。比如,在已知地圖的情況下,通過視覺對無人車進行定位。
最後,關於未來發展趨勢,我認為有兩點可以說。第一點是關於建圖的。利用激光雷達建立地圖,現在已經相對成熟。但是該技術目前也面臨一些挑戰,所有激光雷達SLAM的難點在於激光雷達感測器不是全局快門。這會導致地圖的distortion。只有消除地圖的distortion,才能建立出較高質量的地圖。我認為將來在無人車的應用中絕對不僅僅只用這兩種感測器,未來需要結合其他的感測器,比如低成本的慣性感測器、輪子編碼器、甚至低精度的GPS。利用多感測信息融合技術,獲得更好的表現。第二點是關於SLAM技術在應用中的一些問題。首先,雖然SLAM技術中有閉環檢測,但是在無人車的控制中不能做閉環檢測,因為狀態是不能突變的。另外,在SLAM做狀態融合的時候,昨天沈老師和李名揚博士都已經介紹了,需要注意到它的XYZ和yaw是不可觀測的,需要維護好協方差。那麼,這裡面包含了一個值得探討的問題,那就是視覺里程計的誤差應該如何科學定義。例如,當使用GPS對機器人的位置進行糾正時,GPS是絕對sensor,而SLAM也被當作絕對sensor。將兩個絕對sensor的信息做融合時,如果SLAM的誤差已經足夠小,那麼系統就會被SLAM綁架,GPS 就起不到任何作用。這種多感測器融合機制是否合理,也是未來值得探討的一個方向。
問題2:為了使無人駕駛系統有更好的魯棒性,我們希望使用多種感測器,包括視覺感測器、激光雷達、慣導等。我想請教在座的各位專家,在無人駕駛領域的多感測器融合中,我們應該如何配置各感測器?因為各感測器要完成的工作是不同的,有的用於定位,有的用於感知環境。我想知道各位專家對於未來的無人駕駛的多感測器配置方案有什麼想法?另外,對於多感測器信息的處理,目前還有哪些關鍵問題需要解決?
王乃岩:關於這個問題,我在報告里已經介紹了很多。另外,我認為比較重要一個問題是多感測器的同步。沈老師(沈劭劼)在報告中也講了很多關於多感測器同步的內容。其實,多種異構感測器的同步以及在系統中時間戳的對齊是一個很大的問題,尤其是在各種感測器的頻率不一致的情況下,這是一個很大的挑戰。
問題3:我們提到多感測器的融合,目前各感測器各有優劣。隨著激光雷達的發展,它的價格將會急劇降低。我想問雷總(雷祖芳),如果激光雷達的價格降低到目前視覺感測器的價格,那麼是否意味著將來激光SLAM將會取代目前魯棒性較差的視覺SLAM?
雷祖芳:我們做激光雷達的願景就是希望激光雷達的價格可以更親民。當然是在保證性能的前提下,盡量將價格降低。但是,激光雷達也有技術問題需要解決。在視頻中大家也可以看到,當我們用比較低線數的激光雷達與視覺感測器做融合的時候,比如16線,我們還是用到了很多視覺感測器的優點。例如,在車道線和信號燈的檢測中,用激光雷達檢測車道線和信號燈的效果並不好。因此,我們還是在用攝像頭做相關的檢測工作。但是在目標的探測、識別和高精度方面,激光雷達的優勢還是非常明顯的。隨著多線數激光雷的研發,比如業內已經有上百線數的激光雷達,它的信息就變得非常強大。它使得激光掃描獲得的點雲能夠直接和視覺中每個像素進行匹配。在這種情況下,目前視覺感測器在自動駕駛中能做的工作它都能做。目前主要是受制於成本的問題,才沒有被廣泛使用。如果將來高線數激光雷達的成本能夠降低到攝像頭的價格水平,那也許就可以替代攝像頭了。當然這是非常困難的,但是它的效果也是非常好的。
問題4:我們目前在很多機器人的導航和定位中,主要還是使用純視覺的SLAM,包括增強現實,目前主流做法也是僅僅依靠視覺SLAM來解決實時的導航和定位問題。這樣做的主要好處在於它的體積較小、功耗較低和價格較低。那麼,目前在地面機器人的路徑規劃中,如果使用純視覺的SLAM,那麼它的優點和缺點有哪些?以及如何通過視覺SLAM高效構建稠密的地圖?
楊德剛:如果用視覺SLAM做實時的建圖和定位的話,其實有一個前提條件,那就是這個SLAM的姿態要準確,對環境的感知也要準確。這裡有一個約束條件,那就是車速要比較低。因此,常見的掃地機器人或者是送貨的機器人可以用實時的SLAM完成導航的任務。但是,如果你是有大範圍的場景和明確的目的地的需求,那麼還是需要有地圖的。這樣就不單單是一個純粹的SLAM的問題了,還有重定位和匹配的過程。其中,路徑規劃除了有低速的限制,還有對於實時計算能力的更高要求,還有對SLAM的精度和效率的更高要求。如果提前有高精度地圖的話,你可以做這方面的冗餘備份和補償,比如用高精度地圖可以提前獲得彎道信息。當環境感知不準確的時候,你可以獲得可行區域。當定位不匹配的時候,比如SLAM失效的時候,你可以通過與已有的高精地圖進行匹配來重新初始化。因此,在自動駕駛這種場景下,多年的實踐說明高精地圖是一個必備要素。當然,高精地圖也有不同的做法。比如,目前大家普遍做都是重高精地圖。這種高精度地圖對地圖的完整性,包括元素的完整性和邏輯關係的完整性,要求都非常高。因此,高精地圖的生產是非常昂貴的,這是現狀。如果真的要把無人駕駛技術落地,這是必須要解決一個痛點。解決的方向是什麼呢?因為目前所有的模塊都依賴於高精定位,所以解決辦法就是降低對高精定位的依賴。降低這部分的依賴,這部分的計算性能就要轉移到感知上面。當然現在感知上面也有不錯的進展。那這就相當於做局部的實時感測建模,局部感測建模需要用到SLAM技術,需要同時跟雲端的高精地圖做全局匹配。這樣做相當於在中間插入局部地圖的模塊。在這種情況下,整體的代價就會降低一個程度,也就更容易推廣。
問題5:在同步的定位與地圖構建的技術中,地圖是非常關鍵的內容。那麼在做無人車的路徑規劃的時候,我們所依賴的地圖要如何解決呢?未來有哪些發展方向?
王乃岩:我認為地圖不一定是強依賴於高精地圖的。我從兩方面來說。一方面,基於已經建立好的高精地圖做路徑規劃,這是最簡單、最方便、也是最偷懶的方式,因為高精地圖可以提供所有以需要的信息。但是,當我們人類在開車的時候,我們需要在出發之前就想清楚整個地圖的樣子嗎?答案當然是否定的。因此,更關鍵的問題,我認為是如何構建一個相對地圖,就是以局部感知為基礎的相對地圖的構建。另一方面,我認為路徑規劃也是同樣道理,高精地圖可以只提供一些基本的信息,對於路面上更豐富的信息,還是需要感知去補充。我認為這是一個可能的發展方向。
問題6:環境中物體的檢測和識別是非常關鍵的技術。特斯拉出車禍的原因就是錯誤地把貨車識別為天上的雲彩,從而造成了非常嚴重的車禍。目前已有的物體檢測識別中,二維的比較多,三維比較少。我想請教各位專家,二維物體的檢測識別與三維物體的檢測識別會有哪些不同?目前我們廣泛使用的還是機器學習、深度學習的方法,因此我們必然要面臨數據集的準備和網路的訓練等問題,那麼在這些方面我們需要做哪些轉變?
王乃岩:我認為從二維到三維的轉變是目前視覺面臨的最大問題。在演算法的轉變方面,我認為不能把深度學習當成個黑盒子,把數據扔進去就直接輸出你想要的東西。不能把深度學習當成一個黑盒子,當成一個複雜的函數映射。在這裡面,我們一定要利用一些先驗知識和約束,3D信息是有很豐富的先驗知識和約束的。如果用視覺的話,需要利用幾何約束。如果用激光雷達的話,直接有3D點雲信息。我們怎麼能夠把幾何約束對於場景的先驗信息放入到深度學習中。例如,自動駕駛的主要場景是路面,我們怎樣把這個先驗信息放到深度學習當中去,我認為是非常關鍵、非常重要的問題,也是能夠解決好2D到3D轉變的核心問題。
雷祖芳:3D的激光點雲是可以被用於做物體檢測的。但是對於物體識別,它有一定的難度,這方面也是我們正在研究的一個領域。以前,我們對激光點雲純做聚類,然後再做識別。隨著技術的發展,我們正在嘗試用多線的激光雷達做汽車、行人和非機動車的標註。在完成標註以後,我們用視覺訓練的方式訓練激光點雲的特徵。我認為這也是一種趨勢,由於視覺檢測有時會遇到強光和信號的干擾,而激光雷達沒有這些干擾,數據一般也不會丟失。另外,由於目前視覺的訓練方法,比如深度學習的方法是比較前沿的,做得也比較深入,所以我們就想到把激光點雲用視覺的方式來訓練,以完成物體的識別和探測。
王乃岩:如果大家關注視覺的會議的話,比如說CVPR,可以發現CVPR最近刊登了非常多的有關用深度學習處理3D點雲的工作,而且也取得了非常不錯的成果。以Uber為代表,他們做了相當不錯的工作。在點雲感知和點雲檢測方面我們內部也都使用了深度學習的方法。這應該是一個趨勢。
問題7:目前通過視覺和慣導的組合,我們是如何提高無人車的定位精度的?剛剛宋總(宋宇)提到,在無人機中使用了VIO演算法。下一個問題是,如果把VIO演算法遷移到車平台上是否有更好的應用?
宋宇:我認為視覺有視覺的缺點,慣導有慣導的問題。在無機人的視覺和慣導的融合中,可以採用松耦合的方式,也可以採用緊耦合的方式。松耦合的優點在於它的魯棒性。一個感測器壞了,而其它的感測器不壞,整個系統就不會出問題。而緊耦合中,如果有一個感測器壞了,那麼整個系統將不能工作。但是,緊耦合的運算量相對大一些,精度高一些。這是兩者的優缺點。對於無人機而言,慣性信息對VIO(沒有loop closure的SLAM)的前端和後端都有幫助。對前端的幫助主要是引導特徵匹配。在無人機的應用中,如果強制增加匹配,增加運動恆速模型或者是運動恆加速模型,那麼你假設的RT可能是不對的。你的3D特徵點可能在上一幀的投影就不對了。當投影面擴大後,搜索麵就會擴大。當搜索麵變大之後,計算量就會上升。如果計算量上升,那麼誤匹配就會增加。所以,慣性信息,特別是陀螺的旋轉信息是非常關鍵的。它可以對SLAM的前端有非常大的幫助。另外,加速度信息同樣是非常重要的。同時,VIO也可以修正陀螺儀和加速度的信息,兩者是相輔相成的。
另外,我認為無人機和無人車是不一樣的。無人機是空中飛行的6自由度機器人,而無人車是一種受非完整性運動約束的3自由度機器人。因此,研究無人車的性質可以考慮運動性約束。比如,無人車不能同時前進和側移,它只能在一個平面上運動。它不會發生很大的roll和pitch,除非出現翻車事故。在無人車上面也許可以做更好的簡化,比如在無人機上面的VIO不能跑大規模的BA,因為所有的演算法都是在一個晶元中實現的。而且做無人機的時候,所有的代碼都要自己寫,不能用第三方庫。矩陣求逆和QR分解都要自己實現。我們做好一個產品後,就要交給測試部進行測試。測試部從南測到北,從-20度測到30度,在各種場景下測試產品。然後,各種bug會反饋回來,我們再做修改。無人車SLAM的應用,我認為目前全路況大規模的應用還是有一定問題的。無人機已經商業化了,而無人車還遠遠沒有達到商業化的要求。但是對於特殊場景的應用還是大有可為的,比如縱目科技做的自主泊車,或者是圖森未來做的貨車在碼頭上的自動駕駛,但是,全路況的無人駕駛還是有一定的距離。例如,我在卡耐基梅隆的時候,我見到Uber在卡耐基梅隆建的研發中心。他們挖走了卡耐基梅隆計算中心一半的研究員,甚至連匹茲堡的美國國家計算機中心的總監都被挖走了。但是,現在Uber已經是分崩離析的狀態了。因此,自動駕駛的挑戰和難度是很大的。因為這不僅是自動駕駛的問題,還是人工智慧的問題,還是Visual SLAM的問題,還是deep learning的問題,這裡面涉及到傳統機器人學的方方面面的問題,甚至包括結構和控制等問題。因此,大家要做好長期奮鬥的心裡準備。
問題8:如何提高目前演算法的匹配速度以及準確性?如何減少相似條件的誤匹配?例如,當進行實時的定位和導航的時候,我們會碰到很多相似建築物、植被和路標等,如何減少相似條件的誤匹配?另外,在視覺SLAM當中圖像增強是非常關鍵的一個技術,我想請教各位專家目前在視覺SLAM中哪一種圖像增強技術的適用性更好?
楊德剛:我來回答第一個問題。首先是加快匹配速度的問題,這裡面的關鍵點在於匹配的時候有多少個計算的點。因此,一種解決方法是減少匹配的參考物的數量。減少參考物數量有一個隱憂,那就是可能導致最終的匹配會出現一定的誤差,導致最終結果變差。這就引出了第二個問題,怎麼減少這樣的誤配。例如,在做定位的時候,我們可以使用當前時刻的感測器的輸入數據跟全局地圖或局部地圖進行匹配做定位,這是一種常見的計算思路。在這樣的形式下,我們只用當前幀的信息做匹配。由此引申出來了減少誤配的方法,例如,當局部里程計的精度為千分之一時,我們可以累計一千米的局部地圖跟全局地圖進行匹配,這樣誤匹配就會降低很多。另外一種方法是,在地圖中為參考元素增加更多的特徵或者是區分性。例如,只計算一個物體的位置,xy,它的區分性肯定不如加上朝向等信息的區分性。這也是一種減少誤配的思路。
在圖像增強這方面,我們在實踐過程當中,我們很少在SLAM端直接做這件事,我們主要還是在感測器端做這個事情。
宋宇:我認為在圖像匹配的問題上,現在確實有在視覺SLAM中究竟是前端重要還是後端重要的這樣一個問題。我的個人理解是前端更重要。因為視覺SLAM從一個概念發展至今,理論上已經成熟完備了。當初EKF_SLAM就已經解決SLAM的問題。雖然現在有了濾波器,但是前端對整個SLAM系統的影響還是很大。大家可以思考一個問題,你們認為是feature matching好還是feature tracking好呢?每一種方式都有自己的優勢。比如tracking是不需要descriptor的,但是它的幀率要求很高。那麼,可能就做不了loop closure,做不了BA。但是對於做全局的匹配,視覺里程計里有一個問題就是它沒有一個初始的定位基準。起始位置就是坐標系的零點。另外,全局定位其實是一個很難的問題。例如,掃地機器人先在某一位置工作,然後人為地把它搬到另一位置,它還能不能順利定位?這個問題還是很難解決的。因此,現在Visual SLAM中做loop closure或者重定位中都要用BOW。但是,它也有局限性。在無人駕駛中,可以考慮加入場景的標誌,比如交通標誌。
王乃岩:我也認為前端更加重要。舉個例子,我是以前是做視覺方面研究的。我以前一直在做追蹤,關注了很多單目追蹤的相關研究。我發現在做追蹤過程中,只要把detection做得準確,後面的匹配和跟蹤就可以做得非常好。我認為前端和後端的關係也是這樣的,如果你前端做得非常好,後端可以做得非常簡單。至於怎樣把前端做好,我認為很重要的問題是descriptor這個問題。大家可以關注一些運用deep learning做descriptor的工作。我認為這方面大有可為,還處於非常早期的狀態。我們之前做雙目視覺的時候,嘗試過一些類似的方法,結果都相當好,而且運算速度我認為也不是太大的問題。因為現在有非常多的方法可以加速。比如,descriptor不會是一個很複雜的網路,可能就是幾層淺一點的網路,如果說把它二值化,或者是用一些別的手段,是可以使它在CPU上運算得很快的。這是一個很好的研究方向和熱點。
三維視覺前沿進展與應用
中國圖象圖形學學會主辦,深藍學院承辦的「三維視覺前沿進展與應用」前沿講習班,將於10月13日-14日(周末)在北京大學舉辦。邀請8位學術界和企業界專家學者作報告,並交流分享。
報名鏈接:CSIG圖像圖形學科前沿講習班 第7期
更多SLAM技術論壇的資料,請添加深藍學院工作人員微信領取。
註:文章由深藍學院第二期視覺SLAM課程優秀學員鄭浩整理,未經允許,禁止以任何形式轉載。
推薦閱讀:
TAG:同時定位和地圖構建SLAM | 機器人 | 機器人操作平台ROS |