SafetyGuard.h
Go to the documentation of this file.
1
/**
2
* This file is part of ArmarX.
3
*
4
* ArmarX is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License version 2 as
6
* published by the Free Software Foundation.
7
*
8
* ArmarX is distributed in the hope that it will be useful, but
9
* WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
12
*
13
* You should have received a copy of the GNU General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
15
*
16
* @author Fabian Reister ( fabian dot reister at kit dot edu )
17
* @author Christian R. G. Dreher ( c dot dreher at kit dot edu )
18
* @date 2021
19
* @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20
* GNU General Public License
21
*/
22
23
#pragma once
24
25
#include <experimental/memory>
26
#include <memory>
27
28
#include <VirtualRobot/VirtualRobot.h>
29
30
#include <
ArmarXCore/libraries/ArmarXCoreComponentPlugins/DebugObserverComponentPlugin.h
>
31
32
#include <
RobotAPI/components/ArViz/Client/ScopedClient.h
>
33
#include <
RobotAPI/libraries/aron/core/data/variant/forward_declarations.h
>
34
35
#include <
armarx/navigation/core/DynamicScene.h
>
36
#include <
armarx/navigation/core/StaticScene.h
>
37
#include <
armarx/navigation/core/Trajectory.h
>
38
#include <
armarx/navigation/core/types.h
>
39
40
#include "
core.h
"
41
42
namespace
armarx::viz
43
{
44
struct
Client
;
45
}
46
47
namespace
armarx::navigation::safety_guard
48
{
49
struct
SafetyGuardResult
50
{
51
core::TwistLimits
twistLimits
;
52
53
static
SafetyGuardResult
54
NoLimits
()
55
{
56
return
{.twistLimits = {.linear = std::numeric_limits<float>::max(),
57
.angular = std::numeric_limits<float>::max()}};
58
}
59
60
static
SafetyGuardResult
61
ZeroLimits
()
62
{
63
return
{.twistLimits = {.linear = 0, .angular = 0}};
64
}
65
};
66
67
struct
SafetyGuardParams
68
{
69
virtual
~SafetyGuardParams
() =
default
;
70
71
virtual
Algorithms
algorithm
()
const
= 0;
72
virtual
aron::data::DictPtr
toAron
()
const
= 0;
73
};
74
75
class
SafetyGuard
76
{
77
public
:
78
struct
Context
79
{
80
std::experimental::observer_ptr<viz::Client>
arviz
;
81
std::experimental::observer_ptr<DebugObserverComponentPluginUser>
debugObserver
;
82
};
83
84
SafetyGuard
(
const
core::Scene
&
scene
,
const
Context
& ctx);
85
virtual
~SafetyGuard
() =
default
;
86
87
virtual
SafetyGuardResult
computeSafetyLimits
(
const
Eigen::Vector2f& global_V_movement) = 0;
88
89
protected
:
90
const
core::Scene
&
scene
;
91
viz::ScopedClient
viz
;
92
93
Context
context
;
94
};
95
96
using
SafetyGuardPtr
= std::shared_ptr<SafetyGuard>;
97
}
// namespace armarx::navigation::safety_guard
DebugObserverComponentPlugin.h
DynamicScene.h
forward_declarations.h
ScopedClient.h
StaticScene.h
armarx::navigation::safety_guard::SafetyGuard::~SafetyGuard
virtual ~SafetyGuard()=default
armarx::navigation::safety_guard::SafetyGuard::computeSafetyLimits
virtual SafetyGuardResult computeSafetyLimits(const Eigen::Vector2f &global_V_movement)=0
armarx::navigation::safety_guard::SafetyGuard::SafetyGuard
SafetyGuard(const core::Scene &scene, const Context &ctx)
Definition
SafetyGuard.cpp:10
armarx::navigation::safety_guard::SafetyGuard::scene
const core::Scene & scene
Definition
SafetyGuard.h:90
armarx::navigation::safety_guard::SafetyGuard::context
Context context
Definition
SafetyGuard.h:93
armarx::viz::Client
Definition
Client.h:117
armarx::viz::ScopedClient
viz::Client that will delete (clear) committed layers when destroyed.
Definition
ScopedClient.h:45
std::experimental::observer_ptr
Definition
ManagedIceObject.h:53
armarx::aron::data::DictPtr
std::shared_ptr< Dict > DictPtr
Definition
Dict.h:42
armarx::navigation::safety_guard
This file is part of ArmarX.
Definition
fwd.h:55
armarx::navigation::safety_guard::Algorithms
Algorithms
Definition
core.h:31
armarx::navigation::safety_guard::SafetyGuardPtr
std::shared_ptr< SafetyGuard > SafetyGuardPtr
Definition
fwd.h:57
armarx::viz
This file is part of ArmarX.
Definition
ArVizStorage.cpp:423
Trajectory.h
types.h
core.h
armarx::navigation::core::Scene
Definition
types.h:67
armarx::navigation::core::TwistLimits
Definition
types.h:87
armarx::navigation::safety_guard::SafetyGuardParams
Definition
SafetyGuard.h:68
armarx::navigation::safety_guard::SafetyGuardParams::algorithm
virtual Algorithms algorithm() const =0
armarx::navigation::safety_guard::SafetyGuardParams::~SafetyGuardParams
virtual ~SafetyGuardParams()=default
armarx::navigation::safety_guard::SafetyGuardParams::toAron
virtual aron::data::DictPtr toAron() const =0
armarx::navigation::safety_guard::SafetyGuardResult
Definition
SafetyGuard.h:50
armarx::navigation::safety_guard::SafetyGuardResult::NoLimits
static SafetyGuardResult NoLimits()
Definition
SafetyGuard.h:54
armarx::navigation::safety_guard::SafetyGuardResult::twistLimits
core::TwistLimits twistLimits
Definition
SafetyGuard.h:51
armarx::navigation::safety_guard::SafetyGuardResult::ZeroLimits
static SafetyGuardResult ZeroLimits()
Definition
SafetyGuard.h:61
armarx::navigation::safety_guard::SafetyGuard::Context
Definition
SafetyGuard.h:79
armarx::navigation::safety_guard::SafetyGuard::Context::arviz
std::experimental::observer_ptr< viz::Client > arviz
Definition
SafetyGuard.h:80
armarx::navigation::safety_guard::SafetyGuard::Context::debugObserver
std::experimental::observer_ptr< DebugObserverComponentPluginUser > debugObserver
Definition
SafetyGuard.h:81
armarx
navigation
safety_guard
SafetyGuard.h
Generated by
1.13.2