From 1237baccf834c3842a59c7b6797b1ec02ee9d981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20Vallv=C3=A9=20Navarro?= <jvallve@iri.upc.edu> Date: Mon, 27 Jun 2022 18:05:29 +0200 Subject: [PATCH] [skip ci] wip --- include/core/sensor/sensor_base.h | 11 +++++------ src/problem/problem.cpp | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/include/core/sensor/sensor_base.h b/include/core/sensor/sensor_base.h index cd4f7acdc..e0840a59e 100644 --- a/include/core/sensor/sensor_base.h +++ b/include/core/sensor/sensor_base.h @@ -87,17 +87,16 @@ static SensorBasePtr create(SizeEigen _dim, const std::string& _yaml_filepath, \ const std::vector<std::string>& folders_schema) \ { \ - auto schema = yaml-schema-cpp::YamlServer(folders_schema, _yaml_filepath); \ + auto server = yaml-schema-cpp::YamlServer(folders_schema, _yaml_filepath); \ \ - std::stringstream log; \ - if (not schema.validate(SensorClass, log)) \ + if (not server.validate(SensorClass)) \ { \ - WOLF_ERROR(log.str()); \ + WOLF_ERROR(server.getLog().str()); \ return nullptr; \ } \ - auto params = std::make_shared<ParamsSensorClass>(schema.getNode()); \ + auto params = std::make_shared<ParamsSensorClass>(server.getNode()); \ \ - auto priors = Priors(schema.getNode()["states"]); \ + auto priors = Priors(server.getNode()["states"]); \ \ return std::make_shared<SensorClass>(_dim, params, priors); \ } \ diff --git a/src/problem/problem.cpp b/src/problem/problem.cpp index ba54241a2..bef2e0d8f 100644 --- a/src/problem/problem.cpp +++ b/src/problem/problem.cpp @@ -84,7 +84,7 @@ ProblemPtr Problem::create(const std::string& _frame_structure, SizeEigen _dim, return p->shared_from_this(); } -ProblemPtr Problem::autoSetup(ParamsServer &_server) +ProblemPtr Problem::autoSetup(const std::string& _input_yaml_file, std::vector<std::string> _schema_folders) { #if __APPLE__ std::string lib_extension = ".dylib"; @@ -92,6 +92,19 @@ ProblemPtr Problem::autoSetup(ParamsServer &_server) std::string lib_extension = ".so"; #endif + // Create yaml server + auto server = yaml-schema-cpp::YamlServer({}, _input_yaml_file); + + // + + std::stringstream log; + if (not server.validate(SensorClass, log)) + { + WOLF_ERROR(log.str()); + return nullptr; + } + auto params = std::make_shared<ParamsSensorClass>(server.getNode()) + // Problem structure and dimension std::string frame_structure = _server.getParam<std::string> ("problem/frame_structure"); int dim = _server.getParam<int> ("problem/dimension"); -- GitLab