diff --git a/include/core/sensor/sensor_base.h b/include/core/sensor/sensor_base.h index cd4f7acdc3715d318b5048532ccf090bff9aa567..e0840a59eabd6e086cd6e78ae7226368d003db75 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 ba54241a29820880703c00f2a799caa7178d0f66..bef2e0d8f1320f90882f3002ae4d6b7e8651e1f6 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");