map_server包提供了一个map_server ROS Node,  该node通过ROS Service方式提供地图数据。 该包还提供了map_saver命令行utility, 使用该工具可将动态创建的地图保存成文件。

1 Map format

使用该包中提供的工具可以操控的地图被存储在2个文件中。 一个是YAML格式的文件描述地图meta-data并命名image文件。另一个image文件用来编码occupancy-data。

1.1 Image format

image用不同的像素颜色描述世界中每个cell的占用状态。白色像素表示free,黑色像素表示occupied, 其它颜色像素表示unknown。 彩色图和灰度图都可以,但是多数是灰度图。在YAML文件中使用阈值来区分3种类别。

当image中像素与阈值参数比较时候,需要先按照公式occ = (255 - color_avg) / 255.0计算占用概率, 这里color_avg是用8位数表示的来自于所有通道的平均值。例如,如果image是24-bit颜色,拥有0x0a0a0a颜色的像素,其概率是0.96,这意味着几乎完全占用。如果像素颜色是0xeeeeee,则占用概率是0.07, 这意味着几乎没有被占用。

当使用ROS消息通信时候,这种占用被表示为范围[0,100]之内的一个整数, 0的意思是完全free, 100的意思是完全occupied, -1表示完全unknown。

Image data被 SDL_Image库读取, 依赖在特定平台上SDL_Image将提供什么东西,SDL_Image相应支持格式也会有差异。一般来讲,多数常用image格式都已经被支持了。一个必须要注意的例外是PNG格式在OS X平台上不能被支持。

1.2 YAML format

以下是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 : 指定包含occupancy data的image文件路径; 可以是绝对路径,也可以是相对于YAML文件的对象路径

  • resolution : 地图分辨率,单位是meters / pixel

  • origin : The 2-D pose of the lower-left pixel in the map, 表示为 (x, y, yaw), 这里yaw是逆时针旋转角度(yaw=0意味着没有旋转)。目前多数系统忽略yaw值。

  • occupied_thresh : 像素的占用概率比该阈值大被看做完全占用

  • free_thresh : 像素的占用概率比该阈值小被看做完全free

  • negate : Whether the white/black free/occupied semantics should be reversed (interpretation of thresholds is unaffected)

2 Command-line Tools

2.1 map_server(地图服务器)

map_server是一个ROS node,可以从磁盘读取地图并使用ROS service提供地图。 目前实现的map_server可将地图中的颜色值转化成三种占用值: free (0), occupied (100), and unknown (-1). 未来可用0~100之间的不同值指示占用度。

2.1.1 命令语法

map_server <map.yaml>

2.1.2 示例

rosrun map_server map_server mymap.yaml

注意:map data可以通过指定topic或者 service来提取。service的方式最后可能要被废弃。

2.1.3 发布的主题

map_metadata (nav_msgs/MapMetaData)

  • Receive the map metadata via this latched topic.

map (nav_msgs/OccupancyGrid)

  • Receive the map via this latched topic.

2.1.4 服务

static_map (nav_msgs/GetMap)

  • Retrieve the map via this service.

2.1.5 参数

~frame_id (string, default: "map")

The frame to set in the header of the published map.

2.2 map_saver(地图保存器)

map_saver可以把地图保存到磁盘。 例如:from a SLAM mapping service.

2.2.1 命令语法

rosrun map_server map_saver [-f mapname]

map_saver retrieves map data and writes it out to map.pgm and map.yaml. Use the -f option to provide a different base name for the output files.

2.2.2 命令示例

rosrun map_server map_saver -f mymap

2.2.3 订阅的主题

map (nav_msgs/OccupancyGrid) Map will be retrieved via this latched topic

