曹家寧 陸馨妍 熊依琪
摘要: 近年來,隨著高新科學技術的不斷發(fā)展,移動機器人的研究進展越來越迅速。其中移動機器人在未知環(huán)境下,實現(xiàn)同時定位與環(huán)境地圖構建(SLAM,Simultaneous Localization and Mapping)過程是機器人研究的重要領域。本文簡單介紹了ROS操作系統(tǒng)并研究了與 SLAM 問題相關的幾類系統(tǒng)模型及Gmapping_slam、Hector_slam和Google開源的Cartographer_slam等相對成熟的slam算法。并對上述的三種 SLAM 算法在實際應用中的性能進行分析。
關鍵詞:移動機器人;ROS;SLAM
中圖分類號:TP311 ? ? ? ?文獻標識碼:A
文章編號:1009-3044(2019)13-0199-02
引言
近些年,移動機器人的應用已滲透到各個行業(yè)中,如軍事偵察、醫(yī)學診療、物料搬運、社會服務、工業(yè)和農業(yè)生產等。正是由于如此廣泛的應用,決定了移動機器人的工作場景既復雜又具很多不能確定的因素。因此移動機器人的定位能力、環(huán)境感知能力等對其完成任務的成功率、自身定位的準確率和自身性能的完善起到了至關重要的作用。移動機器人是否可以利用自身隨帶的各種傳感器采集到的周圍環(huán)境信息來進行運動場景地圖的創(chuàng)建,以及通過預設的一些指令完成相關指令規(guī)劃的任務,在運行的過程中完成自主分析,自主決策,最終順利到達目的地 ,這一問題已經(jīng)成為研究學者們學習和鉆研的關鍵。
隨著GPS技術的廣泛應用,當移動機器人處于空曠、信號良好的室外環(huán)境時,上述問題可以利用高精度的GPS來解決。但在室內或一些復雜環(huán)境中,GPS的信號很不穩(wěn)定時,就需要使用其他技術來解決移動機器人定位及環(huán)境地圖創(chuàng)建問題。因此,研究學者們提出了SLAM。至今,SLAM已成為移動機器人研究領域的一項重要課題。
1 ROS系統(tǒng)
ROS(Robot Operating System,下文簡稱“ROS”)是一個適用于機器人的開源的元操作系統(tǒng)。它提供了操作系統(tǒng)應有的服務,包括硬件抽象,底層設備控制,常用函數(shù)的實現(xiàn),進程間消息傳遞,以及包管理。
1.1 ROS優(yōu)勢
1.1.1多語言支持及開源環(huán)境
ROS由于開發(fā)者使用的語言不同,因此ROS獨立了開發(fā)語言,支持C++、python等多種語言。除了ROS提供的功能包之外,ROS還匯合了全球開源社區(qū)開發(fā)者實現(xiàn)的大量功能包。這些開源功能包與ROS一起創(chuàng)建了強大的開源生態(tài)環(huán)境。
1.1.2 結構設計松耦合
程序運行時是由多個松耦合的進程組成,每個ROS進程稱之為節(jié)點(Node)。所有節(jié)點可以運行在一個處理器上,也可以通過ROS分布式特性運行在多個處理器上。在實際開發(fā)時,這種結構設計可以讓開發(fā)者根據(jù)作品所需功能方便靈活地添加功能模塊。
1.2 ROS缺陷
ROS的功能由各個節(jié)點組成,節(jié)點間通過消息機制通信,通訊環(huán)節(jié)消耗了很多計算資源。尤其是當所有節(jié)點運行在同一個處理器時,ROS仍然執(zhí)行相應的消息分發(fā),節(jié)點間的數(shù)據(jù)通信通過內存復制,使得系統(tǒng)必須選用高性能的處理器和存儲系統(tǒng)以彌補速度的不足。
2 SLAM相關模型
2.1常用傳感器模型
2.1.1 激光傳感器
激光傳感器通過激光來測量到被測物體的距離等參數(shù)。常用的測距方法是由激光器發(fā)出時間極短的脈沖激光發(fā)射到被測目標,回波返回,由光電探測器接收。根據(jù)主波信號和回波信號之間的時間間隔,就可以算出到待測目標的距離。
2.1.2 視覺傳感器
視覺傳感器探測范圍較廣、獲取信息較激光傳感器豐富,實際應用中常使用多個視覺傳感器或者與其他傳感器配合使用,通過科學合理的算法可以得到物體的點云、距離、色彩等諸多信息;還可通過SSD算法,根據(jù)一個鏡頭的運動圖像來計算本地與目標的相對位移。
2.2 柵格地圖
柵格圖像,即光柵圖像,是指在空間和亮度上都已經(jīng)離散化了的圖像。我們通過把一幅柵格圖像考慮為一個矩陣,矩陣中的任一元素的坐標對應于圖像中的一個點,而元素的值對應于該點的灰度級,矩陣中的元素叫作像素。
柵格地圖主要就是把地圖離散化為一個個的單元(cell),每個單元占據(jù) r*r 個像素,所以 r 的大小就代表了地圖的分辨率。當 cell 為 free 時,該 cell 的灰度值就設為 255,也就是白色,當 cell 為 occupied 時,該 cell 的灰度值就設為 0 ,也就是黑色。初始時我們不知道 cell 具體的狀態(tài),我們就將其設為 100 ,也就是灰色。接下來我們設 mi為第 i 個 cell 是否occupied 的隨機變量,那么 p(mi=1) 或 p(mi) 就表示第 i 個 cell 為 occupied 的概率,所以 p(mi)=1 就表示第 i 個 cell 為 occupied ,p(mi)=0 就表示第 i 個 cell 為 free 。
2.3 坐標位姿模型
與向量間的旋轉類似,我們同樣可以描述兩個坐標系之間的旋轉關系,再加上平移,統(tǒng)稱為坐標系之間的變換關系。在機器人的運動過程中,常見的做法是設定一個慣性坐標(或者叫世界坐標系),可以認為它是固定不動的,如圖中的[Xw,Yw,Zw]定義的坐標系。同時,傳感器或機器人是一個移動坐標系,例如[Xc,Yc,Zc]定義的坐標系。相機視野中某個向量P,它的坐標為[Pc],而從世界坐標系下看,它的坐標為[Pw]。這時,就需要先得到該點針對機器人坐標系坐標值,再根據(jù)機器人位姿轉換到世界坐標系中,這個轉換關系由一個矩陣T來描述。
3 ?2D SLAM 算法介紹與實現(xiàn)
算法的輸入一般是:機器人對周圍環(huán)境的觀測信息 z (激光雷達的掃描點、攝像頭的圖像等) 和 機器人的控制信息 u (運動過程中的前進轉向等信息,一般對其積分后用里程計 odometry 來表示);算法的輸出是:機器人的運動軌跡 x 和 周圍的地圖 m 。
而我們要做的就是在給定 z 和 u 的條件下估計出 x 和 m:
p(x,m|z,u)
我們用概率形式來表示在存在各種誤差的情況下,使用 z 和 u 來估計 x 和 m 的分布。并且在 2d SLAM 中, x 就是一個 [x,y,theta] 的三維隨機變量, 如果 m 是柵格地圖, m 就是一個 r*c 維的隨機變量,其中 r 是地圖的寬度, c 是地圖的長度,所以我們可以用一個條件概率來解決我們的問題。
3.1 Gmapping slam
Gmapping是基于濾波SLAM框架和RBpf粒子濾波算法的常用開源SLAM算法,將定位和建圖過程分離,先進行定位再進行建圖。如圖1。
優(yōu)點:Gmapping在構建室內小場景地圖時擁有計算量小、精度高的特點。里程計可以提供機器人的位姿先驗,算法有效利用里程計的信息,從而對激光雷達的頻率要求變低。
缺點:Gmapping犧牲空間復雜度保證時間復雜度,因此不適合構建大場景地圖。此算法沒有回環(huán)檢測,在回環(huán)閉合時可能會造成地圖錯位。
3.2 Hector slam
Hector_Slam利用現(xiàn)代激光雷達系統(tǒng)的高更新率,并以傳感器的掃描速率提供2D姿態(tài)估計。如圖2。
優(yōu)點:不依賴里程計信息,空中無人機及地面小車在不平坦區(qū)域建圖得以普及;利用高斯牛頓數(shù)學方法處理scan-matching匹配問題,獲得激光點集會映射到已建地圖的剛體變換。
缺點:激光雷達的更新率要求較高,所建環(huán)境噪聲較小。所以在建圖過程中,需要移動機器人控制在速度比較低的條件下,建圖效果才會比較理想;且在里程計數(shù)據(jù)比較精確的時候,無法有效利用里程計信息。
3.3 Cartographer slam
Cartographer_Slam基于激光雷達構建2D環(huán)境地圖,分辨率精確至5cm。激光雷達返回的數(shù)據(jù)scans會以最佳的位置插入到submap中,這個最佳的位置假設在一定的時間內可以認為是很準確的。其中scan matching必須是和它相對應的submap進行匹配,因此它只和最接近的scan點集有關。這個系統(tǒng)結合了局部最優(yōu)和全局最優(yōu)的方法,都對激光雷達觀測到的位置進行了優(yōu)化。優(yōu)化后的位置用[(ξx,ξy,ξθ)]表示,包括(x,y)坐標的轉化和角度的旋轉,實際上就是對scan點集的進一步優(yōu)化。
我們在學校實驗室中用木紙板搭建了一個簡單的地圖環(huán)境,采用Jetson TX2硬件開發(fā)平臺驅動激光雷達采集周圍環(huán)境信息,并利用ROS分布式在同一局域網(wǎng)下在PC端運行Cartographer算法構建地圖,通過上位機與下位機的stm32f103單片機進行串口通信控制小車底盤的移動,從而實現(xiàn)了小車環(huán)境的構建。如圖3。
4 結束語
大體上講,SLAM發(fā)展趨勢有兩大類:一方面是朝輕量級、小型化方向發(fā)展,讓SLAM能夠在小型移動終端上良好運行,然后考慮以它為底層功能的實際應用。在大部分場合中,我們的研發(fā)目標是實現(xiàn)機器人、AR/VR設備的功能,比如說導航、教學、娛樂,而SLAM是為上層開發(fā)應用提供機器人本身的位姿估計。在這些應用中,我們不希望SLAM占用太多的計算資源。另一方面則是利用高性能設備,實現(xiàn)精密場景理解等功能。我們的目的是準確地重建場景地圖,而對于計算資源和設備的便攜性沒有多大要求。因此可以利用GPU,在這個方向和深度學習結合亦是計算機視覺的發(fā)展方向。
參考文獻:
[1] 高博.視覺SLAM十四講[M].北京:電子工業(yè)出版社,2016.
[2] Google.Real-Time Loop Closure in 2D LIDAR SLAM .[R] ICRA ,2016
[3] 王富.未知環(huán)境中移動機器人定位與建圖技術的研究[D].黑龍江:哈爾濱工程大學,2013.
[4] 梁明杰,閔華清,羅榮華.基于圖優(yōu)化的同時定位與地圖創(chuàng)建綜述[J].機器人,2013(6).
[5] 顧其洋.基于ROS的家庭服務機器人SLAM的設計與實現(xiàn)[D].蘭州:西北師范大學,2016.
[6] 白佳奇.基于ROS的移動機器人改進視覺SLAM算法研究[D].天津:天津工業(yè)大學,2018.
【通聯(lián)編輯:唐一東】