(ros/navigation/slam_gmapping) map_server地图服务器

2023-11-01


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格式最好用一个简单而完全的例子来解释:

image: testmap.png
resolution: 0.1
origin: [0.0, 0.0, 0.0]
occupied_thresh: 0.65
free_thresh: 0.196
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

map_server <map.yaml>

Example

rosrun map_server map_server mymap.yaml

注意,地图数据可能通过任一个锁存话题 ( 意味着只发送给每个订阅者一次 ) 或者服务来检索。服务最终可能会被淘汰。

发布话题

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

rosrun map_server map_saver -f mymap

订阅话题

map (nav_msgs/OccupancyGrid) 

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




Author: wsh 
Email: tongzhuodenilove@163.com


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(ros/navigation/slam_gmapping) map_server地图服务器 的相关文章

随机推荐

  • 在线一键JS混淆还原

    当今 随着互联网的发展 越来越多的网站开始使用JavaScript来实现动态交互和用户体验 但是 由于JavaScript代码的开放性和易于复制 网站管理员需要采取一些措施来保护他们的代码 这就是JavaScript混淆工具产生的原因 js
  • 【经验-强制HTTPS-web】在服务器301强制HTTPS跳转,套上腾讯云CDN后,第一次访问发生不强制跳转HTTPS的问题解决方法

    我的个人站网址 https mdzz pro 今天偶然在编程群里展示了下个人站 没想到大佬居然说我的网站没有开Https 我当场懵逼了 不可能啊 面板上我开了强制Https啊 于是我自己用edge访问了一下 结果发现真是这样 第一次 第二次
  • vim常用设置---(.vimrc详细配置)

    vimrc配置文件内容如下 一般设定 设定默认解码 set fenc utf 8 set fencs utf 8 usc bom euc jp gb18030 gbk gb2312 cp936 不要使用vi的键盘模式 而是vim自己的 se
  • 设计模式--外观模式

    外观模式 属于结构型模式 基本原理 隐藏系统复杂性 为系统开放一个便于使用的接口 主要流程 1 创建系统和子系统 2 创建一个外观类 统一管理子系统的功能 并对外提供接口 注意 外观类是管理子系统和对外提供接口 include
  • 数据库DDL,DML

    数据库DDL DML 一 DDL操作数据库 查询数据库 SHOW DATABASE 创建数据库 创建 CREATE DATABASE 数据库名称 创建 判断 如果不存在则创建 CREATE DATABASE IF NOT EXISTS 数据
  • Cesium加载矢量数据探索——从geojson到矢量切片

    矢量数据由于包含确定的坐标信息 通常用于表达准确的空间位置实体 在cesium中 不支持对shp进行加载 而是需要对shp数据进行转换 一般cesium支持的shp格式如下 geojson topojson kml czml 通常来说 对于
  • 什么是线程?以及线程的总结。(十小点1700字)

    1 什么是程序 进程和线程 2 创建线程的三种方式 3 继承Thread类来创建线程和实现Runable接口创建线程的区别 4 线程的方法 线程的优先级别 编辑 5 线程的状态以及图解 6 多线程的概念 优点 缺点 7 线程同步的概念 编辑
  • shell脚本中的if语句与case语句

    一 if语句 if语句从上至下按照顺序依次判定执行 格式如下 if 判定条件 如果 then 那么 elif 重新的一次判定 又如果 then 那么 else 否则 可以添加也可以不加 fi 结尾 倒写 注意 其中的elif不限个数 可以多
  • new与默认构造函数

    class A public A int i int 0 private int a b class B public 无需构造函数 因为数据成员的全部为public int a b c int main A a 3 B b 1 2 3 A
  • Python之selenium,使用webdriver模拟登录网站(含验证码)

    文章目录 一 前言 二 准备工作 三 模拟登陆网站 1 加载驱动和配置 2 打开网站 3 寻找元素并填入账号密码 4 填写验证码 四 遇到的一些坑 五 后记 一 前言 这段时间做了一个小项目 其中有一段需要自动获取网站后台的数据 但是这个网
  • 如何扩展mvc的消息转换器?

    问题 在服务端向客户端传输id时 由于是采用雪花算法 id长度足有19位之多 于是js接收时就产生了精度丢失问题 那么我们就需要扩展mvc的消息转换器来使后台传向前台的数据格式化为我们想要的格式 自定义消息转换器 public class
  • LaTex创建四级目录

    默认情况下 目录的深度是3级 也就是说 对于 ctexart article 文类 只对 section subsection subsubsection 编目 如果你的文档结构用到了 paragraph 一级 那么它将不会被编入目录中 但
  • Qt5类之QLine and QLineF

    QLine include
  • 成功解决 /bin/sh: 1: source: not found

    执行下列语句报错 解决办法 在命令行输入 exec bash 或直接输入bash 如下图 便可成功使用source命令
  • C++ 开发 Web 服务框架 - HTTP Web 框架的设计与实现(二)

    C 开发 Web 服务框架 HTTP Web 框架的设计与实现 一 概述 项目介绍 服务器开发中 Web 服务是一个基本的代码单元 将服务端的请求和响应部分的逻辑抽象出来形成框架 能够做到最高级别的框架级代码复用 本次项目将综合使用 C 1
  • 【unity】角色动画的 Has Exit Time是什么?什么时候需要打钩?

    场景 在动画的状态机Animator中的Transitions中总能看到Has Exit Time这个选项 到底是否勾选 探究 Has Exit Time 我的理解翻译过来是 是否有一个结束的时间 如果不勾选的话 就是没有结束的反应时间 那
  • 什么是IOC(控制反转),IOC的原理

    什么是控制反转 控制反转也可以理解为创建对象权利的交接 我们在获取对象时 都是采用 new 的方式 是主动的 现在 我们获取对象时 同时跟工厂要 由工厂为我们查找或者创建对象 是被动的 IOC的原理 IOC是通过反射 工厂 容器来完成了对象
  • Win11安装wsl2及深度学习环境配置(Win10应该类似)

    一 wsl2 Ubuntu安装 参考教程 https blog csdn net qq 36622589 article details 123402704 我是从第3步开始的 做到第9步结束就行 图形化我装了 但如果要安装pycharm专
  • Java学习之IDEA环境搭建

    Java学习之IDEA环境搭建 序言 PicGO的Gitee图床设置 owner QMei repo BlogHome path 环境搭建 IDEA环境搭建 同步 2020 11 1 IDEA 版本 Ultimate 2020 2 搜索功能
  • (ros/navigation/slam_gmapping) map_server地图服务器

    http wiki ros org map server 概述 map server提供map server ROS节点 它提供地图数据作为一个ROS服务器 也提供map saver命令行功能 能动态生成保存到文件中的地图 地图格式 包中通