hpp-constraints  4.10.1
Definition of basic geometric constraints for motion planning
explicit.hh
Go to the documentation of this file.
1 // Copyright (c) 2015, LAAS-CNRS
2 // Authors: Florent Lamiraux
3 //
4 // This file is part of hpp-constraints.
5 // hpp-constraints is free software: you can redistribute it
6 // and/or modify it under the terms of the GNU Lesser General Public
7 // License as published by the Free Software Foundation, either version
8 // 3 of the License, or (at your option) any later version.
9 //
10 // hpp-constraints is distributed in the hope that it will be
11 // useful, but WITHOUT ANY WARRANTY; without even the implied warranty
12 // of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // General Lesser Public License for more details. You should have
14 // received a copy of the GNU Lesser General Public License along with
15 // hpp-constraints. If not, see <http://www.gnu.org/licenses/>.
16 
17 #ifndef HPP_CONSTRAINTS_EXPLICIT_HH
18 # define HPP_CONSTRAINTS_EXPLICIT_HH
19 
21 
22 namespace hpp {
23  namespace constraints {
26 
119  {
120  public:
122  virtual ImplicitPtr_t copy () const;
123 
141  static ExplicitPtr_t create
142  (const DevicePtr_t& robot,
143  const DifferentiableFunctionPtr_t& function,
144  const segments_t& inputConf,
145  const segments_t& outputConf,
146  const segments_t& inputVelocity,
147  const segments_t& outputVelocity,
148  const ComparisonTypes_t& comp = ComparisonTypes_t())
150 
166  static ExplicitPtr_t create
167  (const LiegroupSpacePtr_t& configSpace,
168  const DifferentiableFunctionPtr_t& function,
169  const segments_t& inputConf,
170  const segments_t& outputConf,
171  const segments_t& inputVelocity,
172  const segments_t& outputVelocity,
173  const ComparisonTypes_t& comp = ComparisonTypes_t());
174 
176  static ExplicitPtr_t createCopy (const ExplicitPtr_t& other);
177 
181  {
182  return inputToOutput_;
183  }
184 
186  const segments_t& outputConf () const
187  {
188  return outputConf_;
189  }
191  const segments_t& outputVelocity () const
192  {
193  return outputVelocity_;
194  }
196  const segments_t& inputConf () const
197  {
198  return inputConf_;
199  }
201  const segments_t& inputVelocity () const
202  {
203  return inputVelocity_;
204  }
213  virtual void outputValue(LiegroupElementRef result, vectorIn_t qin,
214  vectorIn_t rhs) const;
215 
226  virtual void jacobianOutputValue(vectorIn_t qin, LiegroupElementConstRef
227  f_value, vectorIn_t rhs,
228  matrixOut_t jacobian) const;
229  protected:
247  Explicit
248  (const DevicePtr_t& robot, const DifferentiableFunctionPtr_t& function,
249  const segments_t& inputConf,
250  const segments_t& outputConf,
251  const segments_t& inputVelocity,
252  const segments_t& outputVelocity,
254 
270  Explicit
271  (const LiegroupSpacePtr_t& configSpace,
272  const DifferentiableFunctionPtr_t& function,
273  const segments_t& inputConf,
274  const segments_t& outputConf,
275  const segments_t& inputVelocity,
276  const segments_t& outputVelocity,
277  const ComparisonTypes_t& comp);
278 
285  Explicit
286  (const DifferentiableFunctionPtr_t& implicitFunction,
287  const DifferentiableFunctionPtr_t& function,
288  const segments_t& inputConf,
289  const segments_t& outputConf,
290  const segments_t& inputVelocity,
291  const segments_t& outputVelocity,
292  const ComparisonTypes_t& comp);
293 
295  Explicit (const Explicit& other);
296 
297  // Store weak pointer to itself
298  void init (const ExplicitWkPtr_t& weak);
299  protected:
300  // Relation between input and output configuration variables
306 
307  Explicit() {}
308  private:
309  ExplicitWkPtr_t weak_;
310 
311  HPP_SERIALIZABLE();
312  }; // class Explicit
314  } // namespace constraints
315 } // namespace hpp
316 
317 #endif // HPP_CONSTRAINTS_EXPLICIT_HH
segments_t inputConf_
Definition: explicit.hh:302
pinocchio::vectorIn_t vectorIn_t
Definition: fwd.hh:48
DifferentiableFunctionPtr_t inputToOutput_
Definition: explicit.hh:301
const segments_t & outputVelocity() const
Get output degrees of freedom.
Definition: explicit.hh:191
Definition: active-set-differentiable-function.hh:24
pinocchio::LiegroupSpacePtr_t LiegroupSpacePtr_t
Definition: fwd.hh:57
pinocchio::DevicePtr_t DevicePtr_t
Definition: fwd.hh:97
pinocchio::LiegroupElementConstRef LiegroupElementConstRef
Definition: fwd.hh:55
DifferentiableFunctionSet DifferentiableFunctionStack HPP_CONSTRAINTS_DEPRECATED
Definition: fwd.hh:105
std::vector< segment_t > segments_t
Definition: fwd.hh:72
Definition: explicit.hh:118
const segments_t & inputConf() const
Get input configuration variables.
Definition: explicit.hh:196
std::vector< ComparisonType > ComparisonTypes_t
Definition: fwd.hh:176
segments_t outputVelocity_
Definition: explicit.hh:305
boost::shared_ptr< Explicit > ExplicitPtr_t
Definition: fwd.hh:179
DifferentiableFunctionPtr_t explicitFunction() const
Definition: explicit.hh:180
const segments_t & inputVelocity() const
Get input degrees of freedom.
Definition: explicit.hh:201
boost::shared_ptr< DifferentiableFunction > DifferentiableFunctionPtr_t
Definition: fwd.hh:101
#define HPP_CONSTRAINTS_DLLAPI
Definition: config.hh:64
pinocchio::LiegroupElementRef LiegroupElementRef
Definition: fwd.hh:54
Explicit()
Definition: explicit.hh:307
Eigen::Ref< matrix_t > matrixOut_t
Definition: fwd.hh:46
const segments_t & outputConf() const
Get output configuration variables.
Definition: explicit.hh:186
segments_t outputConf_
Definition: explicit.hh:303
Definition: implicit.hh:99
boost::shared_ptr< Implicit > ImplicitPtr_t
Definition: fwd.hh:163
segments_t inputVelocity_
Definition: explicit.hh:304