本文來自Coursera(Robotics:Estimation and Learning)
主要講:機器人世界使用的幾種地圖
占據柵格地圖的表示方法與更新方法
利用激光傳感器數據構建占據柵格地圖
1、機器人地圖分類
尺度地圖:坐標、經度緯度等
拓撲地圖:用於路徑規划
語義地圖:用於人機交互
2、柵格地圖
機器人常用的一種地圖表示法。
機器人經常使用激光傳感器,但是並不能穩定的觀測一個點的距離,比如一個角度下,檢測到障礙物時4m,但是下一刻檢測的是4.1m,我們不能將兩個距離的位置double認為是障礙物,所以我們要采用柵格地圖。
對一般的地圖來講,地圖上某一個點要么有障礙物要么沒有,但是在柵格地圖中,對於一個點我們把他是空free的概率表示為p(s = 1),有障礙物表示為p(s = 0),兩者的概率和為1.
兩個值表達比較麻煩,因為稍后我們可能根據概率把這個點定位占據狀態或者空閑狀態,我們就用兩個概率的比值表示就可以。
,這就是表示空的概率比上占據概率,整個值越大,空概率越高。
對於一個點,現在,來了一個新的測量值,測量值也在這個點上有概率計算。
那么比值公式可以更新一下:
,在新的測量事件下,空的概率,占據的概率,比值大小。
根據貝葉斯公式,
代入比值公式:
通過取對數化簡一下:
(個人意見,其實取對數挺好的,之前比值范圍是0-無窮,兩比值相等的時候是1,現在取完對數后,值范圍是負無窮到正無窮,0為中間值)
上面那個含有測量值的項稱之為測量值模型,標記為lomeas,測量值的模型有兩種,占據和非占據,都為定值:
和
一句話就是位置S的狀態,之前的加上lomeas等候之后的S狀態。
在沒有任何測量下,一個點的初始狀態
Sinit=logOdd(s)=log(0.5/0.5)=0;
經過這樣一些數學處理后,一個點得狀態我們只需要做簡單的加減法就可以了。
每一次掃描激光后,每個格子的概率疊加,每個格子概率越大越是占據狀態,越小越是空余狀態。
3、利用激光傳感器構建占據柵格地圖
這段講利用激光傳感器構建柵格地圖的細節;
編寫函數:function maMap = occGridMapping(ranges,scanAngles, pose, param)
其中,scanAngles是一個N*1的數組,表示激光傳感器N個方向的夾角,ranges是K*N的數組,表示N個時間采樣點激光傳感器的讀數(距離障礙物距離);pose是3*N的數組,表示N個時間采樣點,機器人的位置和朝向信息;param是一些傳入參數,param.origin是機器人起點,param.lo_occ和param.lo_free分別表示占據值和空余值,而param.max與param.min 表示位置狀態閾值,超過了則為閾值便捷,param.resol表示地圖的分辨率,即實際地圖中一米所表示的格點數目,param.size表示地圖的大小。