【ros2】OccupancyGrid消息里的resolution

本文简要介绍ROS 2中nav_msgs/msg/OccupancyGrid消息里的resolution参数含义,以及它和widthheight之间的关系。

txt 复制代码
$ ros2 interface show nav_msgs/msg/OccupancyGrid
# This represents a 2-D grid map
std_msgs/Header header
        builtin_interfaces/Time stamp
                int32 sec
                uint32 nanosec
        string frame_id

# MetaData for the map
MapMetaData info
        builtin_interfaces/Time map_load_time
                int32 sec
                uint32 nanosec
        float32 resolution
        uint32 width
        uint32 height
        geometry_msgs/Pose origin
                Point position
                        float64 x
                        float64 y
                        float64 z
                Quaternion orientation
                        float64 x 0
                        float64 y 0
                        float64 z 0
                        float64 w 1

# The map data, in row-major order, starting with (0,0).
# Cell (1, 0) will be listed second, representing the next cell in the x direction.
# Cell (0, 1) will be at the index equal to info.width, followed by (1, 1).
# The values inside are application dependent, but frequently,
# 0 represents unoccupied, 1 represents definitely occupied, and
# -1 represents unknown.
int8[] data

核心概念解释

1. resolution(分辨率)

resolution 是一个浮点数(float32) ,单位是 米/单元格 (meters per cell) ,表示栅格地图中每个单元格(栅格)对应的实际物理尺寸

  • 例如:resolution = 0.05 表示地图中一个单元格对应现实世界中 5 厘米 × 5 厘米的区域;
  • 这是连接「像素/单元格坐标」和「真实物理坐标」的核心参数。
2. width & height(宽度/高度)
  • width:整数(uint32),表示地图在x轴方向的单元格数量;
  • height:整数(uint32),表示地图在y轴方向的单元格数量;
  • 两者描述的是地图的「栅格数量」,而非物理尺寸。
3. 三者的核心关系

物理尺寸 = 单元格数量 × 分辨率

  • 地图实际物理宽度(米):width × resolution
  • 地图实际物理高度(米):height × resolution
  • 举例:
    • resolution=0.1(10cm/格)、width=500height=400,则:
      • 地图实际宽度 = 500 × 0.1 = 50 米;
      • 地图实际高度 = 400 × 0.1 = 40 米;
      • 整个地图覆盖 50m × 40m 的物理区域。

补充说明(帮你完整理解)

  1. 坐标转换逻辑

    结合你之前关注的data数组(行优先存储),从「单元格坐标 (x, y)」转「物理坐标 (X, Y)」的公式:

    复制代码
    X = origin.position.x + x × resolution
    Y = origin.position.y + y × resolution

    其中origin是地图的物理原点(比如 (0,0) 单元格对应的真实世界坐标)。

  2. 实际应用场景

    • 导航算法(如AMCL、Dijkstra)会通过resolution将路径规划的「栅格路径」转换成机器人可以执行的「物理移动距离」;
    • 调整resolution会影响地图精度:分辨率越小(如0.01米/格),地图越精细,但width/height会越大,占用更多内存;
    • width × height 也是data数组的总长度(每个单元格对应data里的一个int8值)。

总结

  1. resolution 是「单元格→米」的转换系数,决定地图的物理精度;
  2. width/height 是地图的栅格数量,resolution 把它们转换成实际物理尺寸;
  3. 三者共同定义了栅格地图的「物理范围」和「精度」,是机器人导航中坐标转换的核心参数。
相关推荐
wincheshe12 分钟前
AI Agent 辅助工具学习 --- SDD 开发与实践
人工智能·学习
const_qiu12 分钟前
PowerShell 自动化测试脚本编写指南
人工智能
guoji778814 分钟前
Gemini 3.1 Pro 安全与对齐机制深度解析:可控性、合规性与企业级应用评估
大数据·人工智能·算法
小仓桑16 分钟前
【Agent智能体项目实战二】通义千问流式输出:实现像 ChatGPT 一样逐字打印效果
人工智能·chatgpt·agent
Struart_R18 分钟前
Easi3R、VGGT4D、4D-VGGT论文解读
人工智能·计算机视觉·三维重建·4d·vggt
wincheshe21 分钟前
AI Agent 开发 --- 上下文工程:概念与落地实践(四)
人工智能
墨染天姬29 分钟前
【AI】强化学习(RL)和多智能体系统(MAS)
人工智能
柯儿的天空36 分钟前
【OpenClaw 全面解析:从零到精通】第 013 篇:OpenClaw 安全机制深度解析——沙盒隔离、权限控制与安全最佳实践
人工智能·安全·ai作画·aigc·ai写作
知智前沿39 分钟前
什么是 RAG?通俗易懂讲解 + 核心流程梳理
人工智能·python
星爷AG I1 小时前
15-5 身体感觉:疼觉和温觉(AGI基础理论)
人工智能·agi