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

字段

类型

必填

说明

header

RequestHeader

03 §3.1

command

FollowCommand

子命令;见下表

mode

FollowMode

START

1 人体 · 2 目标位姿 · 3 目标 ID

follow_distance

float

跟随距离 (m)

follow_angle

float

跟随角度 (rad)

session_timeout_sec

float

会话超时 (s)

reacquire_on_lost

bool

目标丢失后是否重捕获

target_pose

PoseStamped

mode=2

oneof target

target_id

string

mode=3

oneof target

FollowCommand 枚举

常量

说明

1

FOLLOW_CMD_START

开始;需 mode(及 target

2

FOLLOW_CMD_STOP

停止 → IDLE

3

FOLLOW_CMD_PAUSE

暂停

4

FOLLOW_CMD_RESUME

PAUSED 恢复

5

FOLLOW_CMD_CANCEL

取消任务

6

FOLLOW_CMD_UPDATE_TARGET

跟随中更新目标

Response · FollowCommandResponse

字段

类型

说明

ack

CommandAck

流应答;末帧 final=true · 03 §3.2

status

FollowStatus

跟随阶段

distance_to_target

float

与目标距离 (m)

target_pose

PoseStamped

当前目标位姿

FollowStatusIDLE(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 示例索引

编号

在干什么

command

末帧预期

TC

FOL-01

确认可跟随、无残留任务

可跟随 · 无活跃任务

FOL-02

人体跟随

1

FOLLOWING

TC-FOL-001

FOL-03

目标位姿跟随

1

FOLLOWING · 距离≈设定

TC-FOL-002

FOL-04

暂停跟随

3

PAUSED

FOL-05

暂停后恢复

4

FOLLOWING

FOL-06

跟随中更新目标

6

FOLLOWING · targetPose

TC-FOL-003

FOL-07

取消任务

5

CANCELED

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