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 npimg = 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/
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。