SendFollowCommand
Unary 请求 → Server Stream 响应。START 前请先 GetCapabilities / GetActiveTask;Stream 以末帧 ack.final=true 结束。
9.1 方法签名
rpc SendFollowCommand(FollowCommandRequest)
returns (stream FollowCommandResponse);
9.2 Proto 定义
源文件:autonomy/bridge/proto/external_command_service.proto
enum FollowMode {
FOLLOW_MODE_UNSPECIFIED = 0;
FOLLOW_MODE_PERSON = 1;
FOLLOW_MODE_TARGET_POSE = 2;
FOLLOW_MODE_TARGET_ID = 3;
}
enum FollowCommand {
FOLLOW_CMD_UNSPECIFIED = 0;
FOLLOW_CMD_START = 1;
FOLLOW_CMD_STOP = 2;
FOLLOW_CMD_PAUSE = 3;
FOLLOW_CMD_RESUME = 4;
FOLLOW_CMD_CANCEL = 5;
FOLLOW_CMD_UPDATE_TARGET = 6;
}
enum FollowStatus {
FOLLOW_STATUS_UNKNOWN = 0;
FOLLOW_STATUS_IDLE = 1;
FOLLOW_STATUS_FOLLOWING = 2;
FOLLOW_STATUS_PAUSED = 3;
FOLLOW_STATUS_TARGET_LOST = 4;
FOLLOW_STATUS_SUCCEEDED = 5;
FOLLOW_STATUS_FAILED = 6;
FOLLOW_STATUS_CANCELED = 7;
}
message FollowCommandRequest {
RequestHeader header = 1;
FollowCommand command = 2;
FollowMode mode = 3;
float follow_distance = 4;
float follow_angle = 5;
float session_timeout_sec = 6;
bool reacquire_on_lost = 7;
oneof target {
commsgs.proto.geometry_msgs.PoseStamped target_pose = 8;
string target_id = 9;
}
}
message FollowCommandResponse {
CommandAck ack = 1;
FollowStatus status = 2;
float distance_to_target = 3;
commsgs.proto.geometry_msgs.PoseStamped target_pose = 4;
}
9.3 字段说明
Request · FollowCommandRequest
字段 |
类型 |
必填 |
说明 |
|---|---|---|---|
|
|
✓ |
|
|
|
✓ |
子命令;见下表 |
|
|
START |
|
|
|
— |
跟随距离 (m) |
|
|
— |
跟随角度 (rad) |
|
|
— |
会话超时 (s) |
|
|
— |
目标丢失后是否重捕获 |
|
|
|
|
|
|
|
|
FollowCommand 枚举
值 |
常量 |
说明 |
|---|---|---|
1 |
|
开始;需 |
2 |
|
停止 → |
3 |
|
暂停 |
4 |
|
从 |
5 |
|
取消任务 |
6 |
|
跟随中更新目标 |
Response · FollowCommandResponse
字段 |
类型 |
说明 |
|---|---|---|
|
|
流应答;末帧 |
|
|
跟随阶段 |
|
|
与目标距离 (m) |
|
|
当前目标位姿 |
FollowStatus:IDLE(1) · FOLLOWING(2) · PAUSED(3) · TARGET_LOST(4) · SUCCEEDED(5) · FAILED(6) · CANCELED(7)
9.4 示例(grpcurl)
环境:01 §1.1 · TC 全集:13 §13.8 · JSON 参考:01 §1.4
每张卡片上方 发送指令(蓝)、下方 收到结果(绿);Stream 响应以末帧 ack.final=true 为准。
9.4.1 示例索引
编号 |
在干什么 |
|
末帧预期 |
TC |
|---|---|---|---|---|
确认可跟随、无残留任务 |
— |
可跟随 · 无活跃任务 |
— |
|
人体跟随 |
1 |
|
|
|
目标位姿跟随 |
1 |
|
|
|
暂停跟随 |
3 |
|
— |
|
暂停后恢复 |
4 |
|
— |
|
跟随中更新目标 |
6 |
|
|
|
取消任务 |
5 |
|
— |
STOP(2) 请求体同 NAV-08,末帧FOLLOW_STATUS_IDLE。
9.4.2 FOL-01 · 前置检查
发 START 前确认:Bridge 支持跟随,且当前无进行中的任务。
9.4.3 启动
9.4.3.1 FOL-02 · START 行人
mode=1:跟踪检测到的人体,保持 follow_distance 间距。
9.4.3.2 FOL-03 · START 目标位姿
mode=2:跟随地图中指定 target_pose,适合虚拟目标或预置航点。
9.4.4 运行控制
9.4.4.1 FOL-04 · PAUSE
暂停跟随(机器人停住,任务保持 PAUSED)。
前提:FOL-02/03 已 START · 另开终端发送。
9.4.4.2 FOL-05 · RESUME
从暂停恢复跟随。
前提:紧接 FOL-04 PAUSE 之后发送。
9.4.4.3 FOL-06 · UPDATE_TARGET
前提:已有进行中的跟随任务(FOLLOWING)。动态更新目标位姿,状态保持 FOLLOWING。
9.4.5 结束
9.4.5.1 FOL-07 · CANCEL
取消当前跟随任务,释放任务槽,状态变为 CANCELED。
目标丢失(
TARGET_LOST)场景见 13 §13.8 TC-FOL-004。