6. 参数 Parameter
Parameter 提供 跨节点键值配置。对标 ROS 2 Parameter Server。
本文 §6 |
相关文档 |
|---|---|
全局参数 |
6.1 调用流程
Parameter 通过 Service RPC 在 Client 与 Server 之间读写键值;Client 构造时传入目标 Server 的 node 名(非自身 node 名)。
| 要点 | 说明 |
|---|---|
| Server 绑定 | 每个 ParameterServer 对应一个 Node 名(如 "parameter") |
| 典型部署 | 进程内通常一个全局 Server;多 Server 须不同 node 名 |
6.2 C++ 示例
autolink/examples/cpp/paramserver.cpp:
#include "autolink/parameter/parameter_client.hpp"
#include "autolink/parameter/parameter_server.hpp"
using autolink::Parameter;
using autolink::ParameterClient;
using autolink::ParameterServer;
int main(int argc, char** argv) {
autolink::Init(argv[0]);
auto node = autolink::CreateNode("parameter", "/examples");
auto param_server = std::make_shared<ParameterServer>(node);
auto param_client = std::make_shared<ParameterClient>(node, "parameter");
// Server 侧写入
param_server->SetParameter(Parameter("int", 1));
Parameter parameter;
param_server->GetParameter("int", ¶meter);
AINFO << "int: " << parameter.AsInt64();
// Client 侧读写(跨节点时 client 用另一 Node)
param_client->SetParameter(Parameter("string", "test"));
param_client->GetParameter("string", ¶meter);
AINFO << "string: " << parameter.AsString();
param_client->GetParameter("int", ¶meter);
AINFO << "int: " << parameter.AsInt64();
return 0;
}
运行:./autolink_example_paramserver。
6.3 GetParameter / SetParameter
Parameter 包装标量值;ParameterServer 本地存储,ParameterClient 经 RPC 访问远端 Server。
Parameter 包装值:
Parameter("max_speed", 1.5); // double
Parameter("frame_id", std::string("map"));
Parameter("enabled", true);
Parameter("int", 42);
ParameterServer(parameter_server.hpp):
方法 |
说明 |
|---|---|
|
设置或覆盖 |
|
按名读取;不存在返回 false |
|
枚举全部 |
ParameterClient:
方法 |
说明 |
|---|---|
|
向远端 Server 写入 |
|
从远端读取 |
|
列举远端参数 |
读取辅助:AsInt64()、AsDouble()、AsString()、AsBool()。
6.4 Python API
py_parameter.py:
from autolink_py3 import parameter
PARAM_SERVICE_NAME = "global_parameter_service"
test_node = autolink.Node(PARAM_SERVICE_NAME)
srv = parameter.ParameterServer(test_node)
clt = parameter.ParameterClient(test_node, PARAM_SERVICE_NAME)
clt.set_parameter(parameter.Parameter("author_name", "WanderingEarth"))
clt.set_parameter(parameter.Parameter("author_age", 5000))
clt.set_parameter(parameter.Parameter("author_score", 888.88))
param_list = clt.get_paramslist()
for p in param_list:
print(p.debug_string())
python3 py_parameter.py
6.5 配置分工
机制 |
适用 |
|---|---|
Lua / YAML 配置 |
启动时固定参数、模块装配 |
Parameter |
运行时在线调参、多节点共享 |
Component DAG |
模块级 channel 名、间隔等 |
Autonomy 模块参数管线见 Framework §7。
导航:← §5 动作 Action · §0 指南 · §7 插件 Plugin →