SafetyGuardFactory.cpp
Go to the documentation of this file.
2
3#include <memory>
4
7
10
16
18{
21 const aron::data::DictPtr& params,
22 const core::Scene& scene,
24 {
25 namespace layer = safety_guard;
26
27 if (not params)
28 {
29 return nullptr;
30 }
31
32 // algo name
33 const auto algoName = aron::data::String::DynamicCast(params->getElement(core::NAME_KEY));
34 ARMARX_CHECK_NOT_NULL(algoName);
35 const layer::Algorithms algo = layer::AlgorithmNames.from_name(algoName->getValue());
36
37 // algo params
38 const auto algoParams = aron::data::Dict::DynamicCast(params->getElement(core::PARAMS_KEY));
39 ARMARX_CHECK_NOT_NULL(algoParams);
40
42 switch (algo)
43 {
45 ARMARX_INFO << "safety_guard::Algorithms::LaserBasedProximity";
46 controller = std::make_shared<safety_guard::LaserBasedProximity>(
48 generalConfig,
49 scene,
50 ctx);
51 break;
52 default:
53 ARMARX_INFO << "safety_guard::Algorithms::none";
54 break;
55 }
56
57 return controller;
58 }
59} // namespace armarx::navigation::fac
static safety_guard::SafetyGuardPtr create(const core::GeneralConfig &generalConfig, const aron::data::DictPtr &params, const core::Scene &scene, const safety_guard::SafetyGuard::Context &ctx)
#define ARMARX_CHECK_NOT_NULL(ptr)
This macro evaluates whether ptr is not null and if it turns out to be false it will throw an Express...
#define ARMARX_INFO
The normal logging level.
Definition Logging.h:181
std::shared_ptr< Dict > DictPtr
Definition Dict.h:42
const std::string PARAMS_KEY
Definition constants.h:34
const std::string NAME_KEY
Definition constants.h:33
This file is part of ArmarX.
This file is part of ArmarX.
Definition fwd.h:55
std::shared_ptr< SafetyGuard > SafetyGuardPtr
Definition fwd.h:57
static LaserBasedProximityParams FromAron(const aron::data::DictPtr &dict)