tsid  1.8.0
Efficient Task Space Inverse Dynamics for Multi-body Systems based on Pinocchio
contact-6d.hpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2017 CNRS, NYU, MPI Tübingen
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_6d_hpp__
19 #define __invdyn_contact_6d_hpp__
20 
21 #include "tsid/deprecated.hh"
26 
27 namespace tsid {
28 namespace contacts {
29 class Contact6d : public ContactBase {
30  public:
31  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
32 
43 
44  Contact6d(const std::string& name, RobotWrapper& robot,
45  const std::string& frameName, ConstRefMatrix contactPoints,
46  ConstRefVector contactNormal, const double frictionCoefficient,
47  const double minNormalForce, const double maxNormalForce);
48 
49  TSID_DEPRECATED Contact6d(const std::string& name, RobotWrapper& robot,
50  const std::string& frameName,
51  ConstRefMatrix contactPoints,
52  ConstRefVector contactNormal,
53  const double frictionCoefficient,
54  const double minNormalForce,
55  const double maxNormalForce,
56  const double forceRegWeight);
57 
59  unsigned int n_motion() const override;
60 
62  unsigned int n_force() const override;
63 
66  Data& data) override;
67 
70  const Data& data) override;
71 
72  const Matrix& getForceGeneratorMatrix() override;
73 
75  double t, ConstRefVector q, ConstRefVector v, const Data& data) override;
76 
77  const TaskSE3Equality& getMotionTask() const override;
78  const ConstraintBase& getMotionConstraint() const override;
79  const ConstraintInequality& getForceConstraint() const override;
80  const ConstraintEquality& getForceRegularizationTask() const override;
81 
82  double getNormalForce(ConstRefVector f) const override;
83  double getMinNormalForce() const override;
84  double getMaxNormalForce() const override;
85  const Matrix3x& getContactPoints() const override;
86 
87  const Vector& Kp() const;
88  const Vector& Kd() const;
89  void Kp(ConstRefVector Kp);
90  void Kd(ConstRefVector Kp);
91 
92  bool setContactPoints(ConstRefMatrix contactPoints);
93  bool setContactNormal(ConstRefVector contactNormal);
94 
95  bool setFrictionCoefficient(double frictionCoefficient);
96  bool setMinNormalForce(double minNormalForce) override;
97  bool setMaxNormalForce(double maxNormalForce) override;
98  void setReference(const SE3& ref);
99  void setForceReference(ConstRefVector& f_ref);
101 
102  private:
103  void init();
104 
105  protected:
109 
117  double m_mu;
118  double m_fMin;
119  double m_fMax;
121 };
122 } // namespace contacts
123 } // namespace tsid
124 
125 #endif // ifndef __invdyn_contact_6d_hpp__
Definition: contact-6d.hpp:29
math::ConstraintInequality ConstraintInequality
Definition: contact-6d.hpp:40
const ConstraintBase & getMotionConstraint() const override
Definition: contact-6d.cpp:239
bool setContactNormal(ConstRefVector contactNormal)
Definition: contact-6d.cpp:163
const ConstraintInequality & computeForceTask(double t, ConstRefVector q, ConstRefVector v, const Data &data) override
Definition: contact-6d.cpp:220
void setForceReference(ConstRefVector &f_ref)
Definition: contact-6d.cpp:206
Matrix3x m_contactPoints
Definition: contact-6d.hpp:113
Vector3 m_contactNormal
Definition: contact-6d.hpp:114
Vector6 m_fRef
Definition: contact-6d.hpp:115
const ConstraintInequality & getForceConstraint() const override
Definition: contact-6d.cpp:243
const Vector & Kp() const
Definition: contact-6d.cpp:145
void updateForceRegularizationTask()
Definition: contact-6d.cpp:124
ConstraintInequality m_forceInequality
Definition: contact-6d.hpp:111
double getNormalForce(ConstRefVector f) const override
Definition: contact-6d.cpp:110
double m_fMax
Definition: contact-6d.hpp:119
double getMaxNormalForce() const override
Definition: contact-6d.cpp:235
unsigned int n_force() const override
Return the number of force variables.
Definition: contact-6d.cpp:143
const Matrix & getForceGeneratorMatrix() override
Definition: contact-6d.cpp:227
const ConstraintEquality & computeForceRegularizationTask(double t, ConstRefVector q, ConstRefVector v, const Data &data) override
Definition: contact-6d.cpp:229
void setReference(const SE3 &ref)
Definition: contact-6d.cpp:211
const TaskSE3Equality & getMotionTask() const override
Definition: contact-6d.cpp:237
const ConstraintEquality & getForceRegularizationTask() const override
Definition: contact-6d.cpp:247
Matrix m_forceGenMat
Definition: contact-6d.hpp:120
ConstraintEquality m_forceRegTask
Definition: contact-6d.hpp:112
double m_mu
Definition: contact-6d.hpp:117
Contact6d(const std::string &name, RobotWrapper &robot, const std::string &frameName, ConstRefMatrix contactPoints, ConstRefVector contactNormal, const double frictionCoefficient, const double minNormalForce, const double maxNormalForce)
Definition: contact-6d.cpp:29
bool setMaxNormalForce(double maxNormalForce) override
Definition: contact-6d.cpp:195
void updateForceGeneratorMatrix()
Definition: contact-6d.cpp:132
Vector6 m_weightForceRegTask
Definition: contact-6d.hpp:116
const ConstraintBase & computeMotionTask(double t, ConstRefVector q, ConstRefVector v, Data &data) override
Definition: contact-6d.cpp:213
math::ConstraintEquality ConstraintEquality
Definition: contact-6d.hpp:41
double getMinNormalForce() const override
Definition: contact-6d.cpp:234
const Vector & Kd() const
Definition: contact-6d.cpp:146
pinocchio::SE3 SE3
Definition: contact-6d.hpp:42
tasks::TaskSE3Equality TaskSE3Equality
Definition: contact-6d.hpp:39
TaskSE3Equality m_motionTask
Definition: contact-6d.hpp:110
math::Vector6 Vector6
Definition: contact-6d.hpp:36
unsigned int n_motion() const override
Return the number of motion constraints.
Definition: contact-6d.cpp:142
double m_fMin
Definition: contact-6d.hpp:118
bool setMinNormalForce(double minNormalForce) override
Definition: contact-6d.cpp:183
void updateForceInequalityConstraints()
Definition: contact-6d.cpp:76
bool setFrictionCoefficient(double frictionCoefficient)
Definition: contact-6d.cpp:173
math::Matrix3x Matrix3x
Definition: contact-6d.hpp:35
void setRegularizationTaskWeightVector(ConstRefVector &w)
Definition: contact-6d.cpp:119
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef math::ConstRefMatrix ConstRefMatrix
Definition: contact-6d.hpp:33
math::Vector3 Vector3
Definition: contact-6d.hpp:37
math::ConstRefVector ConstRefVector
Definition: contact-6d.hpp:34
const Matrix3x & getContactPoints() const override
Definition: contact-6d.cpp:161
math::Vector Vector
Definition: contact-6d.hpp:38
bool setContactPoints(ConstRefMatrix contactPoints)
Definition: contact-6d.cpp:150
Base template of a Contact.
Definition: contact-base.hpp:31
const std::string & name() const
Definition: contact-base.cpp:25
math::Matrix Matrix
Definition: contact-base.hpp:39
pinocchio::Data Data
Definition: contact-base.hpp:43
Abstract class representing a linear equality/inequality constraint. Equality constraints are represe...
Definition: constraint-base.hpp:35
Definition: constraint-equality.hpp:26
Definition: constraint-inequality.hpp:26
Wrapper for a robot based on pinocchio.
Definition: robot-wrapper.hpp:37
Definition: task-se3-equality.hpp:31
#define TSID_DEPRECATED
Definition: deprecated.hh:37
Eigen::Matrix< Scalar, 3, Eigen::Dynamic > Matrix3x
Definition: fwd.hpp:42
Eigen::Matrix< Scalar, 3, 1 > Vector3
Definition: fwd.hpp:40
Eigen::Matrix< Scalar, 6, 1 > Vector6
Definition: fwd.hpp:41
const Eigen::Ref< const Matrix > ConstRefMatrix
Definition: fwd.hpp:51
const Eigen::Ref< const Vector > ConstRefVector
Definition: fwd.hpp:48
Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > Vector
Definition: fwd.hpp:35
pinocchio::SE3 SE3
Definition: trajectory-base.hpp:31
Definition: constraint-bound.hpp:25