服務機器人想要自由行走,實現自主定位導航是關鍵,自主定位導航包括定位、建圖與路徑規劃。SLAM作為機器人定位導航的核心技術,正不斷獲得行業內的重視,但SLAM只是完成定位與地圖創建這兩件事,它并不完全等同于自主定位導航。那么,在實際應用時,SLAM究竟是如何實現的?在實現過程中又有哪些難點?下面將為大家一一解答。 當我們身處異常,導航軟件和戶外地圖成為我們找路最有利的工具,服務機器人和人類一樣也需要依靠地圖來感知外部的環境,通過算法與傳感器差異的不同機器人會采取不同的地圖描述形式。而柵格地圖是目前機器人使用最廣泛的地圖存儲方式。
1232084660d54b14854941eac9960b9c_th.jpg (30.01 KB, 下載次數: 57)
下載附件
2018-10-10 17:11 上傳
柵格地圖就是把環境劃分成一系列柵格,其中每一柵格給定一個可能值,表示該柵格被占據的概率。這種地圖看起來和人們所認知的地圖沒什么區別,它最早由NASA的Alberto Elfes在1989年提出,在火星探測車上就用到過,其本質是一張位圖圖片,但其中每個“像素”則表示了實際環境中存在障礙物的概率分布。一般來說,采用激光雷達、深度攝像頭、超聲波傳感器等可以直接測量距離數據的傳感器進行SLAM時,可以使用該地圖。這種地圖也可以通過距離測量傳感器、超聲波(早期)、激光雷達(現在)繪制出來。
SLAM在實際應用時究竟是如何實現的? 這是一個完整的SLAM和導航系統的主要架構圖:
37325204c96d4bffa6a1a0e70de81b61_th.jpg (37.55 KB, 下載次數: 80)
下載附件
2018-10-10 17:11 上傳
其中,SLAM核心過程包括3個步驟,第一步稱為預處理。我們知道,激光雷達和其他雷達設備一樣,某一個時刻只能獲取它所在位置的環境信息。 ?
56bce43cbe6f48e89668d2e8304e05c3_th.jpg (24.63 KB, 下載次數: 59)
下載附件
2018-10-10 17:11 上傳
這就是我們所說的點云,它只能反映機器人所在環境中的一個部分。第一步預處理就是對激光雷達原始數據進行優化,剔除一些有問題的數據,或者進行濾波。 第二步是匹配,也就是說把當前這一個局部環境的點云數據在已經建立地圖上尋找到對應的位置,這個步驟非常關鍵。 ?
2c3381d0755046dfadcc316db7c7a33d_th.jpg (33.77 KB, 下載次數: 66)
下載附件
2018-10-10 17:11 上傳
這個是ICP的點云匹配算法,用于實現匹配。說這個過程關鍵,就是因為它的好壞,直接影響了SLAM構建地圖的精度。這個過程和我們玩拼圖游戲有點類似,就是在已經拼好的畫面中找到相似之處,確定新的一個拼圖該放在哪里。 在SLAM過程中,需要將激光雷達當前采集的點云(紅色部分)匹配拼接到原有地圖中。 ?
0cfe07f5676143d68d00bb5d39d9be7b_th.jpg (21.14 KB, 下載次數: 66)
下載附件
2018-10-10 17:11 上傳
如果不進行匹配過程,所構建的地圖可能就亂成一團,變成這樣。 ?
bc567cb276884ca8bae3d3ea6a87ea5b_th.jpg (56.76 KB, 下載次數: 71)
下載附件
2018-10-10 17:11 上傳
在這個部分完畢以后,就進行第三步,地圖融合,也就是將這一輪來自激光雷達的新數據拼接到原始地圖當中,最終完成地圖的更新。 就像這個圖一樣,這個過程是永遠伴隨SLAM過程的。 ?
f4e73fe174204764b079b3ac77e42816_th.jpg (12.77 KB, 下載次數: 74)
下載附件
2018-10-10 17:11 上傳
數據融合和簡單的貼圖是有很大的差異的。因為實際上傳感器描繪的世界存在一定的誤差,或者正巧在這個時間環境有了變化,例如機器人旁邊闖入了一只小貓。 因此,實際要進行的過程會更加復雜,需要用很多概率算法,并采用濾波的方式進行融合。將上述這個過程逐次執行,就最終產生了我們看到的柵格地圖。 這個過程聽起來其實并不復雜,但是要處理好有很大難度。 這里舉幾個例子,比如叫做loop closure(回環)的問題。如果匹配算法不足夠優秀,或者環境中存在很不巧的干擾,當機器人繞著環境一圈后,就會發現原本是應該閉合的一個環形走廊斷開了。 比如正常地圖應該這樣: ?
33f1b352b39d469d86e9ca2c9692e10f_th.jpg (11.7 KB, 下載次數: 68)
下載附件
2018-10-10 17:11 上傳
如果處理不好,實際地圖就成這樣: ?
f7b14a7a14d34c299cd0b309da9b6a00.jpg (20.14 KB, 下載次數: 65)
下載附件
2018-10-10 17:11 上傳
對于環境比較大的場景,回環問題是不得不面對的,但現實總是不完美的,即使是激光雷達這種高精度傳感器,也難免存在誤差。而回環問題的難點恰恰在于在一開始出現少許誤差的時候,并不會被發覺,直到機器人繞著環路一圈,隨著誤差的累加,發現環路已經無法閉合時,此時已經釀成大錯,一般很難回天。 當然這個問題并不是無解,一個好的商用化SLAM系統,回環問題是否能很好的解決,就成為評判這個系統實力的指標了。 這是前兩天在我們辦公室進行的測試,當機器人已經繞場一周后,ROS構建的地圖出現了中斷,而Slamware模塊構建的地圖是一個完美的閉環,它與我們辦公室的設計圖完美重合。
8ff0b7815e684857908ef1283bb07745_th.jpg (299.52 KB, 下載次數: 66)
下載附件
2018-10-10 17:11 上傳
? 除了算法層面的回環問題,SLAM實際應用中還會碰到其他坑,比如走廊問題與外界干擾問題。以外界干擾問題來說,通常,激光雷達作為機器人的眼睛,一般是安裝在底盤上的,它能看到的視野很有限。當受到外界干擾(人類或者寵物等等)后,機器人很容易丟失定位精度,無法正常完成后續的建圖工作。 當機器人安裝SLAMWARE后,機器人受到干擾,可以完全不受影響,照樣能夠正常工作。目前,SLAM的開源實現代表多為學術界,實際應用有很多corner case要處理,需要傳感器、系統參數、其他輔助設備的聯合調優。 一般來說,上述的SLAM過程對于運算消耗是巨大的,雖然并沒有達到像訓練神經網絡動用服務器集群那種地步,但傳統上需要PC級別的處理器。 除配備激光雷達外,還需要機器人具有IMU(慣性測量單元)、里程計來為激光雷達提供輔助數據,否則SLAM系統也難以得到運行。總的來說,SLAM算法本身是一個對于外部系統有著多種依賴的算法,這是一個切實的工程問題。我們知道很多機器人,比如掃地機是不可能裝一個PC進去的。為了讓SLAM能在這類設備里運行,除了解決激光雷達成本外,還要對SLAM算法做出很好的優化。 這也是我們思嵐科技SLAMTEC主要的努力方向,一方面在SLAM算法上我們這7年多很好的解決了各類實際算法難點,另一方面,我們把SLAM這個復雜的系統做了很大的優化,可以放到一個硬幣那么大的模塊內部,降低尺寸功耗。此外,還集成了IMU等配套傳感器,力求做到對于SLAM的使用的便捷性。
如何利用SLAM技術實現路徑規劃的?SLAM和路徑規劃之間關系是怎樣的? 前面我們已經提到SLAM算法我們前面已經提到過,它只是是完成了機器人的定位和地圖構建兩件事情,與我們說的導航定位并不是完全等價的。這里的導航,其實是SLAM算法做不了的。它在業內叫做運動規劃(Motion Planning)。 ?
ae68c543b8004dbabea6f12059eeafbd_th.png (105.21 KB, 下載次數: 84)
下載附件
2018-10-10 17:11 上傳
運動規劃是一個很大的概念,從機械臂的運動、到飛行器的飛行,再到這里我們說的掃地機的清掃路徑規劃,都是運動規劃的范疇。 我們先談談針對掃地機這類輪式機器人的運動規劃。這里所需的基礎能力就是路徑規劃,也就是一般在完成SLAM后,要進行一個叫做目標點導航的能力。通俗的說,就是規劃一條從A點到B點的路徑出來,然后讓機器人移動過去。 ?
12ed08af07284368bfe3222f32310378_th.jpg (39.28 KB, 下載次數: 69)
下載附件
2018-10-10 17:11 上傳
要實現這個過程,運動規劃要實現至少兩個層次的模塊,一個叫做全局規劃,這個和我們車載導航儀有一點像,它需要在地圖上預先規劃一條線路,也要有當前機器人的位置。這是由我們的SLAM系統提供出來的。行業內一般會用叫做A*的算法來實現這個過程,它是一種啟發式的搜索算法,非常優秀。它最多的應用,是在游戲中,比如像星際爭霸、魔獸爭霸之類的即時戰略游戲,都是使用這個算法來計算單位的運動軌跡的。 當然,僅僅規劃了路徑還是不夠的,現實中會有很多突發情況,比如正巧有個小孩子擋道了,就需要調整原先的路徑。當然,有時候這種調整并不需要重新計算一遍全局路徑,機器人可能稍微繞一個彎就可以。此時,我們就需要另一個層次的規劃模塊,叫做局部規劃。它可能并不知道機器人最終要去哪,但是對于機器人怎么繞開眼前的障礙物特別在行。 這兩個層次的規劃模塊協同工作,機器人就可以很好的實現從A點到B點的行動了,不過實際工作環境下,上述配置還不夠。比如A*算法規劃的路徑是根據已知地圖,預先規劃好的,一旦機器人前往目的地的過程中遇到了新的障礙物,就只好完全停下來,等待障礙物離開或者重新規劃路徑了。如果掃地機器人買回家,必須先把屋子都走一遍以后才肯掃地,那用戶體驗就會很差。 為此,也會有針對這類算法的改進,比如SLAMWARE內我們采用改良的D*算法進行路徑規劃,這也是美國火星探測器采用的核心尋路算法。這是一種動態啟發式路徑搜索算法,它讓機器人在陌生環境中行動自如,在瞬息萬變的環境中游刃有余。 D*算法的最大優點是不需要預先探明地圖,機器人可以和人一樣,即使在未知環境中,也可以展開行動,隨著機器人不斷探索,路徑也會時刻調整。 以上是目前大部分移動機器人都需要的路徑規劃算法,而掃地機器人作為最早出現在消費市場的服務機器人之一,它需要的路徑規劃算法更為復雜。 一般來說,掃地機需要這么幾個規劃能力:貼邊打掃、折返的工字形清掃以及沒電時候自主充電。單單依靠前面介紹的D*這類算法,無法滿足這些基礎需要。 掃地機器人還需要有額外的規劃算法,比如針對折返的工字形清掃,有很多問題要處理。掃地機如何最有效進行清掃而不重復清掃?如何讓掃地機和人一樣,理解房間、門、走廊這種概念? 針對這些問題,學術界長久以來有一個專門的研究課題,叫做空間覆蓋(space coverage),同時也提出了非常多的算法和理論。其中,比較有名的是Morse Decompositions,掃地機通過它實現對空間進行劃分,隨后進行清掃。
29795842553946308f37169e67d08530_th.jpg (38.44 KB, 下載次數: 62)
下載附件
2018-10-10 17:11 上傳
?
20世紀70年代,卡內基梅隴大學(CMU)完全依靠超聲波做到了現在我們掃地機的行為,當然造價也十分昂貴。 前面介紹的從A點到B點移動路徑規劃也是實現這類更高級路徑規劃的基礎。實際上,要從SLAM實現到掃地機器人所需要的這些功能,還是有非常多的工作要做的。 針對掃地機器人,SLAMTEC將其特有的路徑規劃功能預先內置在SLAMWARE中,方便廠家進行整合,不需要進行二次開發。 |