Loading...
Searching...
No Matches
contact-base.hpp
Go to the documentation of this file.
1//
2// Copyright (c) 2017 CNRS
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_base_hpp__
19#define __invdyn_contact_base_hpp__
20
21#include "tsid/math/fwd.hpp"
22#include "tsid/robots/fwd.hpp"
24
25
26namespace tsid
27{
28 namespace contacts
29 {
30
35 {
36 public:
37 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
38
46 typedef pinocchio::Data Data;
48
49 ContactBase(const std::string & name,
50 RobotWrapper & robot);
51
52 const std::string & name() const;
53
54 void name(const std::string & name);
55
57 virtual unsigned int n_motion() const = 0;
58
60 virtual unsigned int n_force() const = 0;
61
62 virtual const ConstraintBase & computeMotionTask(const double t,
65 Data & data) = 0;
66
67 virtual const ConstraintInequality & computeForceTask(const double t,
70 const Data & data) = 0;
71
72 virtual const Matrix & getForceGeneratorMatrix() = 0;
73
74 virtual const ConstraintEquality & computeForceRegularizationTask(const double t,
77 const Data & data) = 0;
78
79 virtual const TaskSE3Equality & getMotionTask() const = 0;
80 virtual const ConstraintBase & getMotionConstraint() const = 0;
81 virtual const ConstraintInequality & getForceConstraint() const = 0;
83
84 virtual double getMinNormalForce() const = 0;
85 virtual double getMaxNormalForce() const = 0;
86 virtual bool setMinNormalForce(const double minNormalForce) = 0;
87 virtual bool setMaxNormalForce(const double maxNormalForce) = 0;
88 virtual double getNormalForce(ConstRefVector f) const = 0;
89 virtual const Matrix3x & getContactPoints() const = 0;
90
91 protected:
92 std::string m_name;
95 };
96
97 }
98}
99
100#endif // ifndef __invdyn_contact_base_hpp__
Base template of a Contact.
Definition: contact-base.hpp:35
virtual double getMaxNormalForce() const =0
virtual bool setMaxNormalForce(const double maxNormalForce)=0
virtual const ConstraintInequality & getForceConstraint() const =0
RobotWrapper & m_robot
Reference on the robot model.
Definition: contact-base.hpp:94
math::ConstraintEquality ConstraintEquality
Definition: contact-base.hpp:41
virtual unsigned int n_force() const =0
Return the number of force variables.
virtual double getNormalForce(ConstRefVector f) const =0
math::Matrix3x Matrix3x
Definition: contact-base.hpp:44
virtual const Matrix & getForceGeneratorMatrix()=0
const std::string & name() const
Definition: contact-base.cpp:30
virtual const ConstraintBase & getMotionConstraint() const =0
tasks::TaskSE3Equality TaskSE3Equality
Definition: contact-base.hpp:45
virtual const ConstraintEquality & computeForceRegularizationTask(const double t, ConstRefVector q, ConstRefVector v, const Data &data)=0
virtual const ConstraintEquality & getForceRegularizationTask() const =0
math::ConstRefVector ConstRefVector
Definition: contact-base.hpp:42
virtual const ConstraintInequality & computeForceTask(const double t, ConstRefVector q, ConstRefVector v, const Data &data)=0
virtual const Matrix3x & getContactPoints() const =0
virtual double getMinNormalForce() const =0
virtual unsigned int n_motion() const =0
Return the number of motion constraints.
std::string m_name
Definition: contact-base.hpp:92
math::Matrix Matrix
Definition: contact-base.hpp:43
virtual const ConstraintBase & computeMotionTask(const double t, ConstRefVector q, ConstRefVector v, Data &data)=0
pinocchio::Data Data
Definition: contact-base.hpp:46
virtual bool setMinNormalForce(const double minNormalForce)=0
virtual const TaskSE3Equality & getMotionTask() const =0
robots::RobotWrapper RobotWrapper
Definition: contact-base.hpp:47
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef math::ConstraintBase ConstraintBase
Definition: contact-base.hpp:39
math::ConstraintInequality ConstraintInequality
Definition: contact-base.hpp:40
Abstract class representing a linear equality/inequality constraint. Equality constraints are represe...
Definition: constraint-base.hpp:37
Definition: constraint-equality.hpp:29
Definition: constraint-inequality.hpp:29
Wrapper for a robot based on pinocchio.
Definition: robot-wrapper.hpp:41
Definition: task-se3-equality.hpp:34
Eigen::Matrix< Scalar, 3, Eigen::Dynamic > Matrix3x
Definition: fwd.hpp:44
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > Matrix
Definition: fwd.hpp:38
const Eigen::Ref< const Vector > ConstRefVector
Definition: fwd.hpp:50
Definition: constraint-bound.hpp:27