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)

发布了425 篇原创文章 · 获赞 59 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/qq_21950671/article/details/104138976
今日推荐