当前位置: 首页 > 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):地图通过此锁存的主题接收。

相关文章:

map_server

地图格式 此软件包中的工具处理的地图以两个文件的形式存储。YAML 文件描述地图的元数据&#xff0c;并命名图像文件。图像文件编码了占用数据。 图像格式 图像文件描述世界中每个单元格的占用状态&#xff0c;并使用相应像素的颜色表示。在标准配置中&#xff0c;较白的像素…...

无人机航拍视频帧处理与图像拼接算法

无人机航拍视频帧处理与图像拼接算法 1. 视频帧截取与缩放 在图像预处理阶段,算法首先逐帧地从视频中提取出各个帧。 对于每一帧图像,算法会执行缩放操作,以确保所有帧都具有一致的尺寸,便于后续处理。 2. 图像配准 在图像配准阶段,算法采用SIFT(尺度不变特征变换)算…...

搬砖11、Python 文件和异常

文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景&#xff0c;而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词&#xff0c;可能需要先科普一下关于文件系统的知识&#xff0c;但是这里我们并不浪费笔墨介绍这个概念&#xff0c;请大…...

24.6 监控系统在采集侧对接运维平台

本节重点介绍 : 监控系统在采集侧对接运维平台 服务树充当监控系统的上游数据提供者在运维平台上 可以配置采集任务 exporter改造成探针型将给exporter传参和修改prometheus scrape配置等操作页面化 监控系统在采集侧对接运维平台 服务树充当监控系统的上游数据提供者在运…...

refresh-1

如果设置了刷新标志&#xff08;refreshFlag&#xff09;&#xff1a; - 如果CAT&#xff08;配置文件管理代理&#xff09;未初始化&#xff0c;eUICC应返回一个错误代码commandError。 - 对于MEP-A2&#xff0c;eUICC可以返回一个错误代码commandError。 - 如果目标端口上正…...

如何写好一篇计算机应用的论文?

计算机应用是一个广泛的领域&#xff0c;涵盖了从软件开发到数据分析、人工智能、网络安全等多个方向。选择一个合适的毕业设计题目&#xff0c;不仅要考虑个人兴趣和专业技能&#xff0c;还要考虑项目的可行性、创新性以及对未来职业发展的帮助。以下是一些建议&#xff0c;帮…...

工业 5.0 时代的数字孪生:迈向高效和可持续的智能工厂

数字孪生&#xff08;物理机器或流程的虚拟代表&#xff09;正在彻底改变工业物联网和流程监控。这项新兴技术可实现实时模拟&#xff0c;提高效率、可持续性并降低成本。航空航天和汽车等行业已经从这些创新系统中获益匪浅 数字孪生是数字模拟器的演变&#xff0c;因此&#x…...

Python脚本之获取Splunk数据发送到第三方UDP端口

原文地址&#xff1a;https://www.program-park.top/2024/10/12/python_21/ 在 Linux 环境执行脚本&#xff0c;Python需要引入对应依赖&#xff1a; pip install splunk-sdk离线环境下&#xff0c;可手动执行python进入 Python 解释器的交互式界面&#xff0c;输入以下命令&a…...

Protobuf:复杂类型接口

Protobuf&#xff1a;复杂类型接口 package字段规则复杂类型enumAnyoneofmap 本博客基于proto3语法&#xff0c;讲解protobuf中的复杂类型。 package 在.proto文件中&#xff0c;支持导入其它.proto文件的内容&#xff0c;例如&#xff1a; test.proto&#xff1a; syntax …...

Git Push 深度解析:命令的区别与实践

目录 命令一&#xff1a;git push origin <branch-name>命令二&#xff1a;git push Factory_sound_detection_tool test工作流程&#xff1a;两者的主要区别实践中的应用总结 Git 是一种分布式版本控制系统&#xff0c;它允许用户对代码进行版本管理。在 Git 中&#xf…...

大数据开发基础实训室设备

