tsid 1.9.0
Efficient Task Space Inverse Dynamics for Multi-body Systems based on Pinocchio
Loading...
Searching...
No Matches
contact-point.hpp
Go to the documentation of this file.
1//
2// Copyright (c) 2017 CNRS, NYU, MPI Tübingen
3//
4
5#ifndef __invdyn_contact_point_hpp__
6#define __invdyn_contact_point_hpp__
7
12
13namespace tsid {
14namespace contacts {
15class ContactPoint : public ContactBase {
16 public:
17 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
18
28 typedef pinocchio::SE3 SE3;
29
30 ContactPoint(const std::string& name, RobotWrapper& robot,
31 const std::string& frameName, ConstRefVector contactNormal,
32 const double frictionCoefficient, const double minNormalForce,
33 const double maxNormalForce);
34
36 unsigned int n_motion() const override;
37
39 unsigned int n_force() const override;
40
43 Data& data) override;
44
47 const Data& data) override;
48
49 const Matrix& getForceGeneratorMatrix() override;
50
52 double t, ConstRefVector q, ConstRefVector v, const Data& data) override;
53
54 const TaskSE3Equality& getMotionTask() const override;
55 const ConstraintBase& getMotionConstraint() const override;
56 const ConstraintInequality& getForceConstraint() const override;
58 double getMotionTaskWeight() const;
59 const Matrix3x& getContactPoints() const override;
60
61 double getNormalForce(ConstRefVector f) const override;
62 double getMinNormalForce() const override;
63 double getMaxNormalForce() const override;
64
65 const Vector&
66 Kp(); // cannot be const because it set a member variable inside
67 const Vector&
68 Kd(); // cannot be const because it set a member variable inside
69 void Kp(ConstRefVector Kp);
70 void Kd(ConstRefVector Kp);
71
72 bool setContactNormal(ConstRefVector contactNormal);
73
74 bool setFrictionCoefficient(const double frictionCoefficient);
75 bool setMinNormalForce(const double minNormalForce) override;
76 bool setMaxNormalForce(const double maxNormalForce) override;
77 bool setMotionTaskWeight(const double w);
78 void setReference(const SE3& ref);
81
91 void useLocalFrame(bool local_frame);
92
93 protected:
97
105 Vector m_Kp3, m_Kd3; // gain vectors to be returned by reference
106 double m_mu;
107 double m_fMin;
108 double m_fMax;
112};
113} // namespace contacts
114} // namespace tsid
115
116#endif // ifndef __invdyn_contact_6d_hpp__
const std::string & name() const
Definition contact-base.cpp:12
ContactBase(const std::string &name, RobotWrapper &robot)
Definition contact-base.cpp:9
math::Matrix Matrix
Definition contact-base.hpp:26
pinocchio::Data Data
Definition contact-base.hpp:30
robots::RobotWrapper RobotWrapper
Definition contact-base.hpp:31
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef math::ConstraintBase ConstraintBase
Definition contact-base.hpp:22
bool setMinNormalForce(const double minNormalForce) override
Definition contact-point.cpp:148
Matrix3x m_contactPoints
Definition contact-point.hpp:104
pinocchio::SE3 SE3
Definition contact-point.hpp:28
bool setMaxNormalForce(const double maxNormalForce) override
Definition contact-point.cpp:160
Vector m_Kd3
Definition contact-point.hpp:105
void useLocalFrame(bool local_frame)
Specifies if properties of the contact point and motion task are expressed in the local or local worl...
Definition contact-point.cpp:44
ConstraintInequality m_forceInequality
Definition contact-point.hpp:99
double m_fMin
Definition contact-point.hpp:107
Vector3 m_fRef
Definition contact-point.hpp:102
const ConstraintInequality & getForceConstraint() const override
Definition contact-point.cpp:214
ContactPoint(const std::string &name, RobotWrapper &robot, const std::string &frameName, ConstRefVector contactNormal, const double frictionCoefficient, const double minNormalForce, const double maxNormalForce)
Definition contact-point.cpp:16
math::ConstraintInequality ConstraintInequality
Definition contact-point.hpp:26
void updateForceGeneratorMatrix()
Definition contact-point.cpp:98
const ConstraintBase & getMotionConstraint() const override
Definition contact-point.cpp:210
void updateForceInequalityConstraints()
Definition contact-point.cpp:48
void updateForceRegularizationTask()
Definition contact-point.cpp:91
double getMinNormalForce() const override
Definition contact-point.cpp:203
const ConstraintBase & computeMotionTask(double t, ConstRefVector q, ConstRefVector v, Data &data) override
Definition contact-point.cpp:182
double m_motionTaskWeight
Definition contact-point.hpp:110
Vector3 m_contactNormal
Definition contact-point.hpp:101
math::Vector6 Vector6
Definition contact-point.hpp:22
math::ConstraintEquality ConstraintEquality
Definition contact-point.hpp:27
Vector m_Kp3
Definition contact-point.hpp:105
math::Vector Vector
Definition contact-point.hpp:24
const ConstraintInequality & computeForceTask(double t, ConstRefVector q, ConstRefVector v, const Data &data) override
Definition contact-point.cpp:189
double m_mu
Definition contact-point.hpp:106
const Vector & Kd()
Definition contact-point.cpp:108
bool setFrictionCoefficient(const double frictionCoefficient)
Definition contact-point.cpp:139
void setReference(const SE3 &ref)
Definition contact-point.cpp:178
unsigned int n_motion() const override
Return the number of motion constraints.
Definition contact-point.cpp:100
const Matrix3x & getContactPoints() const override
Definition contact-point.cpp:82
void setForceReference(ConstRefVector &f_ref)
Definition contact-point.cpp:171
math::Matrix3x Matrix3x
Definition contact-point.hpp:21
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef math::ConstRefMatrix ConstRefMatrix
Definition contact-point.hpp:19
double getNormalForce(ConstRefVector f) const override
Definition contact-point.cpp:75
double m_fMax
Definition contact-point.hpp:108
Vector3 m_weightForceRegTask
Definition contact-point.hpp:103
const TaskSE3Equality & getMotionTask() const override
Definition contact-point.cpp:206
math::Vector3 Vector3
Definition contact-point.hpp:23
Matrix m_forceGenMat
Definition contact-point.hpp:111
tasks::TaskSE3Equality TaskSE3Equality
Definition contact-point.hpp:25
const ConstraintEquality & computeForceRegularizationTask(double t, ConstRefVector q, ConstRefVector v, const Data &data) override
Definition contact-point.cpp:198
math::ConstRefVector ConstRefVector
Definition contact-point.hpp:20
const Vector & Kp()
Definition contact-point.cpp:103
bool setContactNormal(ConstRefVector contactNormal)
Definition contact-point.cpp:129
double getMotionTaskWeight() const
double m_regularizationTaskWeight
Definition contact-point.hpp:109
TaskSE3Equality m_motionTask
Definition contact-point.hpp:98
ConstraintEquality m_forceRegTask
Definition contact-point.hpp:100
double getMaxNormalForce() const override
Definition contact-point.cpp:204
unsigned int n_force() const override
Return the number of force variables.
Definition contact-point.cpp:101
const Matrix & getForceGeneratorMatrix() override
Definition contact-point.cpp:196
void setRegularizationTaskWeightVector(ConstRefVector &w)
Definition contact-point.cpp:86
const ConstraintEquality & getForceRegularizationTask() const override
Definition contact-point.cpp:218
bool setMotionTaskWeight(const double w)
Definition constraint-equality.hpp:13
Definition constraint-inequality.hpp:13
Definition task-se3-equality.hpp:31
Definition contact-6d.hpp:15
Eigen::Matrix< Scalar, 3, Eigen::Dynamic > Matrix3x
Definition fwd.hpp:29
Eigen::Matrix< Scalar, 3, 1 > Vector3
Definition fwd.hpp:27
Eigen::Matrix< Scalar, 6, 1 > Vector6
Definition fwd.hpp:28
const Eigen::Ref< const Matrix > ConstRefMatrix
Definition fwd.hpp:38
const Eigen::Ref< const Vector > ConstRefVector
Definition fwd.hpp:35
Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > Vector
Definition fwd.hpp:22
Definition constraint-bound.hpp:25