Skip to content
Snippets Groups Projects
Commit aeedba82 authored by Joan Vallvé Navarro's avatar Joan Vallvé Navarro
Browse files

adapting to new yaml server

parent 456b0628
No related branches found
No related tags found
1 merge request!448Draft: Resolve "Implementation of new nodes creation"
Pipeline #11767 passed
......@@ -23,6 +23,7 @@
#define PARAMS_BASE_H_
#include "core/utils/params_server.h"
#include "yaml-schema-cpp/yaml-schema-cpp.hpp"
namespace wolf {
struct ParamsBase
......@@ -32,6 +33,10 @@ namespace wolf {
{
//
}
ParamsBase(const YAML::Node& _n)
{
//
}
virtual ~ParamsBase() = default;
virtual std::string print() const = 0;
......
......@@ -152,6 +152,14 @@ inline std::string FactoryProcessorYaml::getClass() const
return "FactoryProcessorYaml";
}
typedef Factory<ProcessorBase,
const YAML::Node&> FactoryProcessorYamlNode;
template<>
inline std::string FactoryProcessorYamlNode::getClass() const
{
return "FactoryProcessorYamlNode";
}
// ParamsProcessor factory
struct ParamsProcessorBase;
typedef Factory<ParamsProcessorBase,
......@@ -162,14 +170,15 @@ inline std::string FactoryParamsProcessor::getClass() const
return "FactoryParamsProcessor";
}
#define WOLF_REGISTER_PROCESSOR(ProcessorType) \
namespace{ const bool WOLF_UNUSED ProcessorType##ServerRegistered = \
wolf::FactoryProcessorServer::registerCreator(#ProcessorType, ProcessorType::create); } \
namespace{ const bool WOLF_UNUSED ProcessorType##Registered = \
wolf::FactoryProcessor::registerCreator(#ProcessorType, ProcessorType::create); } \
namespace{ const bool WOLF_UNUSED ProcessorType##YamlRegistered = \
wolf::FactoryProcessorYaml::registerCreator(#ProcessorType, ProcessorType::create); } \
#define WOLF_REGISTER_PROCESSOR(ProcessorType) \
namespace{ const bool WOLF_UNUSED ProcessorType##ServerRegistered = \
wolf::FactoryProcessorServer::registerCreator(#ProcessorType, ProcessorType::create); } \
namespace{ const bool WOLF_UNUSED ProcessorType##Registered = \
wolf::FactoryProcessor::registerCreator(#ProcessorType, ProcessorType::create); } \
namespace{ const bool WOLF_UNUSED ProcessorType##YamlRegistered = \
wolf::FactoryProcessorYaml::registerCreator(#ProcessorType, ProcessorType::create); } \
namespace{ const bool WOLF_UNUSED ProcessorType##YamlNodeRegistered = \
wolf::FactoryProcessorYamlNode::registerCreator(#ProcessorType, ProcessorType::create); } \
} /* namespace wolf */
#endif /* PROCESSOR_FACTORY_H_ */
......@@ -92,6 +92,16 @@ static ProcessorBasePtr create(const std::string& _unique_name,
\
return processor; \
} \
static ProcessorBasePtr create(const YAML::Node& _input_node) \
{ \
auto params = std::make_shared<ParamsProcessorClass>(_input_node); \
\
auto processor = std::make_shared<ProcessorClass>(params); \
\
processor ->setName(_unique_name); \
\
return processor; \
} \
/** \brief Buffer for arbitrary type objects
......@@ -223,6 +233,13 @@ struct ParamsProcessorBase : public ParamsBase
voting_active = _server.getParam<bool>(prefix + _unique_name + "/keyframe_vote/voting_active");
apply_loss_function = _server.getParam<bool>(prefix + _unique_name + "/apply_loss_function");
}
ParamsProcessorBase(const YAML::Node& _n):
ParamsBase(_n)
{
time_tolerance = _n["time_tolerance"].as<double>();
voting_active = _n["keyframe_vote"]["voting_active"].as<bool>();
apply_loss_function = _n["apply_loss_function"].as<bool>();
}
~ParamsProcessorBase() override = default;
......
......@@ -43,6 +43,10 @@ struct ParamsProcessorDiffDrive : public ParamsProcessorOdom2d
ParamsProcessorOdom2d(_unique_name, _server)
{
}
ParamsProcessorDiffDrive(const YAML::Node& _n) :
ParamsProcessorOdom2d(_n)
{
}
std::string print() const override
{
return ParamsProcessorOdom2d::print();
......
......@@ -52,6 +52,15 @@ struct ParamsProcessorFixedWingModel : public ParamsProcessorBase
assert(std::abs(velocity_local.norm() - 1.0) < wolf::Constants::EPS && "ParamsProcessorFixedWingModel: 'velocity_local' must be normalized");
}
ParamsProcessorFixedWingModel(const YAML::Node & _n) :
ParamsProcessorBase(_n)
{
velocity_local = _n["velocity_local"].as<Eigen::Vector3d>();
angle_stdev = _n["angle_stdev"].as<double>();
min_vel_norm = _n["min_vel_norm"].as<double>();
assert(std::abs(velocity_local.norm() - 1.0) < wolf::Constants::EPS && "ParamsProcessorFixedWingModel: 'velocity_local' must be normalized");
}
std::string print() const override
{
return ParamsProcessorBase::print() + "\n"
......
......@@ -39,6 +39,11 @@ struct ParamsProcessorLoopClosure : public ParamsProcessorBase
{
max_loops = _server.getParam<int>(prefix + _unique_name + "/max_loops");
}
ParamsProcessorLoopClosure(const YAML::Node& _n):
ParamsProcessorBase(_n)
{
max_loops = _n["max_loops"].as<int>();
}
std::string print() const override
{
......
......@@ -63,6 +63,16 @@ struct ParamsProcessorMotion : public ParamsProcessorBase, public ParamsMotionPr
angle_turned = _server.getParam<double>(prefix + _unique_name + "/keyframe_vote/angle_turned");
unmeasured_perturbation_std = _server.getParam<double>(prefix + _unique_name + "/unmeasured_perturbation_std");
}
ParamsProcessorMotion(const YAML::Node& _n):
ParamsProcessorBase(_n),
ParamsMotionProvider(_n)
{
max_time_span = _n["keyframe_vote"]["max_time_span"].as<double>();
max_buff_length = _n["keyframe_vote"]["max_buff_length"].as<unsigned int>();
dist_traveled = _n["keyframe_vote"]["dist_traveled"].as<double>();
angle_turned = _n["keyframe_vote"]["angle_turned"].as<double>();
unmeasured_perturbation_std = _n["unmeasured_perturbation_std"].as<double>();
}
std::string print() const override
{
return ParamsProcessorBase::print() + "\n" +
......
......@@ -27,7 +27,7 @@
#include "core/state_block/state_angle.h"
#include "core/state_block/state_quaternion.h"
#include "core/common/factory.h"
#include "core/yaml/yaml_conversion.h"
// #include "core/yaml/yaml_conversion.h"
namespace wolf {
......
......@@ -34,7 +34,7 @@
#include "core/state_block/state_block.h"
#include "core/state_block/state_quaternion.h"
#include "core/state_block/local_parametrization_quaternion.h"
#include "core/yaml/yaml_conversion.h"
// #include "core/yaml/yaml_conversion.h"
#include <iostream>
using namespace wolf;
......
......@@ -19,16 +19,11 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
//--------LICENSE_END--------
/**
* \file test_yaml_conversions.cpp
*
* Created on: May 15, 2016
* \author: jsola
*/
#include "core/common/wolf.h"
#include "core/utils/utils_gtest.h"
#include "core/yaml/yaml_conversion.h"
// #include "core/yaml/yaml_conversion.h"
#include <yaml-schema-cpp/yaml_conversion.h>
#include <yaml-cpp/yaml.h>
#include <eigen3/Eigen/Dense>
#include <iostream>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment