当前位置: 首页 > news >正文

map_server

地图格式

此软件包中的工具处理的地图以两个文件的形式存储。YAML 文件描述地图的元数据,并命名图像文件。图像文件编码了占用数据。

图像格式

图像文件描述世界中每个单元格的占用状态,并使用相应像素的颜色表示。在标准配置中,较白的像素表示空闲,较黑的像素表示被占用,而介于两者之间的像素表示未知。接受彩色图像,但颜色值会被平均为灰度值。

图像数据通过 SDL_Image 读取;支持的格式根据 SDL_Image 在特定平台上提供的支持而有所不同。通常,大多数流行的图像格式都被广泛支持。值得注意的是,PNG 格式在 OS 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:包含占用数据的图像文件的路径;可以是绝对路径或相对于 YAML 文件的位置。
  • resolution:地图的分辨率,单位为米/像素。
  • origin:地图中左下角像素的二维位姿,格式为 (x, y, yaw),其中 yaw 是逆时针旋转角度(yaw=0 表示无旋转)。目前系统的许多部分忽略了 yaw
  • occupied_thresh:占用概率大于该阈值的像素被认为是完全占用的。
  • free_thresh:占用概率小于该阈值的像素被认为是完全空闲的。
  • negate:是否反转白色/黑色的空闲/占用语义(阈值的解释不受影响)。
可选参数:
  • mode:可以有三种值:trinary(三值),scale(比例),或 raw(原始)。默认是 trinary。有关如何更改值解释的详细信息,请参阅下一部分。

值解释

给定一个范围在 [0, 256) 的像素 COLORx,如何在 ROS 消息中解释该值?首先根据 YAML 中的 negate 标志,将整数 x 转换为浮点数 p

  • 如果 negatefalse,则 p = (255 - x) / 255.0。这意味着黑色(0)具有最高值(1.0),白色(255)具有最低值(0.0)。
  • 如果 negatetrue,则 p = x / 255.0。这是非标准的图像解释方式,因此称为 negate,尽管数学上 x 并未被取反。
三值(Trinary)模式

标准的解释是三值解释,即所有值的输出都是三种值之一:

  • 如果 p > occupied_thresh,则输出值 100 表示单元格被占用。
  • 如果 p < free_thresh,则输出值 0 表示单元格是空闲的。
  • 否则,输出 -1255(作为无符号字符),表示单元格未知。
比例(Scale)模式

这种解释方式调整了上面的三值解释,允许输出比三值更多的值:

  • 如果 p > occupied_thresh,则输出值 100
  • 如果 p < free_thresh,则输出值 0
  • 否则,输出 99 * (p - free_thresh) / (occupied_thresh - free_thresh)

这允许输出范围在 [0, 100] 之间的值。要输出 -1,可以使用 PNG 的 alpha 通道,任何透明度都将被解释为未知。

原始(Raw)模式

此模式将为每个像素输出 x,因此输出值在 [0, 255] 之间。

命令行工具

map_server

map_server 是一个 ROS 节点,它从磁盘读取地图并通过 ROS 服务提供该地图。当前实现将地图图像数据中的颜色值转换为三值占用状态:空闲(0)、占用(100)和未知(-1)。未来的版本可能会使用介于 0100 之间的值来表示占用的细微差别。

用法
map_server <map.yaml>

示例:

rosrun map_server map_server mymap.yaml 
发布的主题:
  • map_metadata (nav_msgs/MapMetaData):通过此锁存的主题接收地图元数据。
  • map (nav_msgs/OccupancyGrid):通过此锁存的主题接收地图。
服务
  • static_map (nav_msgs/GetMap):通过此服务获取地图。
参数:
  • ~frame_idstring,默认值:"map"):发布的地图中设置的帧 ID。
map_saver

map_saver 从 SLAM 映射服务中保存地图到磁盘。

用法
rosrun map_server map_saver [--occ <threshold_occupied>] [--free <threshold_free>] [-f <mapname>] map:=/your/costmap/topic 

示例:

rosrun map_server map_saver -f mymap rosrun map_server map_saver --occ 90 --free 10 -f mymap map:=/move_base/global_costmap/costmap 
订阅的主题:
  • map (nav_msgs/OccupancyGrid):地图通过此锁存的主题接收。
http://www.lryc.cn/news/458686.html

相关文章:

  • 无人机航拍视频帧处理与图像拼接算法
  • 搬砖11、Python 文件和异常
  • 24.6 监控系统在采集侧对接运维平台
  • refresh-1
  • 如何写好一篇计算机应用的论文?
  • 工业 5.0 时代的数字孪生:迈向高效和可持续的智能工厂
  • Python脚本之获取Splunk数据发送到第三方UDP端口
  • Protobuf:复杂类型接口
  • Git Push 深度解析:命令的区别与实践
  • 大数据开发基础实训室设备
  • 【数据结构】string(C++模拟实现)
  • 【笔记】I/O总结王道强化视频笔记
  • XML XSLT:转换与呈现数据的力量
  • ES6总结
  • 晶体匹配测试介绍
  • 超声波清洗机靠谱吗?适合学生党入手的四款眼镜清洗机品牌推荐!
  • Java生成图片_基于Spring AI
  • 程序传入单片机的过程,以Avrdude为例分析
  • 用YOLO和LLM增强的OCR
  • 开源的云平台有哪些?
  • Spring Boot学习资源库:微服务架构的加速器
  • Pi4+wfb-ng+8812au
  • 基于单片机的非接触智能测温系统设计
  • 第二十三篇:网络拥塞了,TCP/IP如何解决的?
  • 登录注册静态网页实现(HTML,CSS)
  • 基于FPGA的以太网设计(二)
  • OJ在线评测系统 后端微服务架构 注册中心 Nacos入门到启动
  • 升级到Ubuntu 24.04遇到的问题
  • 提示词格式化
  • JAVA八股文1