SendMapCommand
Unary 请求 → Server Stream 响应。地图操作前请先 GetCapabilities / GetActiveTask;Stream 以末帧 ack.final=true 结束。
12.1 方法签名
rpc SendMapCommand(MapCommandRequest)
returns (stream MapCommandResponse);
12.2 Proto 定义
源文件:autonomy/bridge/proto/external_command_service.proto
enum MapCommand {
MAP_CMD_UNSPECIFIED = 0;
MAP_CMD_LOAD = 1;
MAP_CMD_SWITCH = 2;
MAP_CMD_SET_INITIAL_POSE = 3;
MAP_CMD_CLEAR_COSTMAP = 4;
MAP_CMD_ADD_KEEP_OUT_ZONE = 5;
MAP_CMD_REMOVE_KEEP_OUT_ZONE = 6;
}
enum MapStatus {
MAP_STATUS_UNKNOWN = 0;
MAP_STATUS_IDLE = 1;
MAP_STATUS_LOADING = 2;
MAP_STATUS_SUCCEEDED = 3;
MAP_STATUS_FAILED = 4;
}
message MapCommandRequest {
RequestHeader header = 1;
MapCommand command = 2;
oneof params {
string map_name = 3;
commsgs.proto.geometry_msgs.PoseWithCovarianceStamped initial_pose = 4;
commsgs.proto.geometry_msgs.Polygon keep_out_zone = 5;
string zone_id = 6;
}
}
message MapCommandResponse {
CommandAck ack = 1;
MapStatus status = 2;
string current_map_name = 3;
}
12.3 字段说明
Request · MapCommandRequest
字段 |
类型 |
必填 |
说明 |
|---|---|---|---|
|
|
✓ |
|
|
|
✓ |
子命令;见下表 |
|
|
|
|
|
|
|
重定位初始位姿 |
|
|
|
禁行区多边形 |
|
|
|
待移除禁行区 ID |
MapCommand 枚举
值 |
常量 |
|
|---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
清除代价地图 |
5 |
|
|
6 |
|
|
Response · MapCommandResponse
字段 |
类型 |
说明 |
|---|---|---|
|
|
流应答;末帧 |
|
|
地图操作阶段 |
|
|
当前加载地图名 |
MapStatus:IDLE(1) · LOADING(2) · SUCCEEDED(3) · FAILED(4)
SET_INITIAL_POSE/CLEAR_COSTMAP/ 禁行区等命令为瞬时操作,Stream 中通常IDLE → SUCCEEDED,不经过LOADING。
12.4 示例(grpcurl)
环境:01 §1.1 · TC 全集:13 §13.11 · JSON 参考:01 §1.4
每张卡片上方 发送指令(蓝)、下方 收到结果(绿);Stream 响应以末帧 ack.final=true 为准。
12.4.1 示例索引
编号 |
在干什么 |
|
末帧预期 |
TC |
|---|---|---|---|---|
确认支持地图管理、无冲突任务 |
— |
可地图管理 · 无活跃任务 |
— |
|
加载静态地图 |
1 |
|
|
|
切换到另一张地图 |
2 |
|
|
|
设置重定位位姿 |
3 |
|
|
|
清除局部代价地图 |
4 |
|
|
|
添加禁行区 |
5 |
|
|
|
移除禁行区 |
6 |
|
|
12.4.2 MAP-00 · 前置检查
发地图 Command 前确认:Bridge 支持地图管理,且当前无进行中的 Command 任务。
12.4.3 地图加载
12.4.3.1 MAP-01 · LOAD
从磁盘加载 named 地图,Stream 中可见 LOADING → SUCCEEDED。
12.4.3.2 MAP-02 · SWITCH
已加载一张地图后,切换到另一张(无需重启导航栈)。
12.4.4 定位与代价地图
12.4.4.1 MAP-03 · SET_INITIAL_POSE
手动设置机器人在地图中的初始位姿(重定位 / 开机放置)。
12.4.4.2 MAP-04 · CLEAR_COSTMAP
清除局部代价地图中的动态障碍残留,常用于机器人被困后恢复。
12.4.5 禁行区
12.4.5.1 MAP-05 · ADD_KEEP_OUT_ZONE
在代价地图上添加多边形禁行区(导航规划将绕开)。
12.4.5.2 MAP-06 · REMOVE_KEEP_OUT_ZONE
按 zone_id 移除先前添加的禁行区。