SafetyGuardFactory.cpp
Go to the documentation of this file.
1 #include "SafetyGuardFactory.h"
2 
3 #include <memory>
4 
7 
10 
16 
18 {
21  const core::Scene& scene,
23  {
24  namespace layer = safety_guard;
25 
26  if (not params)
27  {
28  return nullptr;
29  }
30 
31  // algo name
32  const auto algoName = aron::data::String::DynamicCast(params->getElement(core::NAME_KEY));
33  ARMARX_CHECK_NOT_NULL(algoName);
34  const layer::Algorithms algo = layer::AlgorithmNames.from_name(algoName->getValue());
35 
36  // algo params
37  const auto algoParams = aron::data::Dict::DynamicCast(params->getElement(core::PARAMS_KEY));
38  ARMARX_CHECK_NOT_NULL(algoParams);
39 
41  switch (algo)
42  {
44  ARMARX_INFO << "safety_guard::Algorithms::LaserBasedProximity";
45  controller = std::make_shared<safety_guard::LaserBasedProximity>(
47  break;
48  default:
49  ARMARX_INFO << "safety_guard::Algorithms::none";
50  break;
51  }
52 
53  return controller;
54  }
55 } // namespace armarx::navigation::fac
armarx::navigation::core::NAME_KEY
const std::string NAME_KEY
Definition: constants.h:33
armarx::navigation::core::PARAMS_KEY
const std::string PARAMS_KEY
Definition: constants.h:34
ARMARX_CHECK_NOT_NULL
#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...
Definition: ExpressionException.h:206
armarx::navigation::fac
This file is part of ArmarX.
Definition: GlobalPlannerFactory.cpp:19
core.h
LaserBasedProximity.h
constants.h
Dict.h
armarx::navigation::safety_guard::SafetyGuard::Context
Definition: SafetyGuard.h:76
armarx::aron::data::detail::SpecializedVariantBase< data::dto::AronString, String >::DynamicCast
static PointerType DynamicCast(const VariantPtr &n)
Definition: SpecializedVariant.h:116
armarx::navigation::safety_guard::LaserBasedProximityParams::FromAron
static LaserBasedProximityParams FromAron(const aron::data::DictPtr &dict)
Definition: LaserBasedProximity.cpp:110
armarx::navigation::global_planning::AlgorithmNames
const simox::meta::EnumNames< Algorithms > AlgorithmNames
Definition: core.h:45
controller
Definition: AddOperation.h:39
armarx::navigation::safety_guard::Algorithms::LaserBasedProximity
@ LaserBasedProximity
armarx::navigation::fac::SafetyGuardFactory::create
static safety_guard::SafetyGuardPtr create(const aron::data::DictPtr &params, const core::Scene &scene, const safety_guard::SafetyGuard::Context &ctx)
Definition: SafetyGuardFactory.cpp:20
armarx::navigation::safety_guard::SafetyGuardPtr
std::shared_ptr< SafetyGuard > SafetyGuardPtr
Definition: fwd.h:57
armarx::navigation::core::Scene
Definition: types.h:60
ExpressionException.h
armarx::aron::data::DictPtr
std::shared_ptr< Dict > DictPtr
Definition: Dict.h:41
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:181
SafetyGuardFactory.h
Logging.h
armarx::navigation::global_planning::Algorithms
Algorithms
Definition: core.h:38
String.h
types.h
SafetyGuard.h