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 
32 
37 
38 #include "core.h"
39 
40 namespace armarx::viz
41 {
42  struct Client;
43 }
44 
46 {
48  {
50 
51  static SafetyGuardResult
53  {
55  .angular = std::numeric_limits<float>::max()}};
56  }
57 
58  static SafetyGuardResult
60  {
61  return {.twistLimits = {.linear = 0, .angular = 0}};
62  }
63  };
64 
66  {
67  virtual ~SafetyGuardParams() = default;
68 
69  virtual Algorithms algorithm() const = 0;
70  virtual aron::data::DictPtr toAron() const = 0;
71  };
72 
74  {
75  public:
76  struct Context
77  {
79  };
80 
81  SafetyGuard(const core::Scene& scene, const Context& ctx);
82  virtual ~SafetyGuard() = default;
83 
85 
86  protected:
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