Bridge 集成
§4 gRPC 总览 · 本专题 grpc/05(H2 5.x)。
autonomy/bridge 源码链路:配置 → BridgeServer → GrpcBridgeServer → async_grpc → Handler → Proto。
5.1 集成总览
bridge.lua / BridgeOptions
→ BridgeServer → GrpcBridgeServer
→ Server::Builder → Server (AutonomyService)
→ SendNavigationHandler / SendExplorationHandler
框架背景:cartographer async_grpc · 类图:grpc/01。
5.2 启动链路
BridgeServer(bridge_server.cpp):
BridgeServer::BridgeServer() {
grpc_bridge_ = std::make_unique<GrpcBridgeServer>();
}
void BridgeServer::Start() {
grpc_bridge_->Start(); // 当前无论 use_grpc 均启动
}
GrpcBridgeServer 构造(grpc_bridge.cpp):
Server::Builder b;
b.SetServerAddress("127.0.0.1"); // 待读 GrpcOptions,缺 port
b.SetNumGrpcThreads(4);
b.SetNumEventThreads(4);
b.SetMaxSendMessageSize(100 * 1024 * 1024);
b.RegisterHandler<SendNavigationHandler>();
b.RegisterHandler<SendExplorationHandler>();
grpc_server_ = b.Build();
Start:task_thread_(传感器占位)+ grpc_server_->Start()(CQ/EQ 线程池)。
线程 |
数量 |
职责 |
|---|---|---|
CQ |
4 |
gRPC I/O |
EQ |
4 |
Handler |
|
1 |
上行队列占位 |
5.3 已注册 RPC
Proto 定义 13 个 RPC;源码当前仅注册 2 个 Handler:
Handler |
gRPC Method |
类型 |
状态 |
|---|---|---|---|
|
|
Unary → Stream |
⏳ 已注册, |
|
|
Unary → Stream |
⏳ 已注册, |
— |
其余 13 RPC |
❌ 未 RegisterHandler |
Proto 定义:rpcs/02 服务概述 · Handler 签名:grpc/04 §4.1。
5.5 ExecutionContext(规划)
GrpcBridgeContextInterface 继承 ExecutionContext,规划注入 NavigatorStub、TF、FSM。须在 Build() 后、Start() 前 SetExecutionContext。
5.6 待实现 RPC
按 grpc/07_handlers 优先级:
优先级 |
RPC |
说明 |
|---|---|---|
P0 |
|
Empty → Stream; |
P1 |
|
Unary 查询 |
P1 |
|
系统命令 |
P2 |
|
任务 Stream |
P3 |
|
Bidi Stream,需 async_grpc Bidi Handler |
5.7 配置 → Server 参数映射
|
|
当前 |
|---|---|---|
|
|
硬编码 |
|
|
4 |
|
|
4 |
— |
|
100 MB |
|
待封装 |
未实现 |
|
|
空 |
目标接线:
GrpcBridgeServer::GrpcBridgeServer(const proto::GrpcOptions& o) {
Server::Builder b;
b.SetServerAddress(o.host() + ":" + std::to_string(o.port()));
b.SetNumGrpcThreads(o.num_grpc_threads());
b.SetNumEventThreads(o.num_event_threads());
// RegisterHandler…
grpc_server_ = b.Build();
}
5.8 开发 checklist
[ ] Proto 声明 RPC → 生成
.pb.h(当前 13 RPC 已定义)[ ] 按 grpc/07 Handler 规划 逐类
RegisterHandler[ ]
DEFINE_HANDLER_SIGNATURE全名与 proto 一致[ ] Command:
header校验 +CommandAck流(final末帧)[ ] Push:
ReceiveBotStates填充 vehicle_msgs[ ]
SetExecutionContext+ FSM /NavigatorMuxer[ ]
GrpcOptions传入 Builder(P0)[ ]
grpcurl/ Python 客户端验证