機器人學 —— 機器人感知(Mapping)

  對於移動機器人來講,最吸引人的莫過於SLAM,堪稱Moving Robot 皇冠上的明珠。Perception 服務於 SLAM,Motion Plan基於SLAM。SLAM在移動機器人整個問題框架中,起着最爲核心的做用。爲了專一於Mapping,此章咱們假設 Location 是已知的。算法

一、Metric Map

  軌跡規劃任務是再Metric Map的基礎上完成的。固然,層次最高的是語意圖,語意圖是將來研究的熱點方向。獲取Metric Map 的難度最大之處在於:一、傳感器噪聲(May be solved by PGM; 二、機器人在移動(Location 問題);數據結構

  常見的MAP是基於UGV而言的, 使用的地圖是Occupancy Map,與以前在軌跡規劃欄目中的圖同樣,以 0 表示沒法到達的區域,以 1 表示能夠達到的區域。app

  

 

二、傳感器噪聲問題的Naive Solution

  解決傳感器噪聲問題的方法是對傳感器進行建模,其模型爲機率模型:框架

  

  對於給定的觀測,其factor 如上,當連續N次觀測到同一個xy的值時,利用 factor product,便可得到n次觀測的Joint CPD ,在Joint CPD 上運行MAP算法,便可得到最終的地圖了。在通解的基礎上,確實是這樣設計算法的,可是咱們目前面對的Mapping 問題還太Naive,不須要如此複雜的手段。設計

  

  此處定義了一個odd,表示發生與否可能性的比值。換言之,就是傳感器出錯的機率比,這是一個能夠估計的量。好比傳感器測出有物體的odd是2,沒物體的odd是3.blog

  依據Beyes 公式把Odd展開:博客

  

  其中,p(m = 1|z)/p(m = 0/z) 表示的是測量完成後 odd 的值,它等於  這次測量值 + 以前的odd。it

  換言之,咱們只要定義好先驗圖與log-odd-meas,就能夠了。io

三、Mapping Algorithm

  全部的東西老是提及來容易作起來難。即便是如此Naive的Map,真正Coding仍是很難的。尤爲是如何高效的實現Map的更新,此外,機器人每次發出的激光線達上千條,每一個位姿都要更新上前個點。對此問題,我設計了並行算法,即便在並行的條件下,生成一次Map也要近20s.基礎

  算法流程以下:

  一、將激光擊中的點變換到全局座標系下

  二、利用Breshenman 算法,獲取激光經過的路徑

  三、獲取Occupied Map 與 Free Map

  四、更新Map.

  左圖是單次測量的圖,也就是機器人一個位姿的測量結果。顯然,在靠近機器人的地方,噪聲嚴重。右圖是機器人在空間中移動後最終的Map。

四、3D Mapping

  對於2維地圖,咱們採用 free+occupy 的形式儲存空間中的障礙物。然而有障礙物的地方畢竟仍是少數,或者說,地圖是稀疏的。

  對於3維數據而言,咱們用3維的空間來描述顯然不划算,由其是當空間巨大時。此時咱們選擇的地圖,或者說是數據結構是kd-tree 與 OcTree. 此部份內容在點雲相關博客中有過介紹,不贅述。

  

相關文章
相關標籤/搜索