map_server地圖服務器


http://wiki.ros.org/map_server

概述

   map_server提供map_server ROS節點,它提供地圖數據作為一個ROS服務器。也提供map_saver命令行功能,能動態生成保存到文件中的地圖。

地圖格式

   包中通過工具操作的地圖是以成堆的文件存儲的。YAML文件描述地圖的元數據,並命名image文件。Image文件編碼占用數據。

Image 格式

Image 以對應單元的顏色描述世界中每個單元的占用狀態。白色單元格表示自由,黑色單元格表示占用,兩種顏色之間的單元表示未知。彩色和灰度圖像都采用,但是大部分地圖都是灰度圖像(盡管它們存儲的好像是以彩色的形式)YAML文件的閾值划分為3類;閾值是在map_server內部完成的。

比較閾值參數時,圖像單元占用概率的計算如下:occ = (255 - color_avg) / 255.0, color_avg是從所有通道平均出來的8位值結果,例如如果圖像時24位顏色,一個單元的顏色0x0a0a0a有一個0.96的概率,這是一個完全占用((255-(0*16+10))/255.0=0.96)。顏色0xeeeeee的概率是0.07((255-(14*16+14))/255.0=0.07),完全沒占用。

通過ROS消息通信時,占用表示為區間[0,100]的一個整數,0表示完全自由,100表示完全占用,特殊值-1表示完全未知。

圖像數據經由SDL_Image讀取;依靠SDL_Image提供的一個特殊平台,支持格式改變。一般來說,大部分流行的圖像格式都廣泛支持。一個需要注意的例外是PNGOS X上不支持。

YAML格式

YAML格式最好用一個簡單而完全的例子來解釋:

  1. image: testmap.png  
  2. resolution: 0.1  
  3. origin: [0.0, 0.0, 0.0]  
  4. occupied_thresh: 0.65  
  5. free_thresh: 0.196  
  6. negate: 0  

 

必填的字節

image:   到包含占用信息的image文件的路徑;可以是絕對路徑,也可以是到YAML文件的相對路徑。

resolution:地圖的分辨率,meters/pixel

origin: 地圖左下角單元(像素)2維位姿,(x,y,yaw)yaw逆時針旋轉(yaw=0表示沒有旋轉)。系統的很多部分現在忽略yaw

occupied_thresh:單元占用的概率大於這個閾值則認為完全占用。

free_thresh: 單元占用的概率小於這個閾值則認為完全自由。

negate: 不論白色/黑色,自由/占用,semantics(語義/符號)應該被反轉(閾值的解釋不受影響)。

命令行工具

Map_server

  Map_server是一個ROS節點,從磁盤讀取一個地圖,並通過ROS服務提供地圖。

Map_server的當前實現是轉換地圖圖像數據中的色彩值為三元占用值:free(0), occupied(100), unknown(-1)。這個工具的未來版本是使用0100之間的值來與占用的更精細層次交流。

Usage

  1. map_server <map.yaml>  

 

Example

  1. rosrun map_server map_server mymap.yaml     // 參數 mymap.yaml 可以改為這個.yaml文件的絕對路徑(如果找不到的話),然后需要在這個yaml文件的第一行修改.pgm文件的路徑。

注意,地圖數據可能通過任一個鎖存話題(意味着只發送給每個訂閱者一次)或者服務來檢索。服務最終可能會被淘汰。

發布話題

map_metadata (nav_msgs/MapMetaData)

     通過這個鎖存話題來接受地圖元數據(map metadata).

map (nav_msgs/OccupancyGrid)

    通過這個鎖存話題接收地圖。

服務

static_map (nav_msgs/GetMap)

由該服務獲取地圖。

參數

~frame_id (string, default: "map")

  設置在已發布地圖的頭(header)的坐標系。

Map_saver

Map_saver 保存地圖到磁盤,例如從SLAM mapping 服務中保存。

Usage

map_saver [-f mapname]

Map_saver獲取地圖數據,並把它寫到map.pgmmap.yaml。使用-f選項為輸出文件提供一個不同的base name(基礎名字)

Example

  1. rosrun map_server map_saver -f mymap  

訂閱話題

map (nav_msgs/OccupancyGrid) 

通過這個鎖存話題獲取地圖。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM