121 #include "modules/perception/proto/perception_config_schema.pb.h" 124 namespace perception {
142 size_t NumModels()
const {
return model_config_map_.size(); }
144 const std::string &
work_root()
const {
return work_root_; }
152 std::map<std::string, ModelConfig *> model_config_map_;
154 bool inited_ =
false;
155 std::string work_root_;
165 bool Reset(
const apollo::perception::ModelConfigProto &proto);
167 std::string
name()
const {
return name_; }
170 return get_value_from_map<int>(name, integer_param_map_,
value);
174 return get_value_from_map<std::string>(name, string_param_map_,
value);
178 return get_value_from_map<double>(name, double_param_map_,
value);
182 return get_value_from_map<float>(name, float_param_map_,
value);
186 return get_value_from_map<bool>(name, bool_param_map_,
value);
189 bool get_value(
const std::string &name, std::vector<int> *values)
const {
190 return get_value_from_map<std::vector<int>>(name, array_integer_param_map_,
194 bool get_value(
const std::string &name, std::vector<double> *values)
const {
195 return get_value_from_map<std::vector<double>>(
196 name, array_double_param_map_, values);
199 bool get_value(
const std::string &name, std::vector<float> *values)
const {
200 return get_value_from_map<std::vector<float>>(name, array_float_param_map_,
205 std::vector<std::string> *values)
const {
206 return get_value_from_map<std::vector<std::string>>(
207 name, array_string_param_map_, values);
210 bool get_value(
const std::string &name, std::vector<bool> *values)
const {
211 return get_value_from_map<std::vector<bool>>(name, array_bool_param_map_,
219 template <
typename T>
220 bool get_value_from_map(
const std::string &name,
221 const std::map<std::string, T> &container,
224 template <
typename T>
225 void RepeatedToVector(
226 const google::protobuf::RepeatedField<T> &repeated_values,
227 std::vector<T> *vec_values);
230 std::string version_;
232 std::map<std::string, int> integer_param_map_;
233 std::map<std::string, std::string> string_param_map_;
234 std::map<std::string, double> double_param_map_;
235 std::map<std::string, float> float_param_map_;
236 std::map<std::string, bool> bool_param_map_;
237 std::map<std::string, std::vector<int>> array_integer_param_map_;
238 std::map<std::string, std::vector<std::string>> array_string_param_map_;
239 std::map<std::string, std::vector<double>> array_double_param_map_;
240 std::map<std::string, std::vector<float>> array_float_param_map_;
241 std::map<std::string, std::vector<bool>> array_bool_param_map_;
244 template <
typename T>
245 bool ModelConfig::get_value_from_map(
const std::string &name,
246 const std::map<std::string, T> &container,
248 typename std::map<std::string, T>::const_iterator citer =
249 container.find(name);
251 if (citer == container.end()) {
255 *value = citer->second;
259 template <
typename T>
260 void ModelConfig::RepeatedToVector(
261 const google::protobuf::RepeatedField<T> &repeated_values,
262 std::vector<T> *vec_list) {
263 vec_list->reserve(repeated_values.size());
264 for (T value : repeated_values) {
265 vec_list->push_back(value);
272 : error_info_(error_info) {}
273 std::string
What()
const {
return error_info_; }
276 std::string error_info_;
279 template <
typename T>
285 std::stringstream ss;
286 ss <<
"Config name:" << config.
name() <<
" read failed. " 287 <<
"type:" <<
typeid(T).name() <<
" name:" << name;
294 template <
typename T>
298 const std::string &name) {
301 std::stringstream ss;
302 ss <<
"Config name:" << config.
name() <<
" read failed. " 303 <<
"type:vector<" <<
typeid(T).name() <<
"> name:" << name;
306 return std::move(ret);
bool get_value(const std::string &name, std::vector< std::string > *values) const
Definition: config_manager.h:204
bool get_value(const std::string &name, double *value) const
Definition: config_manager.h:177
bool GetModelConfig(const std::string &model_name, const ModelConfig **model_config)
void set_work_root(const std::string &work_root)
Definition: config_manager.h:146
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
bool get_value(const std::string &name, std::vector< bool > *values) const
Definition: config_manager.h:210
~ModelConfig()
Definition: config_manager.h:163
bool get_value(const std::string &name, std::vector< float > *values) const
Definition: config_manager.h:199
bool get_value(const std::string &name, std::vector< int > *values) const
Definition: config_manager.h:189
ConfigManagerError(const std::string &error_info)
Definition: config_manager.h:271
const std::string & work_root() const
Definition: config_manager.h:144
bool get_value(const std::string &name, bool *value) const
Definition: config_manager.h:185
std::string name() const
Definition: config_manager.h:167
#define DECLARE_SINGLETON(classname)
Definition: macros.h:52
size_t NumModels() const
Definition: config_manager.h:142
bool get_value(const std::string &name, int *value) const
Definition: config_manager.h:169
Definition: config_manager.h:129
Definition: config_manager.h:160
std::string What() const
Definition: config_manager.h:273
static std::vector< T > Read(const ModelConfig &config, const std::string &name)
Definition: config_manager.h:297
Definition: config_manager.h:269
apollo::cyber::base::std value
static T Read(const ModelConfig &config, const std::string &name)
Definition: config_manager.h:282
bool get_value(const std::string &name, float *value) const
Definition: config_manager.h:181
ModelConfig()
Definition: config_manager.h:162
bool get_value(const std::string &name, std::string *value) const
Definition: config_manager.h:173
bool get_value(const std::string &name, std::vector< double > *values) const
Definition: config_manager.h:194
Definition: config_manager.h:280