map server 功能和作用相关推荐

  1. 地图服务器控件GIS Map Server v3.6发布,新增航空影像数据集功能

    GIS Map Server是一款地图服务器控件,它将动态地图功能添加到了GLG工具包中并能与工具包一起使用或独立使用.GLG地图服务器控件将动态地图功能添加到了GLG工具包中并能与工具包一起使用或独 ...

  2. 为Autodesk Infrastructure Map Server(AIMS) Mobile Viewer创建自定义控件

    AIMS 2012开始引入了面向移动设备的MobileViewer(或iViewer), AIMS2012中还是以技术预览版的方式提供,需要单独安装. 从AIMS2013开始,这个组件已经集成到Web ...

  3. Autodesk Infrastructure Map Server 2012(MapGuide 2012) 最新特性介绍

    近日Autodesk发布了面向基础设施的WebGIS平台产品-Autodesk Infrastructure Map Server(AIMS) 2012,也许你习惯于称它为MapGuide 2012, ...

  4. OSI第二层:数据链路层功能及作用

    OSI七层模型第二层:数据链路层,Data Link Layer 数据链路层工作在两台设备互联的这条链路之间,为每一段单独的链路解决数据传递的问题. 那么,一条链路上有什么呢? 首先搞清楚一个概念:不 ...

  5. Autodesk Infrastructure Map Server(AIMS)/MapGuide API 培训材料--第1章

    目录: Autodesk Infrastructure Map Server(AIMS)/MapGuide API 培训材料--第1章 Autodesk Infrastructure Map Serv ...

  6. Autodesk Infrastructure Map Server 2014的开发文档在哪里?

    Autodesk Infrastructure Map Server(AIMS) 2014已经发布,请看一下产品主页来了解产品的最新特性,然后下载个试用版亲自试一下吧.那么AIMS 2014的开发文档 ...

  7. 使用charles对vue项目进行map Local功能mock数据页面不正常显示

    最近发现使用chales的 map local功能,对vue页面进行数据mock的时候,页面不能正常显示 查看控制台发现报错如下: 原因: 由于前后端分离导致的跨域问题 解决方法: 使用charles ...

  8. JavaServlet的方法、主要功能、作用?面试必备!

    一. HttpServlet 类包含 init() . destroy() . service() 等方法.其中 init() 和 destroy() 方法是继承的. (1) init() 方法 在 ...

  9. 微信公众平台数据统计功能的作用是什么?

    2013年8月29日晚,微信产品团队通过服务号"微信公众平台"发布信息,宣布"微信公众平台增加数据统计功能"."数据统计功能'"菜单分为用户 ...

最新文章

  1. 给力!一行代码躺赚普通程序员10年薪资!
  2. (0084)iOS开发之测试iOS远程消息推送
  3. EventBus3.0 List事件遇到的坑
  4. opengl 日地月运动模型_MaskFusion: 多运动目标实时识别、跟踪和重建
  5. ibatis的isequal_isequal ibatis
  6. NOIP2013 D1T3 货车运输 倍增LCA OR 并查集按秩合并
  7. 【金融】【pytorch】使用深度学习预测期货收盘价涨跌——LSTM模型构建与训练
  8. javacore分析工具_线上死锁定位分析
  9. vue 中样式的绑定
  10. Linux查看文件以及文件夹个数
  11. 设计模式之--生成器模式与抽象工厂模式的比较
  12. chrome(谷歌浏览器)固定到任务栏,点击之后出现两个图标-原因及解决办法
  13. glusterfs创建分布式卷
  14. 用matlab如何拟合曲线,用MATLAB怎么实现曲线拟合?
  15. Lerna 多 package 源代码管理方案
  16. excel小数不同的取整数的方法
  17. 大佬都在用的六大设计方法,完全颠覆了我对设计的认知
  18. Web前端期末大作业---HTML+CSS+JS实现实现捉虫小游戏
  19. 基于python的Poisson-Gumbel 泊松耿贝尔复合极值分布实现
  20. 个人博客-1(登录功能模块实现)

热门文章

  1. 【Linux】linux中你不得不爱的命令集(上)
  2. 谷歌浏览器插件Automa_4.元素多选
  3. Java文件转换-txt转html
  4. 爱尚黑莓提供Android应用转制BlackBerry 10应用在线工具
  5. JAVA算法:回文字符串相关问题详解(回文字符串总结)
  6. 软件测试基础【一篇足矣】
  7. 数据库的三大范式详解
  8. 频繁默认网关不可用_win10系统默认网关不可用频繁掉线的具体方法
  9. 利用Navicat导入Excel数据到数据库
  10. 集合的 相关 基础知识