首頁 > ROS開發 > 探索無人車:SLAM自主建圖技術。
2020
10-09

探索無人車:SLAM自主建圖技術。

有一天,我會放開雙手,任由汽車帶著我遨游山河。

有一天,我會放松身心,透過車窗去看這美麗景色。

無人駕駛,隨著科技的不斷進步倍受關注,它不再是一個遙不可及的設想,也不再是只有在科幻片里才能看到的景象。它已經開始慢慢進入人們的生活。

image.png


我曾向你提及無人駕駛技術(馳騁在科技之海,無人駕駛也可一往無前。),我相信,你已經有了初步了解,但是,僅僅初步的了解遠遠無法滿足你對無人駕駛的求知欲。



所以,今天,我決定向你介紹無人駕駛的一些技術,以便你更好、更深入的了解無人駕駛。


我們要說的,是無人駕駛車涉及的技術之一——SLAM自主建圖技術

SLAM自主建圖 · 技術


(對道路路面信息、障礙物進行數據建模,生成高精度地圖。)



了解SLAM自主建圖技術的第一步,就要先明白,它能夠構建的地圖分為幾種類型

按地圖類型分類

1、柵格圖(grid maps):將地圖分為m*n的柵格,每個柵格內的數值代表是否被占用。

2、地標圖(landmark-based maps):基于地標建圖,已知某些標志物在地圖中的確定位置。


按建圖原理分類

1、占用圖(occupancy maps):對于每個柵格單元,代表是否被占用。

2、反射圖(reflection maps):對于每個單元,表示傳感器束反射的概率。



構建 · 地圖

在了解了SLAM自主建圖技術都可以構建哪些類型的地圖之后,我們就要開始研究它構建地圖方面的一些知識。



建圖原理
根據運動模型獲取機器人的移動路徑;根據傳感器模型獲取移動路徑上周邊環境的信息,兩者匹配起來得到完整地圖。


image.png


SLAM難點


由于機器人的移動路徑與周邊環境的信息都是未知的,且移動路徑的誤差隨著機器人的移動而不斷累積;當環境信息是之前已經檢測到并構建到地圖中時,將該信息作為地標來修正機器人的移動路徑信息,使機器人的移動路徑的誤差收斂。


算法流程(基于擴展卡爾曼濾波EKF)
①預測機器人狀態:基于運動模型,預測機器人當前位置狀態。
②預測測量量:基于①得到的預測位置,預測應該得到哪些測量量。
③測量:測量當前真實環境信息。
④數據融合:利用EKF將②、③中的信息融合。
⑤更新機器人狀態:根據④的結果,更新機器人位置狀態,收斂誤差。
⑥更新地圖:根據④、⑤,更新地圖數據。


算法介紹

建圖開始時,將機器人當前位置設為已知的起始點,此時建立一個3x1的向量Xk,一個3x3的矩陣Ck。Xk代表已知點,Ck代表已知點之間的關系。


image.png

隨著機器人的移動及環境信息的輸入,將更新的地標信息m1、m2、...添加到Xk、Ck中。

image.png


矩陣Ck中,對角線Cr、Cm1、Cm2、...Cmn代表不同的地標信息,其他元素代表對應行、列上地標信息的位置關系。比如Cm1m2代表Cm1地標與Cm2地標的位置關系。


閉環檢測:當機器人又回到已經識別的區域時,通過重新審視已經映射的區域,可以減少機器人和地標估計的不確定性。

其中一種方法是,當環境信息真實測量值與原有測量值的差小于某一設定閾值,認為這兩點是重合的,并據此重新更新機器人當前位置;當該差值大于設定閾值,認為是新的地圖信息并添加到地圖中。

在上述Ck矩陣中,當機器人再次檢測到Cm2地標,則會根據新的測量值修正Ck矩陣的中Cm2所在的行、列元素的值,代表Cm2與其他所有地標的相對位置關系發生了變化。

建圖 · 算法

接下來要給大家介紹的,是幾種SLAM自主建圖的建圖算法。


1. hector-slam
要求: 高更新頻率、小測量噪聲的激光掃描儀,不需要里程計,可手持建圖。

image.png

2. gmapping-slam: tutorial

目前激光2Dslam用得最廣的方法,gmapping采用的是RBPF的方法,優點是定位準確,但需要完整的硬件平臺。

image.png

3. karto_slam

karto_slam是基于圖優化的方法,用高度優化和非迭代cholesky矩陣進行稀疏系統解耦作為解。圖優化方法利用圖的均值表示地圖,每個節點表示機器人軌跡的一個位置點和傳感器測量數據集,箭頭的指向的連接表示連續機器人位置點的運動,每個新節點加入,地圖就會依據空間中的節點箭頭的約束進行計算更新。


karto_slam的ROS版本,其中采用的稀疏點調整(the Spare Pose Adjustment(SPA))與掃描匹配和閉環檢測相關。landmark越多,內存需求越大,然而圖優化方式相比其他方法在大環境下制圖優勢更大.在某些情況下karto_slam更有效,因為他僅包含點的圖(robot pose),求得位置后再求map。


4. core_slam

core_slam是為了更加簡單容易地理解性能損失最小化的一種slam算法。將算法簡化為距離計算與地圖更新的兩個過程, 第一步,每次掃描輸入,用基于簡單的粒子濾波算法來計算距離,粒子濾波的匹配器用于激光與地圖的匹配,每個濾波器粒子代表機器人可能的位置和相應的概率權重,這些都依賴之前的迭代計算。選擇好最好的假設分布,即低權重粒子消失,新粒子生成。在更新步驟,掃描得到的線加入地圖中,當障礙出現時,圍繞障礙點繪制調整點集,而非僅一個孤立點。


看完上述關于SLAM自主建圖技術的講解,有沒有感覺對無人駕駛汽車的了解更進一步呢?


雖然無人駕駛還沒有完全普及到我們的生活當中,但是,目前無人駕駛的發展速度可謂是突飛猛進,相信在未來的某一天,無人駕駛將會普及到生活中,給人們帶來更大的便利。

想要獲取更多人工智能方面的知識,請關注我們。

智能佳媒體平臺.jpg


本文》有 0 條評論

留下一個回復