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 <
RobotAPI/components/ArViz/Client/ScopedClient.h
>
31
#include <
RobotAPI/libraries/aron/core/data/variant/forward_declarations.h
>
32
33
#include <
armarx/navigation/core/DynamicScene.h
>
34
#include <
armarx/navigation/core/StaticScene.h
>
35
#include <
armarx/navigation/core/Trajectory.h
>
36
#include <
armarx/navigation/core/types.h
>
37
38
#include "
core.h
"
39
40
namespace
armarx::viz
41
{
42
struct
Client
;
43
}
44
45
namespace
armarx::navigation::safety_guard
46
{
47
struct
SafetyGuardResult
48
{
49
core::TwistLimits
twistLimits
;
50
51
static
SafetyGuardResult
52
NoLimits
()
53
{
54
return
{.
twistLimits
= {.
linear
=
std::numeric_limits<float>::max
(),
55
.angular =
std::numeric_limits<float>::max
()}};
56
}
57
58
static
SafetyGuardResult
59
ZeroLimits
()
60
{
61
return
{.
twistLimits
= {.
linear
= 0, .angular = 0}};
62
}
63
};
64
65
struct
SafetyGuardParams
66
{
67
virtual
~SafetyGuardParams
() =
default
;
68
69
virtual
Algorithms
algorithm
()
const
= 0;
70
virtual
aron::data::DictPtr
toAron
()
const
= 0;
71
};
72
73
class
SafetyGuard
74
{
75
public
:
76
struct
Context
77
{
78
std::experimental::observer_ptr<viz::Client>
arviz
;
79
};
80
81
SafetyGuard
(
const
core::Scene
&
scene
,
const
Context
& ctx);
82
virtual
~SafetyGuard
() =
default
;
83
84
virtual
SafetyGuardResult
computeSafetyLimits
() = 0;
85
86
protected
:
87
const
core::Scene
&
scene
;
88
viz::ScopedClient
viz
;
89
90
private
:
91
const
Context
context;
92
};
93
94
using
SafetyGuardPtr
= std::shared_ptr<SafetyGuard>;
95
}
// namespace armarx::navigation::safety_guard
armarx::navigation::safety_guard::SafetyGuardParams::algorithm
virtual Algorithms algorithm() const =0
armarx::navigation::safety_guard::SafetyGuard::SafetyGuard
SafetyGuard(const core::Scene &scene, const Context &ctx)
Definition:
SafetyGuard.cpp:10
ScopedClient.h
core.h
DynamicScene.h
armarx::navigation::safety_guard
This file is part of ArmarX.
Definition:
fwd.h:54
armarx::navigation::safety_guard::SafetyGuardResult::NoLimits
static SafetyGuardResult NoLimits()
Definition:
SafetyGuard.h:52
armarx::viz::ScopedClient
viz::Client that will delete (clear) committed layers when destroyed.
Definition:
ScopedClient.h:42
armarx::navigation::safety_guard::SafetyGuard::Context::arviz
std::experimental::observer_ptr< viz::Client > arviz
Definition:
SafetyGuard.h:78
StaticScene.h
armarx::navigation::core::TwistLimits::linear
float linear
Definition:
types.h:82
std::experimental::fundamentals_v2::observer_ptr
Definition:
ManagedIceObject.h:53
armarx::navigation::safety_guard::SafetyGuard::Context
Definition:
SafetyGuard.h:76
armarx::navigation::safety_guard::SafetyGuardResult::ZeroLimits
static SafetyGuardResult ZeroLimits()
Definition:
SafetyGuard.h:59
armarx::navigation::safety_guard::Algorithms
Algorithms
Definition:
core.h:30
armarx::navigation::safety_guard::SafetyGuard::computeSafetyLimits
virtual SafetyGuardResult computeSafetyLimits()=0
armarx::navigation::safety_guard::SafetyGuard::viz
viz::ScopedClient viz
Definition:
SafetyGuard.h:88
armarx::navigation::safety_guard::SafetyGuardResult
Definition:
SafetyGuard.h:47
forward_declarations.h
armarx::navigation::core::TwistLimits
Definition:
types.h:80
max
T max(T t1, T t2)
Definition:
gdiam.h:51
armarx::navigation::safety_guard::SafetyGuardResult::twistLimits
core::TwistLimits twistLimits
Definition:
SafetyGuard.h:49
armarx::navigation::safety_guard::SafetyGuardParams::~SafetyGuardParams
virtual ~SafetyGuardParams()=default
armarx::navigation::safety_guard::SafetyGuard::~SafetyGuard
virtual ~SafetyGuard()=default
armarx::navigation::safety_guard::SafetyGuardPtr
std::shared_ptr< SafetyGuard > SafetyGuardPtr
Definition:
fwd.h:57
armarx::navigation::core::Scene
Definition:
types.h:60
armarx::aron::data::DictPtr
std::shared_ptr< Dict > DictPtr
Definition:
Dict.h:41
armarx::navigation::safety_guard::SafetyGuardParams
Definition:
SafetyGuard.h:65
armarx::navigation::safety_guard::SafetyGuardParams::toAron
virtual aron::data::DictPtr toAron() const =0
Client
Definition:
Admin.cpp:26
armarx::navigation::safety_guard::SafetyGuard
Definition:
SafetyGuard.h:73
Trajectory.h
types.h
armarx::viz
This file is part of ArmarX.
Definition:
ArVizStorage.cpp:418
armarx::navigation::safety_guard::SafetyGuard::scene
const core::Scene & scene
Definition:
SafetyGuard.h:87
armarx
navigation
safety_guard
SafetyGuard.h
Generated on Sat Mar 29 2025 09:17:35 for armarx_documentation by
1.8.17