大数据实验实训一体机 大数据实验教学一体机是一种专为大数据教育设计的软硬件融合产品&#xff0c;其基于华为机架服务器进行了调优设计&#xff0c;从而提供了卓越的性能和稳定性。这一产品将企业级虚拟化管理系统与实验实训教学信息化平台内置于一体&#xff0c;通过软硬件…...

【数据结构】string(C++模拟实现)

string构造 string::string(const char* str):_size(strlen(str)) {_str new char[_size 1];_capacity _size;strcpy(_str, str); }// s2(s1) string::string(const string& s) {_str new char[s._capacity 1];strcpy(_str, s._str);_size s._size;_capacity s._cap…...

【笔记】I/O总结王道强化视频笔记

文章目录 从中断控制器的角度来理解整个中断处理的过程复习 处理器的中断处理机制**中断驱动I/O方式** printf——从系统调用到I/O控制方式的具体实现1轮询方式下输出一个字符串(程序查询)中断驱动方式下输出一个字符串中断服务程序中断服务程序与设备驱动程序之间的关系 DMA方…...

XML XSLT:转换与呈现数据的力量

XML XSLT:转换与呈现数据的力量 XML(可扩展标记语言)和XSLT(XML样式表转换语言)是现代信息技术中不可或缺的工具,它们在数据交换、存储和呈现方面发挥着重要作用。本文将深入探讨XML和XSLT的概念、应用及其在信息技术领域的重要性。 XML:数据交换的标准 XML是一种用于…...

ES6总结

1.let和const以及与var区别 1.1 作用域 var&#xff1a; 变量提升&#xff08;Hoisting&#xff09;&#xff1a;var 声明的变量会被提升到其作用域的顶部&#xff0c;但赋值不会提升。这意味着你可以在声明之前引用该变量&#xff08;但会得到 undefined&#xff09;。 con…...

晶体匹配测试介绍

一、晶体参数介绍 晶体的电气规格相对比较简单,如下: 我们逐一看看每个参数, FL就是晶体的振动频率,这个晶体是24.576MHz的。 CL就是负载电容,决定了晶体频率是否准确,包括外接的实际电容、芯片的等效电容以及PCB走线的寄生电容等,核心参数。 Frequency Tolerance是…...

超声波清洗机靠谱吗?适合学生党入手的四款眼镜清洗机品牌推荐!

有没有学生党还不知道双十一买什么&#xff1f;其实可以去看看超声波清洗机&#xff0c;说实话它的实用性真的很高&#xff0c;对于日常用于清洗眼镜真的非常合适&#xff0c;不仅可以帮助大家节约时间而且还能把眼镜清洗的干净透亮&#xff0c;接下来我就来为大家带来四款好用…...

Java生成图片_基于Spring AI

Spring AI 优势 过去&#xff0c;使用Java编写AI应用时面临的主要困境是没有统一且标准的封装库&#xff0c;开发者需自行对接各个AI服务提供商的接口&#xff0c;导致代码复杂度高、迁移成本大。如今&#xff0c;Spring AI Alibaba的出现极大地缓解了这一问题&#xff0c;它提…...

程序传入单片机的过程,以Avrdude为例分析

在市场上有各式各样的单片机&#xff0c;例如Arduino&#xff0c;51单片机&#xff0c;STM等。通常&#xff0c;我们都用其对应的IDE软件进行单片机的编程。这些软件既负责将程序代码转写成二进制代码&#xff0c;即机器语言&#xff0c;也负责将该二进制代码导入单片机。与此同…...

用YOLO和LLM增强的OCR

虽然最近我花了很多时间在大型语言模型 (LLM) 上进行实验&#xff0c;但我对计算机视觉的热情始终未减。因此&#xff0c;当我有机会将两者融合在一起时&#xff0c;我迫不及待地想要立即开始。在 Goodreads 上扫描书籍封面并将其标记为已读一直感觉有点神奇&#xff0c;我很兴…...

开源的云平台有哪些?

