limiter.h
Go to the documentation of this file.
1 /*
2  * Copyright 2017 Fraunhofer Institute for Manufacturing Engineering and Automation (IPA)
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 
18 #ifndef COB_TWIST_CONTROLLER_LIMITERS_LIMITER_H
19 #define COB_TWIST_CONTROLLER_LIMITERS_LIMITER_H
20 
21 #include <vector>
22 
24 
25 #define LIMIT_SAFETY_THRESHOLD 0.1/180.0*M_PI
26 
27 /* BEGIN LimiterJointContainer *******************************************************************************/
30 {
31  public:
36  virtual KDL::Twist enforceLimits(const KDL::Twist& v_in) const;
37  virtual KDL::JntArray enforceLimits(const KDL::JntArray& q_dot_ik, const KDL::JntArray& q) const;
38 
42  void init();
43 
44  virtual ~LimiterContainer();
45 
46  explicit LimiterContainer(const LimiterParams& limiter_params) :
47  limiter_params_(limiter_params)
48  {}
49 
50  protected:
52 
53  std::vector<const LimiterCartesianBase*> input_limiters_;
54  std::vector<const LimiterJointBase*> output_limiters_;
55  typedef std::vector<const LimiterCartesianBase*>::const_iterator input_LimIter_t;
56  typedef std::vector<const LimiterJointBase*>::const_iterator output_LimIter_t;
57 
62  void add(const LimiterCartesianBase* lb);
63  void add(const LimiterJointBase* lb);
64 
68  void eraseAll();
69 };
70 /* END LimiterJointContainer *****************************************************************************************/
71 
72 /* BEGIN LimiterAllJointPositions *******************************************************************************/
75 {
76  public:
81  virtual KDL::JntArray enforceLimits(const KDL::JntArray& q_dot_ik, const KDL::JntArray& q) const;
82 
83  explicit LimiterAllJointPositions(const LimiterParams& limiter_params) :
84  LimiterJointBase(limiter_params)
85  {}
86 };
87 /* END LimiterAllJointPositions **********************************************************************************/
88 
89 /* BEGIN LimiterAllJointVelocities *******************************************************************************/
92 {
93  public:
98  virtual KDL::JntArray enforceLimits(const KDL::JntArray& q_dot_ik, const KDL::JntArray& q) const;
99 
100  explicit LimiterAllJointVelocities(const LimiterParams& limiter_params) :
101  LimiterJointBase(limiter_params)
102  {}
103 };
104 /* END LimiterAllJointVelocities *********************************************************************************/
105 
106 /* BEGIN LimiterAllJointAccelerations ****************************************************************************/
109 {
110  public:
115  virtual KDL::JntArray enforceLimits(const KDL::JntArray& q_dot_ik, const KDL::JntArray& q) const;
116 
117  explicit LimiterAllJointAccelerations(const LimiterParams& limiter_params) :
118  LimiterJointBase(limiter_params)
119  {}
120 };
121 /* END LimiterAllJointAccelerations ******************************************************************************/
122 
123 /* BEGIN LimiterAllCartesianVelocities ***********************************************************************/
126 {
127  public:
132  virtual KDL::Twist enforceLimits(const KDL::Twist& v_in) const;
133 
134  explicit LimiterAllCartesianVelocities(const LimiterParams& limiter_params) :
135  LimiterCartesianBase(limiter_params)
136  {}
137 };
138 /* END LimiterAllCartesianVelocities *************************************************************************/
139 
140 /* BEGIN LimiterIndividualJointPositions *************************************************************************/
143 {
144  public:
149  virtual KDL::JntArray enforceLimits(const KDL::JntArray& q_dot_ik, const KDL::JntArray& q) const;
150 
151  explicit LimiterIndividualJointPositions(const LimiterParams& limiter_params) :
152  LimiterJointBase(limiter_params)
153  {}
154 };
155 /* END LimiterIndividualJointPositions **************************************************************************/
156 
157 /* BEGIN LimiterIndividualJointVelocities ***********************************************************************/
160 {
161  public:
166  virtual KDL::JntArray enforceLimits(const KDL::JntArray& q_dot_ik, const KDL::JntArray& q) const;
167 
168  explicit LimiterIndividualJointVelocities(const LimiterParams& limiter_params) :
169  LimiterJointBase(limiter_params)
170  {}
171 };
172 /* END LimiterIndividualJointVelocities *************************************************************************/
173 
174 /* BEGIN LimiterIndividualJointAccelerations ***********************************************************************/
177 {
178  public:
183  virtual KDL::JntArray enforceLimits(const KDL::JntArray& q_dot_ik, const KDL::JntArray& q) const;
184 
185  explicit LimiterIndividualJointAccelerations(const LimiterParams& limiter_params) :
186  LimiterJointBase(limiter_params)
187  {}
188 };
189 /* END LimiterIndividualJointAccelerations *************************************************************************/
190 
191 /* BEGIN LimiterIndividualCartesianVelocities ***********************************************************************/
194 {
195  public:
200  virtual KDL::Twist enforceLimits(const KDL::Twist& v_in) const;
201 
202  explicit LimiterIndividualCartesianVelocities(const LimiterParams& limiter_params) :
203  LimiterCartesianBase(limiter_params)
204  {}
205 };
206 /* END LimiterIndividualCartesianVelocities *************************************************************************/
207 
208 #endif // COB_TWIST_CONTROLLER_LIMITERS_LIMITER_H
Class for joint velocity limiter (all scaled to keep direction), implementing interface methods...
Definition: limiter.h:91
LimiterIndividualJointVelocities(const LimiterParams &limiter_params)
Definition: limiter.h:168
virtual ~LimiterContainer()
Definition: limiter.cpp:136
const LimiterParams & limiter_params_
Definition: limiter.h:51
LimiterIndividualJointAccelerations(const LimiterParams &limiter_params)
Definition: limiter.h:185
Container for limiters, implementing interface methods.
Definition: limiter.h:29
std::vector< const LimiterJointBase * >::const_iterator output_LimIter_t
Definition: limiter.h:56
std::vector< const LimiterCartesianBase * > input_limiters_
Definition: limiter.h:53
LimiterAllJointPositions(const LimiterParams &limiter_params)
Definition: limiter.h:83
Class for a limiter, declaring a method to limit joint positions individually.
Definition: limiter.h:142
Base class for joint/output limiters, defining interface methods.
Definition: limiter_base.h:24
LimiterAllJointAccelerations(const LimiterParams &limiter_params)
Definition: limiter.h:117
virtual KDL::Twist enforceLimits(const KDL::Twist &v_in) const
Definition: limiter.cpp:27
LimiterIndividualJointPositions(const LimiterParams &limiter_params)
Definition: limiter.h:151
LimiterIndividualCartesianVelocities(const LimiterParams &limiter_params)
Definition: limiter.h:202
Class for limiting the cartesian velocities commands in order to guarantee a BIBO system (all scaled ...
Definition: limiter.h:125
std::vector< const LimiterCartesianBase * >::const_iterator input_LimIter_t
Definition: limiter.h:55
LimiterAllCartesianVelocities(const LimiterParams &limiter_params)
Definition: limiter.h:134
LimiterContainer(const LimiterParams &limiter_params)
Definition: limiter.h:46
Class for joint acceleration limiter (individually scaled -> changes direction), implementing interfa...
Definition: limiter.h:176
std::vector< const LimiterJointBase * > output_limiters_
Definition: limiter.h:54
Class for joint velocity limiter (individually scaled -> changes direction), implementing interface m...
Definition: limiter.h:159
Class for limiting the cartesian velocities commands in order to guarantee a BIBO system (individuall...
Definition: limiter.h:193
void add(const LimiterCartesianBase *lb)
Definition: limiter.cpp:124
LimiterAllJointVelocities(const LimiterParams &limiter_params)
Definition: limiter.h:100
Class for joint acceleration limiter (all scaled to keep direction), implementing interface methods...
Definition: limiter.h:108
Class for limiters, declaring the method to limit all joint positions.
Definition: limiter.h:74
Base class for cartesian/input limiters, defining interface methods.
Definition: limiter_base.h:48


cob_twist_controller
Author(s): Felix Messmer , Marco Bezzon , Christoph Mark , Francisco Moreno
autogenerated on Thu Apr 8 2021 02:40:00