Apollo 10.0
自动驾驶开放平台
apollo::cyber::ParameterServer类 参考

Parameter Service is a very important function of auto-driving. 更多...

#include <parameter_server.h>

apollo::cyber::ParameterServer 的协作图:

Public 类型

using Param = apollo::cyber::proto::Param
 
using NodeName = apollo::cyber::proto::NodeName
 
using ParamName = apollo::cyber::proto::ParamName
 
using BoolResult = apollo::cyber::proto::BoolResult
 
using Params = apollo::cyber::proto::Params
 

Public 成员函数

 ParameterServer (const std::shared_ptr< Node > &node)
 Construct a new ParameterServer object
 
void SetParameter (const Parameter &parmeter)
 Set the Parameter object
 
bool GetParameter (const std::string &parameter_name, Parameter *parameter)
 Get the Parameter object
 
void ListParameters (std::vector< Parameter > *parameters)
 get all the parameters
 

详细描述

Parameter Service is a very important function of auto-driving.

If you want to set a key-value, and hope other nodes to get the value, Routing, sensor internal/external references are set by Parameter Service ParameterServer can set a parameter, and then you can get/list paramter(s) by start a ParameterClient to send responding request

警告
You should only have one ParameterServer works

在文件 parameter_server.h44 行定义.

成员类型定义说明

◆ BoolResult

◆ NodeName

◆ Param

◆ ParamName

◆ Params

构造及析构函数说明

◆ ParameterServer()

apollo::cyber::ParameterServer::ParameterServer ( const std::shared_ptr< Node > &  node)
explicit

Construct a new ParameterServer object

参数
nodeshared_ptr of the node handler

在文件 parameter_server.cc25 行定义.

26 : node_(node) {
27 auto name = node_->Name();
28 get_parameter_service_ = node_->CreateService<ParamName, Param>(
29 FixParameterServiceName(name, GET_PARAMETER_SERVICE_NAME),
30 [this](const std::shared_ptr<ParamName>& request,
31 std::shared_ptr<Param>& response) {
32 std::lock_guard<std::mutex> lock(param_map_mutex_);
33 if (param_map_.find(request->value()) != param_map_.end()) {
34 response->CopyFrom(param_map_[request->value()]);
35 } else {
36 AINFO << "GetParameterService: [" << request->value() << "] not set";
37 }
38 });
39
40 set_parameter_service_ = node_->CreateService<Param, BoolResult>(
41 FixParameterServiceName(name, SET_PARAMETER_SERVICE_NAME),
42 [this](const std::shared_ptr<Param>& request,
43 std::shared_ptr<BoolResult>& response) {
44 std::lock_guard<std::mutex> lock(param_map_mutex_);
45 param_map_[request->name()] = *request;
46 response->set_value(true);
47 });
48
49 list_parameters_service_ = node_->CreateService<NodeName, Params>(
50 FixParameterServiceName(name, LIST_PARAMETERS_SERVICE_NAME),
51 [this](const std::shared_ptr<NodeName>& request,
52 std::shared_ptr<Params>& response) {
53 std::lock_guard<std::mutex> lock(param_map_mutex_);
54 for (auto& item : param_map_) {
55 auto param = response->add_param();
56 param->CopyFrom(item.second);
57 }
58 });
59}
apollo::cyber::proto::BoolResult BoolResult
apollo::cyber::proto::ParamName ParamName
apollo::cyber::proto::Param Param
apollo::cyber::proto::NodeName NodeName
apollo::cyber::proto::Params Params
#define AINFO
Definition log.h:42
constexpr auto SET_PARAMETER_SERVICE_NAME
constexpr auto LIST_PARAMETERS_SERVICE_NAME
constexpr auto GET_PARAMETER_SERVICE_NAME

成员函数说明

◆ GetParameter()

bool apollo::cyber::ParameterServer::GetParameter ( const std::string &  parameter_name,
Parameter parameter 
)

Get the Parameter object

参数
parameter_namename of the parameer want to get
parameterpointer to store parameter want to get
返回
true get parameter success
false parameter not exists

在文件 parameter_server.cc66 行定义.

67 {
68 std::lock_guard<std::mutex> lock(param_map_mutex_);
69 auto ite = param_map_.find(parameter_name);
70 if (ite == param_map_.end()) {
71 return false;
72 }
73 parameter->FromProtoParam(ite->second);
74 return true;
75}

◆ ListParameters()

void apollo::cyber::ParameterServer::ListParameters ( std::vector< Parameter > *  parameters)

get all the parameters

参数
parametersresult Paramter vector

在文件 parameter_server.cc77 行定义.

77 {
78 std::lock_guard<std::mutex> lock(param_map_mutex_);
79 for (auto& item : param_map_) {
80 Parameter parameter;
81 parameter.FromProtoParam(item.second);
82 parameters->emplace_back(parameter);
83 }
84}

◆ SetParameter()

void apollo::cyber::ParameterServer::SetParameter ( const Parameter parmeter)

Set the Parameter object

参数
parmeterparameter to be set

在文件 parameter_server.cc61 行定义.

61 {
62 std::lock_guard<std::mutex> lock(param_map_mutex_);
63 param_map_[parameter.Name()] = parameter.ToProtoParam();
64}

该类的文档由以下文件生成: