10 #ifndef _OCRACONTROL_MODEL_H_ 11 #define _OCRACONTROL_MODEL_H_ 25 #include <yarp/os/Semaphore.h> 42 Model(
const std::string& name,
int ndofs,
bool freeRoot,
43 const std::string& jointTorqueVariableName =
"tau",
44 const std::string& forceVariableName =
"f",
45 const std::string& configurationVariableName =
"q",
46 const std::string& internalDofsSuffix =
"_int",
47 const std::string& externalDofsSuffix =
"_root");
58 void setState(
const Eigen::VectorXd& q,
const Eigen::VectorXd& q_dot);
59 void setState(
const Eigen::Displacementd& H_root,
const Eigen::VectorXd& q,
const Eigen::Twistd& T_root,
const Eigen::VectorXd& q_dot);
62 virtual const Eigen::VectorXd&
getJointAccelerations()
const { std::cout <<
"getJointAccelerations() has not been implemented" << std::endl; };
77 virtual double getMass()
const = 0;
80 virtual const Eigen::Vector3d&
getCoMAcceleration()
const { std::cout <<
"getCoMAcceleration() Not implemented" << std::endl; };
81 virtual const Eigen::Vector3d&
getCoMAngularVelocity()
const{ std::cout <<
"getCoMAngularVelocity() Not implemented" << std::endl; }
83 virtual const Eigen::Matrix<double,3,Eigen::Dynamic>&
getCoMJacobian()
const = 0;
84 virtual const Eigen::Matrix<double,3,Eigen::Dynamic>&
getCoMAngularJacobian()
const{ std::cout <<
"getCoMAngularVelocity() Not implemented" << std::endl; }
85 virtual const Eigen::Matrix<double,3,Eigen::Dynamic>&
getCoMJacobianDot()
const = 0;
97 virtual const Eigen::Matrix<double,6,Eigen::Dynamic>&
getSegmentJacobian(
int index)
const = 0;
98 virtual const Eigen::Matrix<double,6,Eigen::Dynamic>&
getSegmentJdot(
int index)
const = 0;
100 virtual const Eigen::Matrix<double,6,Eigen::Dynamic>&
getJointJacobian(
int index)
const = 0;
102 virtual const Eigen::Vector3d&
getSegmentCoM(
int index)
const = 0;
117 const Eigen::Matrix<double,6,Eigen::Dynamic>&
getSegmentJdot(
const std::string& segName)
const {
123 const Eigen::Matrix<double,6,Eigen::Dynamic>&
getJointJacobian(
const std::string& segName)
const {
171 const std::string&
getDofName(
int index)
const;
172 const std::string
DofName(
const std::string& name)
const;
173 const std::string
SegmentName(
const std::string& name)
const;
174 virtual const std::string&
getJointName (
int index)
const = 0;
184 virtual void doSetState(
const Eigen::VectorXd& q,
const Eigen::VectorXd& q_dot){};
185 virtual void doSetState(
const Eigen::Displacementd& H_root,
const Eigen::VectorXd& q,
const Eigen::Twistd& T_root,
const Eigen::VectorXd& q_dot){};
200 virtual const std::string&
doGetDofName (
int index)
const;
201 virtual const std::string
doSegmentName (
const std::string& name)
const;
202 virtual const std::string
doDofName (
const std::string& name)
const;
211 void invalidate(
int timestamp);
226 VectorXd _jointDamping;
235 static const int FREE_DOFS = 6;
242 #endif //_OCRACONTROL_MODEL_H_ const Eigen::Matrix< double, 6, Eigen::Dynamic > & getSegmentJacobian(const std::string &segName) const
virtual const Eigen::Twistd & getFreeFlyerVelocity() const =0
virtual int doGetDofIndex(const std::string &name) const
Variable & getRootVelocityVariable() const
Variable & getInternalVelocityVariable() const
const Eigen::Matrix< double, 6, Eigen::Dynamic > & getJointJacobian(const std::string &segName) const
int nbInternalDofs() const
const Eigen::Displacementd & getSegmentPosition(const std::string &segName) const
virtual const Eigen::Matrix< double, 3, Eigen::Dynamic > & getCoMAngularJacobian() const
virtual const std::string doDofName(const std::string &name) const
const Eigen::Vector3d & getSegmentCoM(const std::string &segName) const
void setJointVelocities(const Eigen::VectorXd &q_dot)
virtual const Eigen::VectorXd & getJointUpperLimits() const =0
double getSegmentMass(const std::string &segName) const
virtual const Eigen::Displacementd & getFreeFlyerPosition() const =0
virtual const Eigen::VectorXd & getJointPositions() const =0
virtual const Eigen::VectorXd & getGravityTerms() const =0
virtual const Eigen::Vector3d & getCoMAcceleration() const
const Eigen::VectorXd & getJointDamping() const
virtual const Eigen::VectorXd & getJointTorques() const =0
virtual const std::string & doGetSegmentName(int index) const =0
const Eigen::Rotation3d & getSegmentInertiaAxes(const std::string &segName) const
virtual const Eigen::VectorXd & getActuatedDofs() const =0
Variable & getRootAccelerationVariable() const
virtual const Eigen::Vector3d & getCoMJdotQdot() const =0
virtual const Eigen::VectorXd & getJointVelocities() const =0
virtual void doSetState(const Eigen::VectorXd &q, const Eigen::VectorXd &q_dot)
virtual const Eigen::VectorXd & getNonLinearTerms() const =0
#define DEFINE_CLASS_POINTER_TYPEDEFS(Class)
virtual void doSetFreeFlyerVelocity(const Eigen::Twistd &T_root)=0
Optimization-based Robot Controller namespace. a library of classes to write and solve optimization p...
virtual const Eigen::Twistd & getSegmentJdotQdot(int index) const =0
virtual const Eigen::Vector3d & getCoMPosition() const =0
void setJointPositions(const Eigen::VectorXd &q)
yarp::os::Semaphore modelMutex
virtual const Eigen::Matrix< double, 6, 6 > & getSegmentMassMatrix(int index) const =0
Variable & getConfigurationVariable() const
virtual const std::string & getJointName(int index) const =0
virtual void doSetJointVelocities(const Eigen::VectorXd &q_dot)=0
virtual const Eigen::Vector3d & getCoMVelocity() const =0
Variable & getInternalAccelerationVariable() const
virtual const Eigen::Twistd & getSegmentVelocity(int index) const =0
const Eigen::Matrix< double, 6, 6 > & getSegmentMassMatrix(const std::string &segName) const
virtual double getMass() const =0
int getSegmentIndex(const std::string &name) const
void setState(const Eigen::VectorXd &q, const Eigen::VectorXd &q_dot)
Variable & getRootConfigurationVariable() const
virtual const std::string doSegmentName(const std::string &name) const
virtual const Eigen::Matrix< double, 3, Eigen::Dynamic > & getCoMJacobian() const =0
Variable & getInternalConfigurationVariable() const
This class represents a variable in a mathematical sense.
void setJointDamping(const Eigen::VectorXd &damping)
virtual const std::string & doGetDofName(int index) const
virtual void doInvalidate()
int getDofIndex(const std::string &name) const
void setFreeFlyerVelocity(const Eigen::Twistd &T_root)
void setFreeFlyerPosition(const Eigen::Displacementd &H_root)
virtual const Eigen::Vector3d & getSegmentCoM(int index) const =0
const Eigen::Twistd & getSegmentVelocity(const std::string &segName) const
const std::string & getSegmentName(int index) const
virtual const Eigen::Rotation3d & getSegmentInertiaAxes(int index) const =0
virtual const Eigen::Vector3d & getSegmentMomentsOfInertia(int index) const =0
virtual const Eigen::VectorXd & getJointAccelerations() const
Variable & getJointTorqueVariable() const
Variable & getAccelerationVariable() const
const std::string SegmentName(const std::string &name) const
const std::string DofName(const std::string &name) const
virtual const Eigen::Matrix< double, 6, Eigen::Dynamic > & getJointJacobian(int index) const =0
virtual const Eigen::MatrixXd & getInertiaMatrix() const =0
bool hasFixedRoot() const
virtual const Eigen::VectorXd & getLinearTerms() const =0
virtual const Eigen::MatrixXd & getDampingMatrix() const =0
virtual const Eigen::Matrix< double, 6, Eigen::Dynamic > & getSegmentJdot(int index) const =0
virtual const Eigen::MatrixXd & getInertiaMatrixInverse() const =0
virtual const Eigen::Displacementd & getSegmentPosition(int index) const =0
virtual const Eigen::VectorXd & getJointLowerLimits() const =0
Model(const std::string &name, int ndofs, bool freeRoot, const std::string &jointTorqueVariableName="tau", const std::string &forceVariableName="f", const std::string &configurationVariableName="q", const std::string &internalDofsSuffix="_int", const std::string &externalDofsSuffix="_root")
virtual void doSetState(const Eigen::Displacementd &H_root, const Eigen::VectorXd &q, const Eigen::Twistd &T_root, const Eigen::VectorXd &q_dot)
Declaration file of the Variable class.
virtual void doSetJointPositions(const Eigen::VectorXd &q)=0
Declaration file of the Observer, Subject and ObserverSubject classes.
const Eigen::Matrix< double, 6, Eigen::Dynamic > & getSegmentJdot(const std::string &segName) const
Declaration file of the OptimizationVariable class.
virtual const Eigen::Matrix< double, 6, Eigen::Dynamic > & getSegmentJacobian(int index) const =0
virtual void doSetFreeFlyerPosition(const Eigen::Displacementd &H_root)=0
const Eigen::Vector3d & getSegmentMomentsOfInertia(const std::string &segName) const
ModelContacts & getModelContacts() const
virtual const Eigen::Vector3d & getCoMAngularVelocity() const
virtual int doGetSegmentIndex(const std::string &name) const =0
const Eigen::Twistd & getSegmentJdotQdot(const std::string &segName) const
const std::string & getDofName(int index) const
virtual const Eigen::Matrix< double, 3, Eigen::Dynamic > & getCoMJacobianDot() const =0
virtual double getSegmentMass(int index) const =0
virtual int nbSegments() const =0
Variable & getVelocityVariable() const