tsid 1.9.0
Efficient Task Space Inverse Dynamics for Multi-body Systems based on Pinocchio
Loading...
Searching...
No Matches
contact-6d.hpp
Go to the documentation of this file.
1//
2// Copyright (c) 2017 CNRS, NYU, MPI Tübingen
3//
4
5#ifndef __invdyn_contact_6d_hpp__
6#define __invdyn_contact_6d_hpp__
7
8#include "tsid/deprecated.hh"
13
14namespace tsid {
15namespace contacts {
16class Contact6d : public ContactBase {
17 public:
18 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
19
29 typedef pinocchio::SE3 SE3;
30
31 Contact6d(const std::string& name, RobotWrapper& robot,
32 const std::string& frameName, ConstRefMatrix contactPoints,
33 ConstRefVector contactNormal, const double frictionCoefficient,
34 const double minNormalForce, const double maxNormalForce);
35
36 TSID_DEPRECATED Contact6d(const std::string& name, RobotWrapper& robot,
37 const std::string& frameName,
38 ConstRefMatrix contactPoints,
39 ConstRefVector contactNormal,
40 const double frictionCoefficient,
41 const double minNormalForce,
42 const double maxNormalForce,
43 const double forceRegWeight);
44
46 unsigned int n_motion() const override;
47
49 unsigned int n_force() const override;
50
53 Data& data) override;
54
57 const Data& data) override;
58
59 const Matrix& getForceGeneratorMatrix() override;
60
62 double t, ConstRefVector q, ConstRefVector v, const Data& data) override;
63
64 const TaskSE3Equality& getMotionTask() const override;
65 const ConstraintBase& getMotionConstraint() const override;
66 const ConstraintInequality& getForceConstraint() const override;
68
69 double getNormalForce(ConstRefVector f) const override;
70 double getMinNormalForce() const override;
71 double getMaxNormalForce() const override;
72 const Matrix3x& getContactPoints() const override;
73
74 const Vector& Kp() const;
75 const Vector& Kd() const;
76 void Kp(ConstRefVector Kp);
77 void Kd(ConstRefVector Kp);
78
79 bool setContactPoints(ConstRefMatrix contactPoints);
80 bool setContactNormal(ConstRefVector contactNormal);
81
82 bool setFrictionCoefficient(double frictionCoefficient);
83 bool setMinNormalForce(double minNormalForce) override;
84 bool setMaxNormalForce(double maxNormalForce) override;
85 void setReference(const SE3& ref);
88
89 private:
90 void init();
91
92 protected:
96
104 double m_mu;
105 double m_fMin;
106 double m_fMax;
108};
109} // namespace contacts
110} // namespace tsid
111
112#endif // ifndef __invdyn_contact_6d_hpp__
math::ConstraintInequality ConstraintInequality
Definition contact-6d.hpp:27
const ConstraintBase & getMotionConstraint() const override
Definition contact-6d.cpp:226
bool setContactNormal(ConstRefVector contactNormal)
Definition contact-6d.cpp:150
const ConstraintInequality & computeForceTask(double t, ConstRefVector q, ConstRefVector v, const Data &data) override
Definition contact-6d.cpp:207
void setForceReference(ConstRefVector &f_ref)
Definition contact-6d.cpp:193
Matrix3x m_contactPoints
Definition contact-6d.hpp:100
Vector3 m_contactNormal
Definition contact-6d.hpp:101
Vector6 m_fRef
Definition contact-6d.hpp:102
const ConstraintInequality & getForceConstraint() const override
Definition contact-6d.cpp:230
const Vector & Kp() const
Definition contact-6d.cpp:132
void updateForceRegularizationTask()
Definition contact-6d.cpp:111
ConstraintInequality m_forceInequality
Definition contact-6d.hpp:98
double getNormalForce(ConstRefVector f) const override
Definition contact-6d.cpp:97
double m_fMax
Definition contact-6d.hpp:106
double getMaxNormalForce() const override
Definition contact-6d.cpp:222
unsigned int n_force() const override
Return the number of force variables.
Definition contact-6d.cpp:130
const Matrix & getForceGeneratorMatrix() override
Definition contact-6d.cpp:214
const ConstraintEquality & computeForceRegularizationTask(double t, ConstRefVector q, ConstRefVector v, const Data &data) override
Definition contact-6d.cpp:216
void setReference(const SE3 &ref)
Definition contact-6d.cpp:198
const TaskSE3Equality & getMotionTask() const override
Definition contact-6d.cpp:224
const ConstraintEquality & getForceRegularizationTask() const override
Definition contact-6d.cpp:234
Matrix m_forceGenMat
Definition contact-6d.hpp:107
ConstraintEquality m_forceRegTask
Definition contact-6d.hpp:99
double m_mu
Definition contact-6d.hpp:104
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:16
bool setMaxNormalForce(double maxNormalForce) override
Definition contact-6d.cpp:182
void updateForceGeneratorMatrix()
Definition contact-6d.cpp:119
Vector6 m_weightForceRegTask
Definition contact-6d.hpp:103
const ConstraintBase & computeMotionTask(double t, ConstRefVector q, ConstRefVector v, Data &data) override
Definition contact-6d.cpp:200
math::ConstraintEquality ConstraintEquality
Definition contact-6d.hpp:28
double getMinNormalForce() const override
Definition contact-6d.cpp:221
const Vector & Kd() const
Definition contact-6d.cpp:133
pinocchio::SE3 SE3
Definition contact-6d.hpp:29
tasks::TaskSE3Equality TaskSE3Equality
Definition contact-6d.hpp:26
TaskSE3Equality m_motionTask
Definition contact-6d.hpp:97
math::Vector6 Vector6
Definition contact-6d.hpp:23
unsigned int n_motion() const override
Return the number of motion constraints.
Definition contact-6d.cpp:129
double m_fMin
Definition contact-6d.hpp:105
bool setMinNormalForce(double minNormalForce) override
Definition contact-6d.cpp:170
void updateForceInequalityConstraints()
Definition contact-6d.cpp:63
bool setFrictionCoefficient(double frictionCoefficient)
Definition contact-6d.cpp:160
math::Matrix3x Matrix3x
Definition contact-6d.hpp:22
void setRegularizationTaskWeightVector(ConstRefVector &w)
Definition contact-6d.cpp:106
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef math::ConstRefMatrix ConstRefMatrix
Definition contact-6d.hpp:20
math::Vector3 Vector3
Definition contact-6d.hpp:24
math::ConstRefVector ConstRefVector
Definition contact-6d.hpp:21
const Matrix3x & getContactPoints() const override
Definition contact-6d.cpp:148
math::Vector Vector
Definition contact-6d.hpp:25
bool setContactPoints(ConstRefMatrix contactPoints)
Definition contact-6d.cpp:137
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
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