tsid 1.9.0
Efficient Task Space Inverse Dynamics for Multi-body Systems based on Pinocchio
Loading...
Searching...
No Matches
contact-two-frame-positions.hpp
Go to the documentation of this file.
1//
2// Copyright (c) 2023 MIPT
3//
4
5#ifndef __invdyn_contact_two_frame_positions_hpp__
6#define __invdyn_contact_two_frame_positions_hpp__
7
13
14namespace tsid {
15namespace contacts {
17 public:
18 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
19
30 typedef pinocchio::SE3 SE3;
31
32 ContactTwoFramePositions(const std::string& name, RobotWrapper& robot,
33 const std::string& frameName1,
34 const std::string& frameName2,
35 const double minNormalForce,
36 const double maxNormalForce);
37
39 unsigned int n_motion() const override;
40
42 unsigned int n_force() const override;
43
46 Data& data) override;
47
50 const Data& data) override;
51
52 const Matrix& getForceGeneratorMatrix() override;
53
55 double t, ConstRefVector q, ConstRefVector v, const Data& data) override;
56
57 const TaskTwoFramesEquality& getMotionTask() const override;
58 const ConstraintBase& getMotionConstraint() const override;
59 const ConstraintInequality& getForceConstraint() const override;
61 double getMotionTaskWeight() const;
62 const Matrix3x& getContactPoints() const override;
63
64 double getNormalForce(ConstRefVector f) const override;
65 double getMinNormalForce() const override;
66 double getMaxNormalForce() const override;
67
68 const Vector&
69 Kp(); // cannot be const because it set a member variable inside
70 const Vector&
71 Kd(); // cannot be const because it set a member variable inside
72 void Kp(ConstRefVector Kp);
73 void Kd(ConstRefVector Kp);
74
75 bool setContactNormal(ConstRefVector contactNormal);
76
77 bool setFrictionCoefficient(const double frictionCoefficient);
78 bool setMinNormalForce(const double minNormalForce) override;
79 bool setMaxNormalForce(const double maxNormalForce) override;
80 bool setMotionTaskWeight(const double w);
83
84 protected:
88
95 Vector m_Kp3, m_Kd3; // gain vectors to be returned by reference
96 double m_fMin;
97 double m_fMax;
101};
102} // namespace contacts
103} // namespace tsid
104
105#endif // ifndef __invdyn_contact_two_frame_positions_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
const Matrix3x & getContactPoints() const override
Definition contact-two-frame-positions.cpp:62
const ConstraintInequality & getForceConstraint() const override
Definition contact-two-frame-positions.cpp:172
Vector m_Kp3
Definition contact-two-frame-positions.hpp:95
tasks::TaskSE3Equality TaskSE3Equality
Definition contact-two-frame-positions.hpp:27
TaskTwoFramesEquality m_motionTask
Definition contact-two-frame-positions.hpp:89
void updateForceInequalityConstraints()
Definition contact-two-frame-positions.cpp:47
unsigned int n_force() const override
Return the number of force variables.
Definition contact-two-frame-positions.cpp:87
math::Vector6 Vector6
Definition contact-two-frame-positions.hpp:23
const Matrix & getForceGeneratorMatrix() override
Definition contact-two-frame-positions.cpp:149
const ConstraintEquality & computeForceRegularizationTask(double t, ConstRefVector q, ConstRefVector v, const Data &data) override
Definition contact-two-frame-positions.cpp:154
double m_motionTaskWeight
Definition contact-two-frame-positions.hpp:99
const ConstraintInequality & computeForceTask(double t, ConstRefVector q, ConstRefVector v, const Data &data) override
Definition contact-two-frame-positions.cpp:144
Vector3 m_weightForceRegTask
Definition contact-two-frame-positions.hpp:93
bool setMinNormalForce(const double minNormalForce) override
Definition contact-two-frame-positions.cpp:122
Matrix3x m_contactPoints
Definition contact-two-frame-positions.hpp:94
void setRegularizationTaskWeightVector(ConstRefVector &w)
Definition contact-two-frame-positions.cpp:66
ContactTwoFramePositions(const std::string &name, RobotWrapper &robot, const std::string &frameName1, const std::string &frameName2, const double minNormalForce, const double maxNormalForce)
Definition contact-two-frame-positions.cpp:16
math::Vector3 Vector3
Definition contact-two-frame-positions.hpp:24
math::Matrix3x Matrix3x
Definition contact-two-frame-positions.hpp:22
const ConstraintBase & getMotionConstraint() const override
Definition contact-two-frame-positions.cpp:168
tasks::TaskTwoFramesEquality TaskTwoFramesEquality
Definition contact-two-frame-positions.hpp:26
const ConstraintBase & computeMotionTask(double t, ConstRefVector q, ConstRefVector v, Data &data) override
Definition contact-two-frame-positions.cpp:139
bool setFrictionCoefficient(const double frictionCoefficient)
Definition contact-two-frame-positions.cpp:117
ConstraintEquality m_forceRegTask
Definition contact-two-frame-positions.hpp:91
math::Vector Vector
Definition contact-two-frame-positions.hpp:25
const Vector & Kd()
Definition contact-two-frame-positions.cpp:94
math::ConstraintEquality ConstraintEquality
Definition contact-two-frame-positions.hpp:29
ConstraintInequality m_forceInequality
Definition contact-two-frame-positions.hpp:90
void updateForceRegularizationTask()
Definition contact-two-frame-positions.cpp:72
double m_fMin
Definition contact-two-frame-positions.hpp:96
void updateForceGeneratorMatrix()
Definition contact-two-frame-positions.cpp:80
Vector m_Kd3
Definition contact-two-frame-positions.hpp:95
bool setContactNormal(ConstRefVector contactNormal)
Definition contact-two-frame-positions.cpp:113
const ConstraintEquality & getForceRegularizationTask() const override
Definition contact-two-frame-positions.cpp:177
const Vector & Kp()
Definition contact-two-frame-positions.cpp:89
math::ConstRefVector ConstRefVector
Definition contact-two-frame-positions.hpp:21
double m_fMax
Definition contact-two-frame-positions.hpp:97
unsigned int n_motion() const override
Return the number of motion constraints.
Definition contact-two-frame-positions.cpp:84
double getMaxNormalForce() const override
Definition contact-two-frame-positions.cpp:162
double m_regularizationTaskWeight
Definition contact-two-frame-positions.hpp:98
bool setMaxNormalForce(const double maxNormalForce) override
Definition contact-two-frame-positions.cpp:128
double getMinNormalForce() const override
Definition contact-two-frame-positions.cpp:161
Vector3 m_fRef
Definition contact-two-frame-positions.hpp:92
pinocchio::SE3 SE3
Definition contact-two-frame-positions.hpp:30
Matrix m_forceGenMat
Definition contact-two-frame-positions.hpp:100
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef math::ConstRefMatrix ConstRefMatrix
Definition contact-two-frame-positions.hpp:20
void setForceReference(ConstRefVector &f_ref)
Definition contact-two-frame-positions.cpp:134
const TaskTwoFramesEquality & getMotionTask() const override
Definition contact-two-frame-positions.cpp:164
double getNormalForce(ConstRefVector f) const override
Definition contact-two-frame-positions.cpp:58
math::ConstraintInequality ConstraintInequality
Definition contact-two-frame-positions.hpp:28
Definition constraint-equality.hpp:13
Definition constraint-inequality.hpp:13
Definition task-se3-equality.hpp:31
Definition task-two-frames-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