創(chuàng)澤機器人 |
CHUANGZE ROBOT |
自動駕駛車輛通常都是預(yù)先建立地圖,然后利用此圖進行定位,所以真正的、完整的、高貴的SLAM只發(fā)生在第一次采集并生成地圖之后,后續(xù)就是如何用這些地圖進行定位導(dǎo)航的問題。另一方面,自動駕駛用的地圖和機器人的地圖。
低速自動駕駛車輛的地圖
乘用車,大家也了解,一年半載的肯定沒法實際上路,上了路還有一系列的法律法規(guī)問題,還有一堆的世(shi)界(shi)難(ju)題(keng)等著各位工程師去解決(tian keng)呢,所以這會兒我們也不需要多么著急(反正有更著急的人在)。
而對于低速車來說,相對安全,避不了障大不了先停在原地讓人先過,還顯得文明禮讓(我家的產(chǎn)品避障完全沒問題啊!)。這兩年各種配送、清掃、挖礦之類的自動駕駛低速車會慢慢的抬頭,大家應(yīng)該會漸漸看到一些功能和價格都能夠接受的產(chǎn)品。而我自己是做SLAM的,所以主要談?wù)勥@類車上的SLAM問題。
和學(xué)術(shù)界平時說的SLAM不同,自動駕駛車輛通常都是預(yù)先建立地圖,然后利用此圖進行定位,所以真正的、完整的、高貴的SLAM只發(fā)生在第一次采集并生成地圖之后,后續(xù)就是如何用這些地圖進行定位導(dǎo)航的問題。另一方面,自動駕駛用的地圖和機器人的地圖,對,就是你平時見到的那種,ROS里的黑白灰圖,也會有點差別。
ROS里的占據(jù)柵格地圖,我喜歡叫它黑白灰圖
機器人用的柵格地圖,很顯然,主要表達何處有障礙物,何處是可通行的區(qū)域,此外就沒有了。它具有基礎(chǔ)的導(dǎo)航與定位功能,精度也不錯(厘米級),制作起來十分簡單,基本可以讓機器人自動生成。對于送餐掃地的室內(nèi)機器人來說,這種地圖基本就夠用了。但是為什么自動駕駛不用這種圖呢?它和高精地圖有哪些差別呢?
一條很明顯的區(qū)別是:在室內(nèi),機器人可以去任意可以通過的地方,不會有太多阻攔。而對于自動駕駛來說,每條路都有對應(yīng)的交通規(guī)則:有些地方只能靠右行駛,有些地方不能停車,十字路口還有復(fù)雜的通行規(guī)則。
智行者科技無人清掃消毒車蝸小白
室內(nèi)機器人可以利用柵格地圖進行導(dǎo)航,但在室外可不能在十字路口上橫沖直撞。所以,在導(dǎo)航層面,室內(nèi)與室外的機器人出現(xiàn)了明顯的區(qū)別。室內(nèi)的導(dǎo)航可以基于柵格來實現(xiàn)諸如A*那樣的算法,但室外基本要依賴事先畫好的車道。如果你希望你的外賣機器人既能在室內(nèi)取貨,又要跑到馬路上送到2公里外面的客戶家中,那么就得同時考慮這兩種地圖的使用方法了。所以你看,低速車輛是界于傳統(tǒng)移動機器人與乘用車之間的產(chǎn)物,它的地圖比兩邊現(xiàn)成產(chǎn)品都要復(fù)雜。
我們會用不同的術(shù)語來描述地圖的構(gòu)建階段。大體來說,從一無所有的采集過程開始,我們會碰到兩個大階段:
1、SLAM階段:解決從原始傳感器數(shù)據(jù)開始,構(gòu)建某種基礎(chǔ)地圖的過程(一般是三維點云或二維圖像、柵格);
2、標(biāo)注階段:在SLAM結(jié)果基礎(chǔ)上進行人為標(biāo)注,實現(xiàn)更精細(xì)的交通規(guī)則控制。
SLAM階段往往是自動的,而標(biāo)注階段目前還主要是人工的,完美體現(xiàn)了“人工智能”相合作的過程。目前乘用車高精地圖生產(chǎn)主要成本是在標(biāo)注階段,通常是一群人在在電腦前加班加點地趕著各種工程排期。顯然,這個標(biāo)注過程的好壞直接影響地圖質(zhì)量,一旦標(biāo)錯就等著觀賞車輛各種怪異行為吧。
然而,我們也沒法完全實現(xiàn)標(biāo)注過程的自動化,因為很多人為規(guī)則并不體現(xiàn)在場景數(shù)據(jù)里。比如公園里的草坪,物流車大概不能走上去,而灑水車大概就應(yīng)該在草坪上行走,而我們無法通過點云或圖像識別出此類規(guī)則,給此類地圖帶來了很大的人工工作量。
比如下面這個點云圖,雖然結(jié)構(gòu)上看不出來,但實際上中間一圈是一個草坪,正常情況下車輛是不能進去的。所以,只能通過人工來標(biāo)注車輛的行駛區(qū)域,才能讓小車正確地導(dǎo)航。
標(biāo)注過程通常是一些非常繁瑣的步驟,而且因為繁瑣所以價格還挺高。根據(jù)2019年的《高精地圖產(chǎn)業(yè)發(fā)展現(xiàn)狀及趨勢》,一公里高精地圖的成本費用還在幾千至幾萬元。采集車雖然貴但畢竟只有幾臺,計算機開一下程序也只需要一些電費,所以成本主要還是在標(biāo)注上面。這里的商業(yè)化道路還是挺困難的,然而也沒什么辦法(攤手)。
問題低速車輛的SLAM
由于我個人是做SLAM的,咱們還是把主題回到SLAM上來。目前室外車輛的SLAM還是以多線激光為主。雖然激光SLAM原理上比較成熟,然而實際結(jié)合其他傳感器來SLAM,還是有一些問題的。學(xué)術(shù)界的論文總喜歡挑好看的結(jié)果來發(fā)表,而現(xiàn)實問題往往是骯臟的、動態(tài)的、復(fù)雜的,這一點,沒解決過實際問題的人可能感受不深。
低速車輛如果真正應(yīng)用,那么地圖構(gòu)建時間就不能太長。如果我們在意地圖質(zhì)量的話,標(biāo)注工作基本是省不了的,所以對SLAM端的要求就可以總結(jié)為:自動化、高可靠性,以及對復(fù)雜環(huán)境的適應(yīng)能力(不需要現(xiàn)場人員調(diào)參)。這件事情看似簡單,但實際用來總有各種各樣的問題。
激光SLAM
激光SLAM的基本原理就是點云拼接,有些地方也叫注冊、配準(zhǔn),等等。可以利用柱狀物等特征信息來拼接,也可以直接用點來拼接,總之這方面各種方法大同小異,區(qū)別不大。激光SLAM的開源項目也有很多,感興趣同學(xué)可以看看LOAM/Lego-Loam等經(jīng)典的方案。
Lego-LOAM Demo圖
當(dāng)然,論文上的圖片肯定是美麗的,實際當(dāng)中也肯定是會遇到問題的。如果只靠激光配準(zhǔn)就可以把地圖生成出來,那這邊SLAM也就沒什么難度可言了。我們不妨來看看激光SLAM有什么實際問題。
1、點云拼接是個類似于里程計的過程,它們計算的是局部點云之間的相對運動關(guān)系。這個運動誤差會逐漸累計,直到地圖出現(xiàn)嚴(yán)重變形。其中,高度上的變形會比較明顯,你會發(fā)現(xiàn)地圖一端可能會“翹起”或“下沉”。
激光SLAM的累計誤差使得地圖高度出現(xiàn)錯誤,兩側(cè)對不上
2、點云拼接的結(jié)果依賴于現(xiàn)場的實際三維結(jié)構(gòu)。在結(jié)構(gòu)化道路中,基本可以期待地圖由中間的馬路與兩側(cè)的路牙、樹木、護欄組成;但在非結(jié)構(gòu)化道路中,很難對場景結(jié)構(gòu)有一個先驗的知識。它可以是普通馬路,也可能是人來人往的商業(yè)街,也可能是萬眾聚會的廣場……總之,你很容易看到激光失效的場景。
激光匹配在廣場或單側(cè)臺階等場景下會導(dǎo)致失效,原本直線前進的軌跡會出現(xiàn)扭曲情形,并使得遠處物體模糊
3、更常見的就是來回路段由于匹配失誤導(dǎo)致地圖出現(xiàn)重影,有些論文也稱為“鬼影”。這種現(xiàn)象出現(xiàn)的原因,是兩個激光點云看到了同樣的結(jié)構(gòu),但由于距離較遠,匹配算法沒法將它們完整匹配起來。
4、最后,純粹由激光匹配得到的地圖,沒有現(xiàn)實世界物理位置信息。如果缺少物理世界信息,那么你沒法按照點云圖把車輛導(dǎo)航到指定位置;如果有兩個激光點云時,也很難把它們完美地拼接起來。
所以,我們需要處理激光與其他傳感器的組合。在點云失效時,嘗試用其他傳感器進行補償;在點云出現(xiàn)累計誤差時,用其他傳感器來進行修復(fù)。
激光SLAM和GPS組合
室外自動駕駛車輛通常有一個GPS接收器,指示其物理世界位置。結(jié)合GPS信號,我們就可以構(gòu)建帶有物理世界經(jīng)緯度的地圖。這個物理坐標(biāo)在某些業(yè)務(wù)中是很重要的,因為車輛很可能需要導(dǎo)航到另一個真實世界的建筑物中。相對的,純室內(nèi)的小車就不需要這種坐標(biāo),因為它們只在一間或幾間屋里導(dǎo)航,而不必關(guān)心這間屋子在真實世界當(dāng)中什么位置。
智行者科技無人清掃消毒車蝸小白
GPS的一大特點就是“看天吃飯”。信號好的時候它可以到達厘米級定位,可以直接使用差分GPS+IMU的結(jié)果來進行組合導(dǎo)航。這種做法在如今的無人車、無人機里還很常見。對于天天在高速公路上奔跑的乘用車來說,絕大部分情況下可以以GPS為主導(dǎo);但是,對于園區(qū)里運營的小車,進個樹林穿個夾層都是稀松平常的,GPS“信號不好”比“信號良好”更加常見。你能夠接受無人車因為“信號不好”半路拋錨的情況嗎?
在公園、景區(qū)的道路上,小車會經(jīng)常穿梭于樹林、橋梁之中。這些地形上GPS很有可能出現(xiàn)大范圍不可用的情形
GPS噪聲是個很有意思的模型。通常GPS接收器根據(jù)自身接收情況,會給出一個信號強弱的判斷。然而,由于著名的多徑效應(yīng),GPS也可能給出一個信號很強,但位置錯誤的數(shù)據(jù)。這就要求SLAM算法對各種信號下的GPS都有穩(wěn)定的表現(xiàn)。在GPS好時,應(yīng)該聽從GPS的軌跡走向;在GPS不好的區(qū)域,能夠正確識別并改進。
GPS信號良好的路段例子。左側(cè):點云地圖;右側(cè):軌跡圖。軌跡圖中紅色為優(yōu)化后軌跡,藍色為GPS軌跡。由于GPS全程良好,優(yōu)化軌跡與GPS重合。
GPS信號不佳的例子。可以看到右側(cè)藍色軌跡在無規(guī)律跳動,但是點云仍需要正常構(gòu)建。
GPS信號的不確定還會帶來一些實際的問題。例如,如果車輛開機時GPS信號不好,那么車輛如何確定自身的物理位置?它應(yīng)該是開到一個開闊區(qū)域,等待GPS信號變好,還是以一種“不確定物理位置,但有相對位置”的狀態(tài)開始運行?
假設(shè)如此,那么運行一段時間后GPS信號變?yōu)檎#ㄎ恍畔?yīng)該直接跳到GPS指向的物理位置嗎?這種跳變會不會對控制產(chǎn)生不良的影響?另一方面,在建圖時,我們通常需要按照物理位置來區(qū)分不同的地圖,例如公園北側(cè)和南側(cè)很可能使用兩個不同的地圖。如果GPS信號不好,車輛應(yīng)該如何確定使用哪一張地圖?這些問題都需要一個實際的解決方案。
GPS的處理方式是室內(nèi)外車輛SLAM的一個很大的不同點。這會讓SLAM的邏輯變得更加復(fù)雜。我們需要結(jié)合其他的傳感器位置來判斷GPS信號的有效性,這往往要用到一些全局軌跡的估計方法,而像卡爾曼濾波器這樣有時間順序的算法會受到干擾。
另外,如果我們還使用了基于位置的回環(huán)檢測算法,那么它會明顯受到GPS信號好壞的影響。一旦GPS信號變差,激光SLAM的性質(zhì)就變?yōu)橐粋里程計,其累計誤差變大之后,基于位置的回環(huán)檢測算法就很可能失效。
激光SLAM的退化特性
激光SLAM存在各種失效情況,有些你甚至很難事先預(yù)料到,例如:
在廣場、機場等開闊區(qū)域,即使是多線激光,也只能看到幾圈地面上的點云。僅使用地面點云進行匹配,很可能在水平面上發(fā)生隨機移動。
在長隧道、單側(cè)墻、橋梁等場地中,激光匹配會存在一個方向上的額外自由度。也就是說,沿著隧道前進時,獲取到的激光點云是一樣的,使得匹配算法無法準(zhǔn)確估計這個方向上的運動。類似地,如果機器繞著一個圈柱形物體運動時,也會發(fā)生這種情況。
在一些異形建筑面前,激光可能發(fā)生意想不到的失效情形。
這些結(jié)果被稱為激光的“退化”,也就是說,本來能夠估計6自由度的激光匹配算法,由于場景結(jié)構(gòu)的限制,某幾個自由度上的運動無法估計。這時,就需要建圖算法來降低激光軌跡的權(quán)重,利用其他軌跡來補償激光的失效了。
位于長沙的梅溪湖藝術(shù)中心是令我印象深刻的地方(雖然我本人并沒有去過現(xiàn)場)。但在這個區(qū)域的中心,激光匹配就會非常不穩(wěn)定,給出一些錯誤的結(jié)果
大型地圖的拼接與回環(huán)檢測
室外SLAM的另一個特點是:室內(nèi)地圖通常有一個面積限制,例如大多家居面積都在200平方米以內(nèi);而室外地圖可能達到幾十萬平米,乘用車甚至可以建立城市公路級別的地圖。
智行者科技無人乘用車星驥系列
對于掃地機這些家用機器人,我們允許它自由地在室內(nèi)探索,因為室內(nèi)面積畢竟是有限的;而對于室外車輛,如果自由探索的話,很可能沿著一個方向出去就回不來了。這就要求室外高精地圖有一個事先的采集過程。
目前各家公司對高精地圖的采集方式并不一樣。乘用車通常需要駕駛員在采集區(qū)域內(nèi)行駛固定圈數(shù),然后把數(shù)據(jù)帶回數(shù)據(jù)中心進行解算。乘用車的數(shù)據(jù)量非常大,一般幾十GB至TB級別水平,其解算也需要大量計算資源。
而對于低速車,它們運動范圍受業(yè)務(wù)和電池限制,通常在幾十公里以內(nèi),適配時間在一兩天以內(nèi)。而對更大的區(qū)域,往往進行分塊、分區(qū)的建圖方式。
對于較大的地圖,通常使用分段采集、建圖、拼接的方式
低速車輛由于業(yè)務(wù)變更較快,對地圖的構(gòu)建時間和靈活性有一定的要求。例如,清掃車這一周可能在東區(qū)運行,下一周就可能在西區(qū)運行。或者,可能要求在以往的清掃區(qū)域基礎(chǔ)上添加一塊新的區(qū)域。這種需求一方面要求地圖能夠以更快的速度進行構(gòu)建,一方面也要求地圖能夠快速地進行拼接與合并。同時,由于場景的客觀通行限制,低速車輛有時候并不能“繞場景一整圈”,而必須一段一段地采集數(shù)據(jù)。
在這個數(shù)據(jù)中,我們先采集了橫向的道路,然后分別采集兩次縱向道路,最后進行合并
地圖合并算法可以自由設(shè)計。我們可以把兩個局部地圖視為固定不變的點云,然后使用簡單的ICP進行剛性拼接。如果局部地圖本身沒有畸變,這種做法的效果也挺不錯。但是,如果拼接地圖存在多個重疊區(qū)域,這種剛性拼接就可能導(dǎo)致“拼對了頭但拼錯了尾”的情況。所以,我們更傾向于借助類回環(huán)檢測與Pose Graph的方法,對兩條軌跡進行融合而非剛性拼接。
團隊溝通和其他問題
當(dāng)然,現(xiàn)實當(dāng)中還會存在算法之外的問題。畢竟大多數(shù)地方只有幾位算法工程師,而數(shù)據(jù)則來自全國各地成千上萬臺運營的小車。終端的運營人員也好,采集人員也好,大部分并不具備地圖定位的相關(guān)知識,往往不理解“怎樣才是科學(xué)的采圖軌跡”。這種溝通問題是我們?nèi)粘9ぷ髦幸姷降淖疃嗟膯栴}。
智行者科技無人物流配送車
由于場景的復(fù)雜性,建圖算法不可能保證100%的成功率。如果碰到一個全程缺少GPS的開闊、弱紋理、高動態(tài)場景,任何算法都無法完全保障。這聽著像是在抬杠,但是很遺憾的是,現(xiàn)實當(dāng)中某些大型車庫、大型車站內(nèi)部、高樓間商業(yè)街正屬于此類場景。這些場景中最容易出現(xiàn)的問題是由于GPS的缺失,地圖累計誤差過大,出現(xiàn)錯位或重影的情況。在這些情況中,我們就只能借助人工的方式來輔助建圖了。
在地圖出現(xiàn)明顯錯位情況下,我們利用可視化軟件,對融合軌跡進行人工干預(yù),修復(fù)累計誤差,使地圖回到正確的情況
小結(jié)
以上我們談?wù)摿艘徊糠值退僮詣玉{駛車輛在建圖中碰到的實際問題。對于建圖算法的開發(fā)人員來說,能夠足不出戶看到全國各地的地圖,也是一件令人欣慰的事情。相信很多人也會享受這一過程,參與到地圖構(gòu)建算法研發(fā)的過程中來吧。
雖然非結(jié)構(gòu)化道路激光SLAM中的挑戰(zhàn)很多,但是在發(fā)現(xiàn)問題中去享受解決問題的快感,是一件能讓人很爽的事情,我將永遠樂此不疲。
機器人招商 Disinfection Robot 機器人公司 機器人應(yīng)用 智能醫(yī)療 物聯(lián)網(wǎng) 機器人排名 機器人企業(yè) 機器人政策 教育機器人 迎賓機器人 機器人開發(fā) 獨角獸 消毒機器人品牌 消毒機器人 合理用藥 地圖 |