惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Jina AI
Jina AI
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
J
Java Code Geeks
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
美团技术团队
腾讯CDC
博客园 - Franky
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
aimingoo的专栏
aimingoo的专栏
博客园_首页
V
V2EX
Martin Fowler
Martin Fowler
T
The Blog of Author Tim Ferriss

又见苍岚

COLMAP PatchMatch Stereo 算法详解 事件驱动的状态机框架:从理论到工程实践 Git 在国内网络环境下无法 Push 的排查与修复 —— 配置 Clash 代理 分段五次多项式插值原理详解 路径插值方法深度对比研究 Claude Code 使用指南 OpenClaw 记忆管理与技能创建指南 CBS(Conflict-Based Search)算法详解 A* 算法及其变种详解 OpenClaw 配置多 Agents Windows Powershell 无法加载文件,因为在此系统上禁止运行脚本问题的解决方案 MaxClaw 安装流程 大模型 AI 名词介绍 AList 网盘聚合工具简介 Protobuf 简介与测试 Claude Code 简介以及 GLM 4.7 模型接入 Github 歌词下载工具 163MusicLyrics Python __getattr__ 懒加载 Python TypedDict 机器人仿真平台 Gazebo 安装记录 机器人仿真平台 Gazebo 简介 多机器人路径规划问题(Multi-Agent Path Finding, MAPF)简介 Python exifread 读取修改过的 jpeg 信息错误问题修复 3D 坐标系变换的理解 3D 旋转矩阵基本概念 MongoDB Compass 介绍 Python 环境管理工具 uv Flutter 开发指南 Snipaste 安装下载与黑屏问题解决方案 全局路径规划算法记录
Nav2 地图文件(PGM/YAML)规范标准
Yiwei Zhang · 2025-07-14 · via 又见苍岚

Nav2 对地图文件(PGM/YAML)有明确的规范要求,本文记录相关标准。

图像文件规范(PGM/PNG)

  • 格式要求

    • 推荐使用 PGM(便携式灰度图),也可用 PNG(需8位灰度)
    • 必须是 灰度图(非RGB彩色)
    • 像素深度:8位(0-255)
  • 像素值含义

    像素值 含义 RViz 颜色
    0 障碍物(Occupied) 黑色
    100 自由空间(Free) 灰色
    255 未知区域(Unknown) 白色

YAML 配置文件规范

1
2
3
4
5
6
7
8
image: map.pgm       # 地图图像路径(相对于YAML文件)
resolution: 0.05 # 分辨率(米/像素)
origin: [0.0, 0.0, 0.0] # 地图原点[x,y,theta](单位:米/弧度)
negate: 0 # 是否反转像素值(0:不反转,1:反转)
occupied_thresh: 0.65 # 大于此值为障碍物(比例:像素值/255)
free_thresh: 0.196 # 小于此值为自由空间
mode: "scale" # 处理模式(scale/trinary/raw)
frame_id: map # 地图坐标系

关键参数说明

  • mode
    • scale(默认):按阈值连续分类(推荐)
    • trinary:严格三值分类(0/100/255)
    • raw:直接使用原始像素值
  • negate
    • 0:黑=障碍物,白=自由空间(SLAM标准)
    • 1:白=障碍物,黑=自由空间(某些ROS1传统)

数据转换

PGM 到 PNG

1
convert output_map.pgm output_map.png

PNG 转 PGM

1
convert hospital_04.png hospital_04.pgm

Python 编辑 PGM 图像

1
2
3
4
5
6
7
8
9
10
11
12
13
# convert_pgm.py
from PIL import Image
import numpy as np

img = Image.open("hospital_04.pgm")
arr = np.array(img)

arr[arr == 254] = 100
arr[arr == 205] = 255

Image.fromarray(arr).save("hospital_fixed.pgm")
pass

文章链接:
https://www.zywvvd.com/notes/tools/ros2/nav2-map-build/nav2-map-build/