开源云平台为用户提供了构建、管理和运行云基础设施及应用的能力&#xff0c;同时允许社区参与开发和改进。以下是一些知名的开源云平台&#xff1a; 1. OpenStack 简介&#xff1a;OpenStack&#xff1a;一个广泛使用的开源云平台&#xff0c;它由多个组件组成&#xff0c;提…...

Spring Boot学习资源库:微服务架构的加速器

3 系统分析 3.1可行性分析 在进行可行性分析时&#xff0c;我们通常根据软件工程里方法&#xff0c;通过四个方面来进行分析&#xff0c;分别是技术、经济、操作和法律可行性。因此&#xff0c;在基于对目标系统的基本调查和研究后&#xff0c;对提出的基本方案进行可行性分析。…...

Pi4+wfb-ng+8812au

sudo apt update将如下文件拷入树莓派4 linux-6f921e98008589258f97243fb6658d09750f0a2f.tar.gz libsodium.zip rtl8812au.zip wfb-ng_Pi4_2.zip 安装libsodium unzip libsodium.zip cd libsodium ./configure make && make check sudo make install#安装8812AU驱动 …...

基于单片机的非接触智能测温系统设计

本设计主要由单片机STC8A8K64S4A12、OLED显示屏、非接触式测温模块MLX9061、无线通讯模块ESP8266以及声光报警模块等构成。系统通过非接触式测温模块MLX9061测量当前人员温度&#xff0c;温度通过OLED显示屏进行实时显示&#xff0c;当被测温度高于阈值&#xff0c;声光报警模块…...

第二十三篇:网络拥塞了,TCP/IP如何解决的?

一.显示拥塞通知 当发生网络拥塞时&#xff0c;发送主机应该减少数据包的发送量。作为IP上层协议&#xff0c;TCP虽然也能控制网络拥塞&#xff0c;不过它是通过数据包的实际损坏情况来判断是否发生拥塞。然而这种方法不能在数据包损坏之前减少数据包的发送量。 为了解决这个…...

登录注册静态网页实现(HTML,CSS)

实现效果图 实现效果 使用HTML编写页面结构&#xff0c;CSS美化界面&#xff0c;点击注册&#xff0c;跳转到注册界面&#xff0c;均为静态网页&#xff0c;是课上的一个小作业~ 使用正则表达式对输入进行验证&#xff0c;包括邮箱格式验证&#xff0c;用户名格式验证。 正则…...

基于FPGA的以太网设计(二)

一.以太网硬件架构概述 前文讲述了以太网的一些相关知识&#xff0c;本文将详细讲解以太网的硬件架构 以太网的电路架构一般由MAC、PHY、变压器、RJ45和传输介质组成&#xff0c;示意图如下所示&#xff1a; PHY&#xff1a;Physical Layer&#xff0c;即物理层。物理层定义了…...

OJ在线评测系统 后端微服务架构 注册中心 Nacos入门到启动

注册中心 服务架构中的注册中心是一个关键组件&#xff0c;用于管理和协助微服务之间的通信。注册中心的主要职责是服务的注册和发现&#xff0c;确保各个微服务能够相互找到并进行调用。 主要功能&#xff1a; 服务注册&#xff1a;微服务在启动时&#xff0c;将自身信息&am…...

升级到Ubuntu 24.04遇到的问题

升级过程中被别人关机重启到windows了&#xff0c;再启动到linux接着升级&#xff0c;还好能运行。但出现了些问题。 1.网络无法访问&#xff0c;发现是dns问题。最后在/etc/systemd/resov.conf文件中添加nameserver sudo nano /etc/systemd/resolv.conf cd /etc sudo ln -s …...

提示词格式化

利用jinja2&#xff0c;对提示词进行格式输出。以下是qwen2中tokenizer_config.json文件中的chat_template模块定义的提示词转换方式。 &#xff08;1&#xff09;查看qwen2的chat_template {"add_prefix_space": false,"added_tokens_decoder": {"…...