contacts/contact-two-frame-positions.hpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2023 MIPT
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_two_frame_positions_hpp__
19 #define __invdyn_contact_two_frame_positions_hpp__
20 
26 
27 namespace tsid {
28 namespace contacts {
30  public:
31  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
32 
44 
45  ContactTwoFramePositions(const std::string& name, RobotWrapper& robot,
46  const std::string& frameName1,
47  const std::string& frameName2,
48  const double minNormalForce,
49  const double maxNormalForce);
50 
52  unsigned int n_motion() const override;
53 
55  unsigned int n_force() const override;
56 
59  Data& data) override;
60 
63  const Data& data) override;
64 
65  const Matrix& getForceGeneratorMatrix() override;
66 
68  double t, ConstRefVector q, ConstRefVector v, const Data& data) override;
69 
70  const TaskTwoFramesEquality& getMotionTask() const override;
71  const ConstraintBase& getMotionConstraint() const override;
72  const ConstraintInequality& getForceConstraint() const override;
73  const ConstraintEquality& getForceRegularizationTask() const override;
74  double getMotionTaskWeight() const;
75  const Matrix3x& getContactPoints() const override;
76 
77  double getNormalForce(ConstRefVector f) const override;
78  double getMinNormalForce() const override;
79  double getMaxNormalForce() const override;
80 
81  const Vector&
82  Kp(); // cannot be const because it set a member variable inside
83  const Vector&
84  Kd(); // cannot be const because it set a member variable inside
85  void Kp(ConstRefVector Kp);
86  void Kd(ConstRefVector Kp);
87 
89 
90  bool setFrictionCoefficient(const double frictionCoefficient);
91  bool setMinNormalForce(const double minNormalForce) override;
92  bool setMaxNormalForce(const double maxNormalForce) override;
93  bool setMotionTaskWeight(const double w);
94  void setForceReference(ConstRefVector& f_ref);
96 
97  protected:
101 
108  Vector m_Kp3, m_Kd3; // gain vectors to be returned by reference
109  double m_fMin;
110  double m_fMax;
114 };
115 } // namespace contacts
116 } // namespace tsid
117 
118 #endif // ifndef __invdyn_contact_two_frame_positions_hpp__
demo_quadruped.v
v
Definition: demo_quadruped.py:80
tsid::contacts::ContactTwoFramePositions::ContactTwoFramePositions
ContactTwoFramePositions(const std::string &name, RobotWrapper &robot, const std::string &frameName1, const std::string &frameName2, const double minNormalForce, const double maxNormalForce)
Definition: src/contacts/contact-two-frame-positions.cpp:29
tsid::contacts::ContactTwoFramePositions::updateForceInequalityConstraints
void updateForceInequalityConstraints()
Definition: src/contacts/contact-two-frame-positions.cpp:60
tsid::contacts::ContactBase
Base template of a Contact.
Definition: contact-base.hpp:31
tsid::contacts::ContactTwoFramePositions::getMotionTaskWeight
double getMotionTaskWeight() const
tsid::contacts::ContactTwoFramePositions::getForceGeneratorMatrix
const Matrix & getForceGeneratorMatrix() override
Definition: src/contacts/contact-two-frame-positions.cpp:162
pinocchio::DataTpl
tsid::contacts::ContactTwoFramePositions::Kd
const Vector & Kd()
Definition: src/contacts/contact-two-frame-positions.cpp:107
tsid::contacts::ContactTwoFramePositions::computeMotionTask
const ConstraintBase & computeMotionTask(double t, ConstRefVector q, ConstRefVector v, Data &data) override
Definition: src/contacts/contact-two-frame-positions.cpp:152
tsid::math::ConstraintEquality
Definition: math/constraint-equality.hpp:26
tsid::contacts::ContactTwoFramePositions::m_forceRegTask
ConstraintEquality m_forceRegTask
Definition: contacts/contact-two-frame-positions.hpp:104
tsid::contacts::ContactTwoFramePositions::getMotionConstraint
const ConstraintBase & getMotionConstraint() const override
Definition: src/contacts/contact-two-frame-positions.cpp:181
tsid::contacts::ContactTwoFramePositions::m_fMin
double m_fMin
Definition: contacts/contact-two-frame-positions.hpp:109
tsid::contacts::ContactTwoFramePositions::updateForceGeneratorMatrix
void updateForceGeneratorMatrix()
Definition: src/contacts/contact-two-frame-positions.cpp:93
tsid::math::ConstraintBase
Abstract class representing a linear equality/inequality constraint. Equality constraints are represe...
Definition: constraint-base.hpp:35
tsid::contacts::ContactTwoFramePositions::n_force
unsigned int n_force() const override
Return the number of force variables.
Definition: src/contacts/contact-two-frame-positions.cpp:100
tsid::contacts::ContactBase::Matrix
math::Matrix Matrix
Definition: contact-base.hpp:39
tsid::contacts::ContactTwoFramePositions::m_forceInequality
ConstraintInequality m_forceInequality
Definition: contacts/contact-two-frame-positions.hpp:103
pinocchio::SE3
context::SE3 SE3
setup.data
data
Definition: setup.in.py:48
tsid::contacts::ContactTwoFramePositions::m_motionTaskWeight
double m_motionTaskWeight
Definition: contacts/contact-two-frame-positions.hpp:112
tsid::contacts::ContactTwoFramePositions::setForceReference
void setForceReference(ConstRefVector &f_ref)
Definition: src/contacts/contact-two-frame-positions.cpp:147
demo_quadruped.robot
robot
Definition: demo_quadruped.py:51
tsid::contacts::ContactTwoFramePositions::getMinNormalForce
double getMinNormalForce() const override
Definition: src/contacts/contact-two-frame-positions.cpp:174
tsid::math::Matrix3x
Eigen::Matrix< Scalar, 3, Eigen::Dynamic > Matrix3x
Definition: math/fwd.hpp:42
tsid::contacts::ContactTwoFramePositions::m_forceGenMat
Matrix m_forceGenMat
Definition: contacts/contact-two-frame-positions.hpp:113
tsid::contacts::ContactTwoFramePositions::ConstRefVector
math::ConstRefVector ConstRefVector
Definition: contacts/contact-two-frame-positions.hpp:34
tsid::contacts::ContactTwoFramePositions::m_motionTask
TaskTwoFramesEquality m_motionTask
Definition: contacts/contact-two-frame-positions.hpp:102
constraint-equality.hpp
tsid::contacts::ContactTwoFramePositions::setMaxNormalForce
bool setMaxNormalForce(const double maxNormalForce) override
Definition: src/contacts/contact-two-frame-positions.cpp:141
tsid::contacts::ContactTwoFramePositions::getForceConstraint
const ConstraintInequality & getForceConstraint() const override
Definition: src/contacts/contact-two-frame-positions.cpp:185
tsid::contacts::ContactTwoFramePositions::m_regularizationTaskWeight
double m_regularizationTaskWeight
Definition: contacts/contact-two-frame-positions.hpp:111
tsid::math::Vector6
Eigen::Matrix< Scalar, 6, 1 > Vector6
Definition: math/fwd.hpp:41
tsid::contacts::ContactTwoFramePositions::ConstRefMatrix
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef math::ConstRefMatrix ConstRefMatrix
Definition: contacts/contact-two-frame-positions.hpp:33
tsid::contacts::ContactTwoFramePositions::m_weightForceRegTask
Vector3 m_weightForceRegTask
Definition: contacts/contact-two-frame-positions.hpp:106
task-two-frames-equality.hpp
demo_quadruped.q
q
Definition: demo_quadruped.py:74
tsid::contacts::ContactTwoFramePositions::m_Kp3
Vector m_Kp3
Definition: contacts/contact-two-frame-positions.hpp:108
tsid::contacts::ContactTwoFramePositions::getNormalForce
double getNormalForce(ConstRefVector f) const override
Definition: src/contacts/contact-two-frame-positions.cpp:71
tsid::contacts::ContactTwoFramePositions::ConstraintEquality
math::ConstraintEquality ConstraintEquality
Definition: contacts/contact-two-frame-positions.hpp:42
tsid::contacts::ContactTwoFramePositions
Definition: contacts/contact-two-frame-positions.hpp:29
tsid::contacts::ContactTwoFramePositions::m_fRef
Vector3 m_fRef
Definition: contacts/contact-two-frame-positions.hpp:105
tsid::contacts::ContactTwoFramePositions::updateForceRegularizationTask
void updateForceRegularizationTask()
Definition: src/contacts/contact-two-frame-positions.cpp:85
tsid::contacts::ContactTwoFramePositions::computeForceRegularizationTask
const ConstraintEquality & computeForceRegularizationTask(double t, ConstRefVector q, ConstRefVector v, const Data &data) override
Definition: src/contacts/contact-two-frame-positions.cpp:167
tsid::contacts::ContactTwoFramePositions::m_fMax
double m_fMax
Definition: contacts/contact-two-frame-positions.hpp:110
tsid::contacts::ContactTwoFramePositions::m_Kd3
Vector m_Kd3
Definition: contacts/contact-two-frame-positions.hpp:108
tsid::contacts::ContactTwoFramePositions::getMaxNormalForce
double getMaxNormalForce() const override
Definition: src/contacts/contact-two-frame-positions.cpp:175
tsid::contacts::ContactTwoFramePositions::setFrictionCoefficient
bool setFrictionCoefficient(const double frictionCoefficient)
Definition: src/contacts/contact-two-frame-positions.cpp:130
task-se3-equality.hpp
tsid::math::ConstraintInequality
Definition: math/constraint-inequality.hpp:26
demo_quadruped.contacts
int contacts
Definition: demo_quadruped.py:98
tsid::contacts::ContactTwoFramePositions::Matrix3x
math::Matrix3x Matrix3x
Definition: contacts/contact-two-frame-positions.hpp:35
tsid::contacts::ContactTwoFramePositions::setRegularizationTaskWeightVector
void setRegularizationTaskWeightVector(ConstRefVector &w)
Definition: src/contacts/contact-two-frame-positions.cpp:79
tsid::math::ConstRefVector
const typedef Eigen::Ref< const Vector > ConstRefVector
Definition: math/fwd.hpp:48
tsid::contacts::ContactTwoFramePositions::Vector3
math::Vector3 Vector3
Definition: contacts/contact-two-frame-positions.hpp:37
tsid::math::Vector
Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > Vector
Definition: math/fwd.hpp:35
tsid::contacts::ContactBase::name
const std::string & name() const
Definition: contact-base.cpp:25
tsid::contacts::ContactTwoFramePositions::getContactPoints
const Matrix3x & getContactPoints() const override
Definition: src/contacts/contact-two-frame-positions.cpp:75
tsid::contacts::ContactTwoFramePositions::setMinNormalForce
bool setMinNormalForce(const double minNormalForce) override
Definition: src/contacts/contact-two-frame-positions.cpp:135
constraint-inequality.hpp
tsid::contacts::ContactTwoFramePositions::setMotionTaskWeight
bool setMotionTaskWeight(const double w)
tsid::contacts::ContactTwoFramePositions::getMotionTask
const TaskTwoFramesEquality & getMotionTask() const override
Definition: src/contacts/contact-two-frame-positions.cpp:177
tsid::contacts::ContactTwoFramePositions::Vector6
math::Vector6 Vector6
Definition: contacts/contact-two-frame-positions.hpp:36
tsid::contacts::ContactTwoFramePositions::setContactNormal
bool setContactNormal(ConstRefVector contactNormal)
Definition: src/contacts/contact-two-frame-positions.cpp:126
tsid::contacts::ContactBase::Matrix3x
math::Matrix3x Matrix3x
Definition: contact-base.hpp:40
tsid
Definition: bindings/python/constraint/constraint-bound.cpp:21
tsid::contacts::ContactTwoFramePositions::Vector
math::Vector Vector
Definition: contacts/contact-two-frame-positions.hpp:38
tsid::contacts::ContactTwoFramePositions::m_contactPoints
Matrix3x m_contactPoints
Definition: contacts/contact-two-frame-positions.hpp:107
tsid::contacts::ContactTwoFramePositions::TaskTwoFramesEquality
tasks::TaskTwoFramesEquality TaskTwoFramesEquality
Definition: contacts/contact-two-frame-positions.hpp:39
tsid::robots::RobotWrapper
Wrapper for a robot based on pinocchio.
Definition: robots/robot-wrapper.hpp:37
tsid::contacts::ContactTwoFramePositions::n_motion
unsigned int n_motion() const override
Return the number of motion constraints.
Definition: src/contacts/contact-two-frame-positions.cpp:97
tsid::contacts::ContactTwoFramePositions::SE3
pinocchio::SE3 SE3
Definition: contacts/contact-two-frame-positions.hpp:43
tsid::contacts::ContactTwoFramePositions::getForceRegularizationTask
const ConstraintEquality & getForceRegularizationTask() const override
Definition: src/contacts/contact-two-frame-positions.cpp:190
tsid::math::ConstRefMatrix
const typedef Eigen::Ref< const Matrix > ConstRefMatrix
Definition: math/fwd.hpp:51
tsid::contacts::ContactTwoFramePositions::TaskSE3Equality
tasks::TaskSE3Equality TaskSE3Equality
Definition: contacts/contact-two-frame-positions.hpp:40
t
Transform3f t
tsid::tasks::TaskSE3Equality
Definition: tasks/task-se3-equality.hpp:31
tsid::contacts::ContactTwoFramePositions::Kp
const Vector & Kp()
Definition: src/contacts/contact-two-frame-positions.cpp:102
demo_quadruped.contactNormal
contactNormal
Definition: demo_quadruped.py:29
tsid::contacts::ContactBase::ConstRefVector
math::ConstRefVector ConstRefVector
Definition: contact-base.hpp:38
contact-base.hpp
tsid::contacts::ContactTwoFramePositions::computeForceTask
const ConstraintInequality & computeForceTask(double t, ConstRefVector q, ConstRefVector v, const Data &data) override
Definition: src/contacts/contact-two-frame-positions.cpp:157
tsid::math::Vector3
Eigen::Matrix< Scalar, 3, 1 > Vector3
Definition: math/fwd.hpp:40
tsid::contacts::ContactTwoFramePositions::ConstraintInequality
math::ConstraintInequality ConstraintInequality
Definition: contacts/contact-two-frame-positions.hpp:41
tsid::tasks::TaskTwoFramesEquality
Definition: tasks/task-two-frames-equality.hpp:31


tsid
Author(s): Andrea Del Prete, Justin Carpentier
autogenerated on Sat May 3 2025 02:48:16