簡介
特徵地圖用有關的幾何特徵(如點、直線、面)表示環境。常見於vSLAM(視覺SLAM)技術中。它一般通過如GPS、UWB以及攝像頭配合稀疏方式的vSLAM算法產生,優點是相對數據存儲量和運算量比較小,多見於最早的SLAM算法中。
拓撲地圖把室內環境表示為帶結點和相關連線線的拓撲結構圖,其中結點表示環境中的重要位置點(拐角、門、電梯、樓梯等),邊表示結點間的連線關係,如走廊等。
柵格地圖則是把環境劃分成一系列柵格,其中每一柵格給定一個可能值,表示該柵格被占據的機率。
直接表征法省去了特徵或柵格表示這一中間環節,直接用感測器讀取的數據來構造機器人的位姿空間。每種方法各有自己的特點和適用範圍,其中特徵地圖和柵格地圖套用最普遍。
SLAM算法
SLAM是同步定位與地圖構建(SimultaneousLocalization And Mapping)的縮寫,最早由Hugh Durrant-Whyte 和 John J.Leonard提出。
同步定位與地圖構建(SLAM或Simultaneous localization and mapping)是一種概念:希望機器人從未知環境的未知地點出發,在運動過程中通過重複觀測到的地圖特徵(比如,牆角,柱子等)定位自身位置和姿態,再根據自身位置增量式的構建地圖,從而達到同時定位和地圖構建的目的。
這裡說的地圖,是用來在環境中定位,以及描述當前環境以便於規劃航線的一個概念;它通過記錄以某種形式的感知獲取的信息,用以和當前的感知結果相比較,以支撐對現實定位的評估。在定位評估方面,地圖提供的幫助程度,與感知的精度和質量成反相關。地圖通常反映了它被描繪出來的時刻的環境狀態,所以它並不一定反映它被使用的時刻的環境狀態。
在誤差和噪音條件下,定位和地圖構建技術上的複雜度不支持兩者同時獲得連續的解。即時定位與地圖構建(SLAM)是這樣一個概念:把兩方面的進程都捆綁在一個循環之中,以此支持雙方在各自進程中都求得連續解;不同進程中相互疊代的反饋對雙方的連續解有改進作用。
地圖構建,是研究如何把從一系列感測器收集到的信息,集成到一個一致性的模型上的問題。它可以被描述為第一核心問題:這個世界長什麼樣?地圖構建的核心部分是環境的表達方式以及感測器數據的解釋。
與之相比,定位,是在地圖上估測機器人的坐標和姿勢形態的問題;換而言之,機器人需要回答這裡的第二核心問題,我在哪?典型的解包含以下兩個方面:追蹤——通常機器人的初始位置已知;全局定位——通常只給出很少,甚至不給出有關於起始位置環境特徵的先驗信息。
所以,同步定位與地圖構建(SLAM)被定義為以下問題:在建立新地圖模型或者改進已知地圖的同時,在該地圖模型上定位機器人。實際上,這兩個核心問題如果分開解決,將毫無意義;必須同時求解。
在機器人能夠根據一系列觀測值回答“這個世界長什麼樣”之前,它需要知道的額外信息很多,比如以下:
它自身的運動學特徵,
信息的自動獲得需要什麼樣的品質,
附加的支持觀測值能從哪些源得到。在沒有地圖或者方向參考的前提下,對機器人的當前位置估測是一個複雜的任務。 這裡的"位置"可以簡單指代機器人的所處方位,也可以包括它的姿勢形態。
線段特徵地圖的創建
超音波感測器測距模型
本文採用的是旅行者號移動機器人平台,此機器人配備了個超音波感測器,每兩個超音波感測器之間的夾角為度,如圖所示,超音波感測器測距的原理是超音波感測器向空氣中發出一束超音波,超音波在空氣中傳播的過程中遇到障礙物就會反射回來,通過超音波在空氣中傳播的時間和超音波在空氣中的傳播速度就能準確度的計算出超音波傳播的距離。旅行者號移動機器人攜帶的感測器的測距範圍為。距離數據連續的從24感器中獲取並存取在一個緩衝區中。這些原始的距離數據被用作水平反射障礙檢測和避障,它可以在機器人周圍構造一個可見區間描述被稱作為“聲納視界”。
聲納視界是由在外部笛卡爾坐標系中的24置數組構成的,在這個數組中的點都是機器人周圍可見空間這個多邊形的頂點,隨著聲納視界中的每個點被存取有一種不確定性也被存取。這些點和他們的不確定性依據聲納測距模型通過投射距離測量從他們的觀測點獲取。感測器相對於機器人原點的位置和方向定義在感測器配置表中。對於每個超音波感測器的配置表如下所示:
r表示機器人原點到感測器的距離。
γ表示機器人軸相對於機器人原點到感測器這個線段的角度。
β表示機器人軸相對於感測器方向的角度。
基於線段特徵編碼的地圖創建
當機器人探測完一些環境區域後,線段特徵數據存取在記憶體中的順序是混亂的。機
器人如何快速的將記憶體中的數據還原成一幅準確的地圖是問題的一個難點。
針對上述問題,我們採用線段特徵編碼的方法解決。在這一節中,我們將詳細的介紹線
段特徵編碼的方法。線段特徵編碼法標記的對象是線段,先根據線段的連通關係判斷哪
些線段屬於同一障礙物,進而根據線段的鄰近關係對各線段表中的線段進行標記和排
序。
線段編碼法可分為線段表掃描,線段是否為在一障礙物關係判斷,統一標記,標記
排序和地圖創建個步聚,它的實現步聚如下:
逐行掃描記憶體中的初始線段表,即獲取線段的線段特徵信息。
根據線段的連通關係判斷線段表中哪些線段屬於同一障礙物,並做相應處理:
如果第條線段和第條線段相連通且第條線段還未做標記,則將第條線
段的標記賦給第條線段為線段表中線段的總數。
若第條線段和第條線段相連通且第條線段已做標記,則記下這兩條線段標記間的等價關係。
若第條線段和第條線段不相連通,則賦予第條線段新的標記,並繼續檢測新的線段。
統一具有等價標記的同一障礙物邊緣線段的標記,使得相同障礙物的邊緣線段採用相同的標記。
根據線段的鄰近關係和鄰近度對線段進行標記和排序,方法同上。
編碼完成後機器人根據記憶體中存取的線段表在直角坐標系中依次畫出所有線段完成地圖的創建。