zoukankan      html  css  js  c++  java
  • 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) 

    通过这个锁存话题获取地图。

  • 相关阅读:
    js"发送验证码"倒计时效果!
    input:button按钮文字换行
    最新jQuery引用google地址外部文件(jquery 1.2.6至jquery1.7.2)
    overflow:hidden ie6,7失效
    ZeroClipboard支持IE,firefox,Chrome复制到剪贴板(转)
    js取url参数
    弹出层高度不限垂直居中 兼容ie ff chrome
    jQuery 2.0将不再支持IE 6/7/8
    CSS: IE中的BUG之marginbottom失效
    inputSuggest邮箱提示自动补全js插件
  • 原文地址:https://www.cnblogs.com/lvchaoshun/p/7635252.html
Copyright © 2011-2022 走看看