Autoxing REST API Book
  • English
  • zh-CN
GitHub
  • English
  • zh-CN
GitHub
  • 入门指南

    • 入门指南
    • 开始移动
    • WebSocket 入门指南
    • Robot Admin (单机版)
  • 参考手册

    • REST API 设计原则
    • 地图 (Map) API
    • 移动 (Move) API
    • 当前地图与位姿 API
    • 叠加层 (Overlays)
    • 建图 (Mapping) API
    • 服务 API (Service API)
    • 转发 ROS 服务 API (Forwarded ROS Services API)
    • 物联网 (IoT) 设备
    • 设备信息 API
    • 机器人参数 (Robot Parameters) API
    • 系统设置 (System Settings)
    • 应用商店 API
    • 主机名 (Hostname) API
    • Lidar 陆标 (Landmarks)
    • WebSocket 参考 (WebSocket Reference)
    • 子图 (Submaps)
  • 其他

    • 弃用说明
    • 更新日志

当前地图与位姿 API

设置当前地图

有几种方式可以设置当前地图:

  • 使用 map_id 或 map_uid。
  • 直接提供地图数据(自 2.7.0 版本起可用)。
  • 从本地文件加载(自 2.11.0 版本起可用)。
curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"map_id": 286}' \
  http://192.168.25.25:8090/chassis/current-map

请求参数

class SetCurrentMapRequest {
  map_id?: number; // 必须提供 'map_id' 或 'map_uid' 之一。

  // 自 2.5.2 版本起可用。地图可以通过其 "uid" 标识。
  // 在早期版本中,仅支持 'map_id'。
  map_uid?: string;
}

使用数据设置当前地图

从 2.7.0 版本起,您可以使用以下 POST 请求直接设置当前地图。 注意: 对于大地图,此方法可能会非常缓慢。

class SetCurrentMapWithDataRequest {
  map_name: string;
  occupancy_grid: string; // Base64 编码的 PNG 图像。
  carto_map: string; // 二进制地图数据。
  grid_resolution: number; // 例如:0.05
  grid_origin_x: number; // PNG 地图左下角的 X 坐标。
  grid_origin_y: number; // PNG 地图左下角的 Y 坐标。
  overlays: string; // 请参阅关于叠加层 (overlays) 的文档。
}

通过加载本地文件设置当前地图

从 2.11.0 版本起,可以直接从机器人上的本地文件加载当前地图。

curl -X POST http://localhost:8090/chassis/current-map \
  -H "Content-Type: application/json"
  --data '{"data_url":"file:///home/simba/tmp_map/map_73.pbstream", "map_name": "xxx"}'

需要以下三个文件:

/home/simba/tmp_map/map_73.pbstream
/home/simba/tmp_map/map_73.png
/home/simba/tmp_map/map_73.yaml

YAML 文件应包含以下结构:

uid: 62202f9fed0883652d08ad5c
grid_origin_x: -5.900000095367432
grid_origin_y: -9.199999809265137
grid_resolution: 0.05
map_version: 3
overlays_version: 1
overlays: { "map_uid": "62202f9fed0883652d08ad5c", "features": [] }

获取当前地图

curl http://192.168.25.25:8090/chassis/current-map
{
  "id": 287,
  "uid": "62202f9fed0883652d08ad5c",
  "map_name": "26层",
  "create_time": 1647862075,
  "map_version": 15,
  "overlays_version": 25
}

id 对应于地图列表中的条目。 如果当前地图是直接通过数据设置的,则 id 将为 -1。

锁存型 (latched) WebSocket 话题 /map/info 包含当前活动地图的信息。 每当当前地图发生变化时,该话题都会广播一条新消息。

$ wscat -c ws://192.168.25.25:8090/ws/v2/topics
> {"enable_topic": "/map/info"}
< {
  "topic": "/map/info",
  "name": "26层",
  "uid": "62202f9fed0883652d08ad5c",
  "map_version": 15,
  "overlays_version": 25,
  "overlays": {...}
}

设置位姿

在当前地图上设置机器人的位姿(位置和朝向)。

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"position": [0, 0, 0], "ori": 1.57}' \
  http://192.168.25.25:8090/chassis/pose

请求参数

class SetPoseRequest {
  position: [number, number, number]; // 坐标 [x, y, z]。注意 `z` 始终为 0。
  ori: number; // 机器人的航向(弧度),逆时针测量。0 值对应于 X 轴正方向。

  // [可选]
  // 如果为 true,系统将尝试在较小区域内纠正初始位置误差。
  // 如果为 false,系统将不尝试任何纠正。
  // 如果未提供,其行为未定义,可能会根据软件版本、环境和全局设置而变化。
  adjust_position?: boolean;
}

当 adjust_position 设置为 true 时,系统会根据激光雷达 (Lidar) 的观测值检测并纠正初始位置误差。 例如,如果机器人的航向被错误分配,系统将尽力纠正它。

纠正前纠正后

注意

纠正算法偶尔会被环境的变化所误导。 因此,如果您确定初始位姿是正确的——特别是在可能存在误导性特征的环境中——请确保将 adjust_position 设置为 false。

位姿反馈

锁存型 (latched) WebSocket 话题 /tracked_pose 提供最新的机器人位姿。

$ wscat -c ws://192.168.25.25:8090/ws/v2/topics
> {"enable_topic": "/tracked_pose"}
< {"topic": "/tracked_pose", "pos": [-3.553, -0.288], "ori": -1.28}
< {"topic": "/tracked_pose", "pos": [-3.55, -0.285], "ori": -1.28}
Edit this page
最后更新: 2026/6/17 13:24
Contributors: FengZhaolin
Prev
移动 (Move) API
Next
叠加层 (Overlays)