NavigationStackFactory.cpp
Go to the documentation of this file.
1
#include "
NavigationStackFactory.h
"
2
3
#include <experimental/memory>
4
#include <string>
5
6
#include <
ArmarXCore/core/exceptions/local/ExpressionException.h
>
7
#include <
ArmarXCore/core/logging/Logging.h
>
8
#include <
ArmarXCore/util/CPPUtility/trace.h
>
9
10
#include <
RobotAPI/components/ArViz/Client/Client.h
>
11
#include <RobotAPI/interface/aron/Aron.h>
12
#include <
RobotAPI/libraries/aron/core/data/variant/container/Dict.h
>
13
14
#include <
armarx/navigation/core/constants.h
>
15
#include <
armarx/navigation/core/types.h
>
16
#include <
armarx/navigation/factories/GlobalPlannerFactory.h
>
17
#include <
armarx/navigation/factories/LocalPlannerFactory.h
>
18
#include <
armarx/navigation/factories/SafetyGuardFactory.h
>
19
#include <
armarx/navigation/factories/TrajectoryControllerFactory.h
>
20
#include <
armarx/navigation/safety_guard/SafetyGuard.h
>
21
#include <
armarx/navigation/server/NavigationStack.h
>
22
23
namespace
armarx::navigation::fac
24
{
25
server::NavigationStack
26
NavigationStackFactory::create
(
const
aron::data::DictPtr
& params,
27
const
core::Scene
& scene,
28
std::experimental::observer_ptr<viz::Client>
arviz)
29
{
30
ARMARX_TRACE
;
31
using
aron::data::Dict
;
32
33
const
auto
getElementOrNull = [¶ms](
const
core::StackLayer
& layer) -> Dict::PointerType
34
{
35
ARMARX_TRACE
;
36
const
std::string key =
core::StackLayerNames
.to_name(layer);
37
38
if
(params->hasElement(key))
39
{
40
return
Dict::DynamicCast(params->getElement(key));
41
}
42
43
ARMARX_INFO
<<
"Skipping '"
<< key <<
"'"
;
44
45
return
nullptr
;
46
};
47
48
const
auto
globalPlannerCfg = getElementOrNull(
core::StackLayer::GlobalPlanner
);
49
const
auto
localPlannerCfg = getElementOrNull(
core::StackLayer::LocalPlanner
);
50
const
auto
trajectoryControllerCfg =
51
getElementOrNull(
core::StackLayer::TrajectoryController
);
52
const
auto
safetyGuardCfg = getElementOrNull(
core::StackLayer::SafetyGuard
);
53
54
const
safety_guard::SafetyGuard::Context
ctx{.
arviz
= arviz};
55
56
return
server::NavigationStack
{
57
.
globalPlanner
=
GlobalPlannerFactory::create
(globalPlannerCfg, scene),
58
.localPlanner =
LocalPlannerFactory::create
(localPlannerCfg, scene),
59
.trajectoryControl =
TrajectoryControllerFactory::create
(trajectoryControllerCfg),
60
.safetyGuard =
SafetyGuardFactory::create
(safetyGuardCfg, scene, ctx)};
61
}
62
63
server::NavigationStack
64
NavigationStackFactory::create
(
const
aron::data::dto::DictPtr
& params,
65
const
core::Scene
& scene,
66
std::experimental::observer_ptr<viz::Client>
arviz)
67
{
68
ARMARX_TRACE
;
69
const
auto
dict =
aron::data::Dict::FromAronDictDTO
(params);
70
ARMARX_CHECK_NOT_NULL
(dict);
71
return
create
(dict, scene, arviz);
72
}
73
74
}
// namespace armarx::navigation::fac
Client.h
NavigationStack.h
armarx::navigation::fac::GlobalPlannerFactory::create
static global_planning::GlobalPlannerPtr create(const aron::data::DictPtr ¶ms, const core::Scene &ctx)
Definition:
GlobalPlannerFactory.cpp:22
armarx::navigation::core::StackLayer::GlobalPlanner
@ GlobalPlanner
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
trace.h
armarx::navigation::server::NavigationStack
Definition:
NavigationStack.h:36
armarx::navigation::safety_guard::SafetyGuard::Context::arviz
std::experimental::observer_ptr< viz::Client > arviz
Definition:
SafetyGuard.h:78
LocalPlannerFactory.h
constants.h
std::experimental::fundamentals_v2::observer_ptr
Definition:
ManagedIceObject.h:53
Dict.h
NavigationStackFactory.h
armarx::aron::data::Dict::FromAronDictDTO
static PointerType FromAronDictDTO(const data::dto::DictPtr &aron)
Definition:
Dict.cpp:130
armarx::navigation::core::StackLayer::TrajectoryController
@ TrajectoryController
armarx::navigation::safety_guard::SafetyGuard::Context
Definition:
SafetyGuard.h:76
IceInternal::Handle
Definition:
forward_declarations.h:8
armarx::navigation::core::StackLayer::SafetyGuard
@ SafetyGuard
ARMARX_TRACE
#define ARMARX_TRACE
Definition:
trace.h:77
armarx::navigation::core::StackLayerNames
const simox::meta::EnumNames< StackLayer > StackLayerNames
Definition:
constants.h:44
armarx::navigation::fac::TrajectoryControllerFactory::create
static traj_ctrl::local::TrajectoryControllerPtr create(const aron::data::DictPtr ¶ms)
Definition:
TrajectoryControllerFactory.cpp:18
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::core::Scene
Definition:
types.h:60
armarx::navigation::fac::NavigationStackFactory::create
static server::NavigationStack create(const aron::data::DictPtr ¶ms, const core::Scene &scene, std::experimental::observer_ptr< viz::Client > arviz)
Definition:
NavigationStackFactory.cpp:26
ExpressionException.h
armarx::navigation::core::StackLayer::LocalPlanner
@ LocalPlanner
armarx::aron::data::DictPtr
std::shared_ptr< Dict > DictPtr
Definition:
Dict.h:41
ARMARX_INFO
#define ARMARX_INFO
Definition:
Logging.h:181
armarx::navigation::fac::LocalPlannerFactory::create
static local_planning::LocalPlannerPtr create(const aron::data::DictPtr ¶ms, const core::Scene &ctx)
Definition:
LocalPlannerFactory.cpp:21
GlobalPlannerFactory.h
SafetyGuardFactory.h
Logging.h
armarx::navigation::core::StackLayer
StackLayer
Definition:
constants.h:36
armarx::navigation::server::NavigationStack::globalPlanner
global_planning::GlobalPlannerPtr globalPlanner
Definition:
NavigationStack.h:38
TrajectoryControllerFactory.h
types.h
armarx::aron::data::Dict
Definition:
Dict.h:44
SafetyGuard.h
armarx
navigation
factories
NavigationStackFactory.cpp
Generated on Sat Mar 29 2025 09:17:35 for armarx_documentation by
1.8.17