map_server 加載地圖
<node pkg="map_server" name="map_server" type="map_server" args="$(arg map_file)"/>
Usage
map_server <map.yaml>
Example
rosrun map_server map_server mymap.yaml
Published Topics
map_metadata (nav_msgs/MapMetaData)
map (nav_msgs/OccupancyGrid)
Parameters
~frame_id (string, default: “map”)
該圖像描述了相應像素的顏色中的世界的每個單元的佔用狀態。標準配置中,白色像素是自由的,黑色像素被佔據,兩者之間的像素是未知的。接受彩色圖像,但顏色值平均爲灰度值。
YAML格式簡單完整的示例:
image: testmap.png
resolution: 0.1
origin: [0.0, 0.0, 0.0]
occupied_thresh: 0.65
free_thresh: 0.196
negate: 0
參數說明:
image:包含佔用數據的圖像文件的路徑; 可以是絕對的,或相對於YAML文件的位置
resolution:地圖的分辨率,米/像素
origin:地圖中左下像素的2-D姿態爲(x,y,yaw),偏航爲逆時針旋轉(yaw = 0表示無旋轉)。系統的許多部分目前忽略偏航。
occupancy_thresh:佔據概率大於該閾值的像素被認爲完全佔用。
free_thresh:佔有概率小於該閾值的像素被認爲是完全自由的。
negate:白/黑自由/佔用語義是否應該被反轉(閾值的解釋不受影響)
給定一個COLOR值x在[0,256]範圍內的像素,我們應該如何在放入ROS消息時解釋這個值?首先,我們將整數x轉換爲浮點數p,具體取決於yaml中negate標誌的解釋。
如果negate爲false,則p =(255 - x)/ 255.0。這意味着黑色(0)現在具有最高值(1.0)而白色(255)具有最低值(0.0)。
如果negate爲true,則p = x / 255.0。這是圖像的非標準解釋,這就是爲什麼它被稱爲否定,即使在數學層面上講x不是否定的。
1.3.1 三元解釋
標準解釋是三元解釋,即解釋所有值,使輸出最終成爲三個值之一。
如果 p > occupied_thresh,輸出值100表示單元格已被佔用。
如果 p < occupied_thresh,輸出值0表示單元格是空閒的。
否則,輸出-1。
1.3.2 範圍
這調整了上述解釋,以允許比三元組更多的輸出值。
如前所述,如果p> occupied_thresh,則輸出值100.如果p <free_thresh,則輸出值0。
否則,輸出99 *(p - free_thresh)/(occupied_thresh - free_thresh)
這將允許您輸出範圍爲[0,100]的完整漸變值。要輸出-1,只需使用png的alpha通道,其中任何透明度都將被解釋爲未知。
1.3.3 原始值
此模式將爲每個像素輸出x,因此輸出值爲[0,255]。
map_saver 保存地圖
Usage
rosrun map_server map_saver [–occ <threshold_occupied>] [–free <threshold_free>] [-f ]
Example
rosrun map_server map_saver -f mymap
地圖話題重映射相當於launch文件的remap重映射只是這是終端運行的方式。
rosrun map_server map_saver -f /home/q/ros_projects/vins_fusion_catkin_ws/src/rtabmap_ros/launch/rtabmap/rtabmap map:=/rtabmap/grid_map
Subscribed Topics
map (nav_msgs/OccupancyGrid)