4.3.3 地图接口

在Nav2中地图相关的接口主要有两个:

  • nav_msgs/msg/MapMetaData - 地图元数据,包括地图的宽度、高度、分辨率等。
  • nav_msgs/msg/OccupancyGrid - 地图栅格数据,一般会在rviz中以图形化的方式显示。

1.nav_msgs/msg/MapMetaData

调用指令ros2 interface show nav_msgs/msg/MapMetaData查看接口格式,显示如下内容(注释已汉化):

# 它包含了关于OccupancyGrid特性的基本信息
# 地图加载时间
builtin_interfaces/Time map_load_time
        int32 sec
        uint32 nanosec

# 地图分辨率 [米/像素]
float32 resolution

# 地图宽度 [像素]
uint32 width

# 地图高度 [像素]
uint32 height

#地图的原点坐标[米,米,弧度]。这是地图中单元格(0,0)左下角在现实世界中的位置和方向。
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

2.nav_msgs/msg/OccupancyGrid

调用指令ros2 interface show nav_msgs/msg/OccupancyGrid查看接口格式,显示如下内容(注释已汉化):

# 它代表一个二维网格地图。
std_msgs/Header header
        builtin_interfaces/Time stamp
                int32 sec
                uint32 nanosec
        string frame_id

# 地图元数据
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

# 地图数据按照行优先的顺序进行排列,
# 这意味着首先填充第一行的所有单元格,
# 然后填充第二行,依此类推。
# 起始单元格是(0,0),也就是地图的左上角。
# 单元格(1, 0)紧接着(0,0),是x方向上紧邻的下一个单元格。
# 而单元格(0, 1)则位于第一行的第二个位置,其索引等于地图的宽度(info.width),
# 然后才是(1, 1)单元格,即第二行的第二个单元格。

# 关于地图数据的值,它们根据具体的应用需求来定义。但在很多情况下,
# 会使用0表示该单元格是未占用的,即机器人可以安全通过;
# 1表示该单元格是确定占用的,即存在障碍物;
# 而-1表示该单元格的状态是未知的,即机器人尚未探测到该区域的状态。
int8[] data

results matching ""

    No results matching ""