SafetyGuardFactory.cpp
Go to the documentation of this file.
1
#include "
SafetyGuardFactory.h
"
2
3
#include <memory>
4
5
#include <
ArmarXCore/core/exceptions/local/ExpressionException.h
>
6
#include <
ArmarXCore/core/logging/Logging.h
>
7
8
#include <
RobotAPI/libraries/aron/core/data/variant/container/Dict.h
>
9
#include <
RobotAPI/libraries/aron/core/data/variant/primitive/String.h
>
10
11
#include <
armarx/navigation/core/constants.h
>
12
#include <
armarx/navigation/core/types.h
>
13
#include <
armarx/navigation/safety_guard/LaserBasedProximity.h
>
14
#include <
armarx/navigation/safety_guard/SafetyGuard.h
>
15
#include <
armarx/navigation/safety_guard/core.h
>
16
17
namespace
armarx::navigation::fac
18
{
19
safety_guard::SafetyGuardPtr
20
SafetyGuardFactory::create
(
const
aron::data::DictPtr
& params,
21
const
core::Scene
& scene,
22
const
safety_guard::SafetyGuard::Context
& ctx)
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
40
safety_guard::SafetyGuardPtr
controller
;
41
switch
(algo)
42
{
43
case
safety_guard::Algorithms::LaserBasedProximity
:
44
ARMARX_INFO
<<
"safety_guard::Algorithms::LaserBasedProximity"
;
45
controller
= std::make_shared<safety_guard::LaserBasedProximity>(
46
safety_guard::LaserBasedProximityParams::FromAron
(algoParams), scene, ctx);
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 ¶ms, 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
armarx
navigation
factories
SafetyGuardFactory.cpp
Generated on Sat Mar 29 2025 09:17:35 for armarx_documentation by
1.8.17