跳转到内容

7.7 地图管理部分

ORIN 上地图管理模块(Map Management, MM)负责机器人地图的管理,包括地图的获取、存储、更新等功能。

SLAM 建图、重定位等功能暂未提供二次开发接口,相关功能只可配合 AimMaster 客户端软件使用。

为二次开发提供了地图信息查询类接口,方便获取地图特征数据以及导航点数据(供规控导航接口使用)。

接口名 pb:/aimdk.protocol.MappingService/Get2DWholeMap
功能概述 获取 2D 地图数据
接口类型 HTTP JSON RPC
URL http://192.168.100.110:50807/rpc/aimdk.protocol.MappingService/Get2DWholeMap
入参
{
  "command": "MappingCommand_GET_2D_WHOLE_MAP",
  "map_id": "1764059676131"
}
  • command:保持不变即可
  • map_id:填写需要获取信息的地图 id
出参
{
  "data": {
    "map_id": "1764059676131",
    "map_name": "园区",
    "width": 2898,
    "height": 2603,
    "resolution": 20,
    "origin_x": 1274,
    "origin_y": 1371,
    "map_data": "...",
    "rotate_angle": -5.512457272434708,
    "map_url": ""
  }
}
  • map_id:地图 id
  • map_name:地图名
  • width:地图宽度
  • height:地图高度
  • resolution:分辨率
  • origin_x, origin_y:建图时的坐标原点,可认为地图原点
  • map_data:地图数据,png 格式
  • rotate_angle:旋转角度,指示客户端展示方式,可忽略
  • map_url:无效字段
示例脚本 examples/mm/get_2d_whole_map.sh
备注
  • 可以通过以下公式计算机器人在像素地图中的位置

    pixel_x = origin_x + x * resolution
    pixel_y = origin_y - y * resolution
    

    其中 x, y 为 map 坐标系到机器人本体 base_link 坐标系的变换坐标,可通过 /tf 话题获取

接口名 pb:/aimdk.protocol.MappingService/GetStoredMapNames
功能概述 获取地图列表
接口类型 HTTP JSON RPC
URL http://192.168.100.110:50807/rpc/aimdk.protocol.MappingService/GetStoredMapNames
入参
{
  "command": "MappingCommand_GET_STORED_MAP_NAME"
}
  • 保持固定填写即可
出参
{
  "data": {
    "map_lists": [
      {
        "map_id": "1764137567113",
        "map_name": "园区河边",
        "map_index": 5
      },
      {
        "map_id": "1764059676131",
        "map_name": "园区",
        "map_index": 3
      },
      {
        "map_id": "1762584133656",
        "map_name": "e2-8",
        "map_index": 2
      }
    ]
  }
}
  • map_id:地图 id
  • map_name:地图名称
  • map_index:地图索引
示例脚本 examples/mm/get_stored_map_names.sh
备注

7.7.4 获取当前工作地图 id RPC 接口

Section titled “7.7.4 获取当前工作地图 id RPC 接口”
接口名 pb:/aimdk.protocol.MappingService/GetCurrentWorkingMap
功能概述 获取当前工作地图 id
接口类型 HTTP JSON RPC
URL http://192.168.100.110:50807/rpc/aimdk.protocol.MappingService/GetCurrentWorkingMap
入参
{
  "command": "MappingCommand_GET_CURRENT_WORKING_MAP"
}
固定填写即可
出参
{
  "data": {
    "map_id": "1764059676131"
  }
}
map_id:当前正在使用的地图 id
示例脚本 examples/mm/get_current_working_map.sh
备注
接口名 pb:/aimdk.protocol.LocalizationService/GetTopoMsgs
功能概述 获取地图拓扑数据
接口类型 HTTP JSON RPC
URL http://192.168.100.110:50807/rpc/aimdk.protocol.LocalizationService/GetTopoMsgs
入参
{
  "command": "TopoCommand_GET_TOPO_MSG",
  "map_id": 1764059676131
}
  • command 字段固定填写 TopoCommand_GET_TOPO_MSG
  • map_id:地图 id
出参
{
  "data": {
    "points": [
      {
        "point_id": 1,
        "name": "导航点1",
        "point_type": "NaviPointType_NAVI_POINT",
        "pixel_pose": {
          "position": {
            "u": 1506,
            "v": 1420
          },
          "angle": 0
        },
        "pose": {
          "position": {
            "x": 11.6,
            "y": -2.45,
            "z": 0
          }
        }
      }
    ],
    "paths": [],
    "regions": []
  }
}
  • points,paths,regions 分别代表点位、路线、区域,其中点位可用于动线讲解,导航等,后二者一般不使用,无需关注
  • point_id:点位 id
  • name:点位名称
  • point_type:点位类型
  • pixel_pose:像素坐标
  • pose:世界坐标
示例脚本 examples/mm/get_topo_msgs.sh
备注