map_server

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)

發佈了420 篇原創文章 · 獲贊 55 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章