contact-base.hpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2017 CNRS
3 //
4 // This file is part of tsid
5 // tsid 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 // tsid is distributed in the hope that it will be
10 // useful, but WITHOUT ANY WARRANTY; without even the implied warranty
11 // of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // General Lesser Public License for more details. You should have
13 // received a copy of the GNU Lesser General Public License along with
14 // tsid If not, see
15 // <http://www.gnu.org/licenses/>.
16 //
17 
18 #ifndef __invdyn_contact_base_hpp__
19 #define __invdyn_contact_base_hpp__
20 
21 #include "tsid/math/fwd.hpp"
22 #include "tsid/robots/fwd.hpp"
24 
25 
26 namespace tsid
27 {
28  namespace contacts
29  {
30 
35  {
36  public:
37  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
38 
48 
49  ContactBase(const std::string & name,
50  RobotWrapper & robot);
51 
52  const std::string & name() const;
53 
54  void name(const std::string & name);
55 
57  virtual unsigned int n_motion() const = 0;
58 
60  virtual unsigned int n_force() const = 0;
61 
62  virtual const ConstraintBase & computeMotionTask(const double t,
63  ConstRefVector q,
64  ConstRefVector v,
65  Data & data) = 0;
66 
67  virtual const ConstraintInequality & computeForceTask(const double t,
68  ConstRefVector q,
69  ConstRefVector v,
70  const Data & data) = 0;
71 
72  virtual const Matrix & getForceGeneratorMatrix() = 0;
73 
74  virtual const ConstraintEquality & computeForceRegularizationTask(const double t,
75  ConstRefVector q,
76  ConstRefVector v,
77  const Data & data) = 0;
78 
79  virtual const TaskSE3Equality & getMotionTask() const = 0;
80  virtual const ConstraintBase & getMotionConstraint() const = 0;
81  virtual const ConstraintInequality & getForceConstraint() const = 0;
82  virtual const ConstraintEquality & getForceRegularizationTask() const = 0;
83 
84  virtual double getMinNormalForce() const = 0;
85  virtual double getMaxNormalForce() const = 0;
86  virtual bool setMinNormalForce(const double minNormalForce) = 0;
87  virtual bool setMaxNormalForce(const double maxNormalForce) = 0;
88  virtual double getNormalForce(ConstRefVector f) const = 0;
89  virtual const Matrix3x & getContactPoints() const = 0;
90 
91  protected:
92  std::string m_name;
94  RobotWrapper & m_robot;
95  };
96 
97  }
98 }
99 
100 #endif // ifndef __invdyn_contact_base_hpp__
Definition: constraint-equality.hpp:28
ContactBase(const std::string &name, RobotWrapper &robot)
Definition: contact-base.cpp:24
math::Matrix3x Matrix3x
Definition: contact-base.hpp:44
virtual double getNormalForce(ConstRefVector f) const =0
virtual const Matrix3x & getContactPoints() const =0
virtual const TaskSE3Equality & getMotionTask() const =0
math::ConstRefVector ConstRefVector
Definition: contact-base.hpp:42
virtual const ConstraintEquality & getForceRegularizationTask() const =0
Eigen::Matrix< Scalar, 3, Eigen::Dynamic > Matrix3x
Definition: fwd.hpp:44
Definition: task-se3-equality.hpp:33
virtual const ConstraintEquality & computeForceRegularizationTask(const double t, ConstRefVector q, ConstRefVector v, const Data &data)=0
virtual const ConstraintInequality & computeForceTask(const double t, ConstRefVector q, ConstRefVector v, const Data &data)=0
Base template of a Contact.
Definition: contact-base.hpp:34
robots::RobotWrapper RobotWrapper
Definition: contact-base.hpp:47
math::Matrix Matrix
Definition: contact-base.hpp:43
tasks::TaskSE3Equality TaskSE3Equality
Definition: contact-base.hpp:45
const Eigen::Ref< const Vector > ConstRefVector
Definition: fwd.hpp:50
virtual const ConstraintBase & getMotionConstraint() const =0
virtual bool setMaxNormalForce(const double maxNormalForce)=0
const std::string & name() const
Definition: contact-base.cpp:30
RobotWrapper & m_robot
Reference on the robot model.
Definition: contact-base.hpp:94
virtual const ConstraintBase & computeMotionTask(const double t, ConstRefVector q, ConstRefVector v, Data &data)=0
virtual bool setMinNormalForce(const double minNormalForce)=0
Wrapper for a robot based on pinocchio.
Definition: robot-wrapper.hpp:40
Definition: constraint-inequality.hpp:28
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef math::ConstraintBase ConstraintBase
Definition: contact-base.hpp:39
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > Matrix
Definition: fwd.hpp:38
math::ConstraintInequality ConstraintInequality
Definition: contact-base.hpp:40
pinocchio::Data Data
Definition: contact-base.hpp:46
virtual double getMaxNormalForce() const =0
virtual double getMinNormalForce() const =0
virtual unsigned int n_force() const =0
Return the number of force variables.
Definition: constraint-bound.hpp:26
math::ConstraintEquality ConstraintEquality
Definition: contact-base.hpp:41
virtual const Matrix & getForceGeneratorMatrix()=0
Abstract class representing a linear equality/inequality constraint. Equality constraints are represe...
Definition: constraint-base.hpp:36
virtual const ConstraintInequality & getForceConstraint() const =0
std::string m_name
Definition: contact-base.hpp:92
virtual unsigned int n_motion() const =0
Return the number of motion constraints.
pinocchio::Data Data
Definition: inverse-dynamics-formulation-acc-force.cpp:29