tsid 1.9.0
Efficient Task Space Inverse Dynamics for Multi-body Systems based on Pinocchio
Loading...
Searching...
No Matches
inverse-dynamics-formulation-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
11#ifndef __invdyn_inverse_dynamics_formulation_base_hpp__
12#define __invdyn_inverse_dynamics_formulation_base_hpp__
13
14#include "tsid/deprecated.hh"
15#include "tsid/math/fwd.hpp"
23
24#include <string>
25
26namespace tsid {
27
28struct TaskLevel {
29 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
30
32 std::shared_ptr<math::ConstraintBase> constraint;
33 unsigned int priority;
34
36};
37
39 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
40
42 std::shared_ptr<math::ConstraintBase> constraint;
43 unsigned int priority;
44
46};
47
55
60 public:
61 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
62
63 typedef pinocchio::Data Data;
76
77 InverseDynamicsFormulationBase(const std::string& name, RobotWrapper& robot,
78 bool verbose = false);
79
80 virtual ~InverseDynamicsFormulationBase() = default;
81
82 virtual Data& data() = 0;
83
84 virtual unsigned int nVar() const = 0;
85 virtual unsigned int nEq() const = 0;
86 virtual unsigned int nIn() const = 0;
87
88 virtual bool addMotionTask(TaskMotion& task, double weight,
89 unsigned int priorityLevel,
90 double transition_duration = 0.0) = 0;
91
92 virtual bool addForceTask(TaskContactForce& task, double weight,
93 unsigned int priorityLevel,
94 double transition_duration = 0.0) = 0;
95
96 virtual bool addActuationTask(TaskActuation& task, double weight,
97 unsigned int priorityLevel,
98 double transition_duration = 0.0) = 0;
99
100 virtual bool updateTaskWeight(const std::string& task_name,
101 double weight) = 0;
102
114 virtual bool addRigidContact(ContactBase& contact,
115 double force_regularization_weight,
116 double motion_weight = 1.0,
117 unsigned int motion_priority_level = 0) = 0;
118
119 TSID_DEPRECATED virtual bool addRigidContact(ContactBase& contact);
120
130 virtual bool updateRigidContactWeights(const std::string& contact_name,
131 double force_regularization_weight,
132 double motion_weight = -1.0) = 0;
133
134 virtual bool addMeasuredForce(MeasuredForceBase& measuredForce) = 0;
135
136 virtual bool removeTask(const std::string& taskName,
137 double transition_duration = 0.0) = 0;
138
139 virtual bool removeRigidContact(const std::string& contactName,
140 double transition_duration = 0.0) = 0;
141
142 virtual bool removeMeasuredForce(const std::string& measuredForceName) = 0;
143
144 virtual const HQPData& computeProblemData(double time, ConstRefVector q,
145 ConstRefVector v) = 0;
146
147 virtual const Vector& getActuatorForces(const HQPOutput& sol) = 0;
148 virtual const Vector& getAccelerations(const HQPOutput& sol) = 0;
149 virtual const Vector& getContactForces(const HQPOutput& sol) = 0;
150 virtual bool getContactForces(const std::string& name, const HQPOutput& sol,
151 RefVector f) = 0;
152
153 virtual unsigned int getTaskPriority(const std::string& name) = 0;
154
155 protected:
156 std::string m_name;
159};
160
161} // namespace tsid
162
163#endif // ifndef __invdyn_inverse_dynamics_formulation_base_hpp__
virtual ~InverseDynamicsFormulationBase()=default
tasks::TaskContactForce TaskContactForce
Definition inverse-dynamics-formulation-base.hpp:68
virtual const Vector & getAccelerations(const HQPOutput &sol)=0
InverseDynamicsFormulationBase(const std::string &name, RobotWrapper &robot, bool verbose=false)
Definition inverse-dynamics-formulation-base.cpp:16
virtual bool removeMeasuredForce(const std::string &measuredForceName)=0
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef pinocchio::Data Data
Definition inverse-dynamics-formulation-base.hpp:63
virtual const Vector & getContactForces(const HQPOutput &sol)=0
math::RefVector RefVector
Definition inverse-dynamics-formulation-base.hpp:65
bool m_verbose
Definition inverse-dynamics-formulation-base.hpp:158
tasks::TaskActuation TaskActuation
Definition inverse-dynamics-formulation-base.hpp:69
virtual bool addMotionTask(TaskMotion &task, double weight, unsigned int priorityLevel, double transition_duration=0.0)=0
virtual bool updateRigidContactWeights(const std::string &contact_name, double force_regularization_weight, double motion_weight=-1.0)=0
Update the weights associated to the specified contact.
solvers::HQPOutput HQPOutput
Definition inverse-dynamics-formulation-base.hpp:74
solvers::HQPData HQPData
Definition inverse-dynamics-formulation-base.hpp:73
virtual unsigned int nIn() const =0
RobotWrapper m_robot
Definition inverse-dynamics-formulation-base.hpp:157
virtual bool removeTask(const std::string &taskName, double transition_duration=0.0)=0
contacts::MeasuredForceBase MeasuredForceBase
Definition inverse-dynamics-formulation-base.hpp:71
virtual unsigned int getTaskPriority(const std::string &name)=0
robots::RobotWrapper RobotWrapper
Definition inverse-dynamics-formulation-base.hpp:75
virtual bool removeRigidContact(const std::string &contactName, double transition_duration=0.0)=0
virtual unsigned int nEq() const =0
tasks::TaskBase TaskBase
Definition inverse-dynamics-formulation-base.hpp:70
virtual bool getContactForces(const std::string &name, const HQPOutput &sol, RefVector f)=0
virtual const HQPData & computeProblemData(double time, ConstRefVector q, ConstRefVector v)=0
std::string m_name
Definition inverse-dynamics-formulation-base.hpp:156
tasks::TaskMotion TaskMotion
Definition inverse-dynamics-formulation-base.hpp:67
math::Vector Vector
Definition inverse-dynamics-formulation-base.hpp:64
virtual unsigned int nVar() const =0
virtual bool addMeasuredForce(MeasuredForceBase &measuredForce)=0
virtual const Vector & getActuatorForces(const HQPOutput &sol)=0
virtual bool updateTaskWeight(const std::string &task_name, double weight)=0
virtual bool addRigidContact(ContactBase &contact, double force_regularization_weight, double motion_weight=1.0, unsigned int motion_priority_level=0)=0
Add a rigid contact constraint to the model, introducing the associated reaction forces as problem va...
virtual bool addActuationTask(TaskActuation &task, double weight, unsigned int priorityLevel, double transition_duration=0.0)=0
virtual bool addForceTask(TaskContactForce &task, double weight, unsigned int priorityLevel, double transition_duration=0.0)=0
math::ConstRefVector ConstRefVector
Definition inverse-dynamics-formulation-base.hpp:66
contacts::ContactBase ContactBase
Definition inverse-dynamics-formulation-base.hpp:72
Base template of a Contact.
Definition contact-base.hpp:18
Definition measured-force-base.hpp:15
Wrapper for a robot based on pinocchio.
Definition robot-wrapper.hpp:37
Definition solver-HQP-output.hpp:29
Definition task-actuation.hpp:25
Base template of a Task. Each class is defined according to a constant model of a robot.
Definition task-base.hpp:34
Definition task-contact-force.hpp:28
Definition task-motion.hpp:26
const Eigen::Ref< const Vector > ConstRefVector
Definition fwd.hpp:35
Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > Vector
Definition fwd.hpp:22
Eigen::Ref< Vector > RefVector
Definition fwd.hpp:34
pinocchio::container::aligned_vector< ConstraintLevel > HQPData
Definition fwd.hpp:99
Definition constraint-bound.hpp:25
MeasuredForceLevel(contacts::MeasuredForceBase &measuredForce)
Definition inverse-dynamics-formulation-base.cpp:20
EIGEN_MAKE_ALIGNED_OPERATOR_NEW contacts::MeasuredForceBase & measuredForce
Definition inverse-dynamics-formulation-base.hpp:51
TaskLevelForce(tasks::TaskContactForce &task, unsigned int priority)
Definition inverse-dynamics-formulation-base.cpp:12
unsigned int priority
Definition inverse-dynamics-formulation-base.hpp:43
std::shared_ptr< math::ConstraintBase > constraint
Definition inverse-dynamics-formulation-base.hpp:42
EIGEN_MAKE_ALIGNED_OPERATOR_NEW tasks::TaskContactForce & task
Definition inverse-dynamics-formulation-base.hpp:41
unsigned int priority
Definition inverse-dynamics-formulation-base.hpp:33
EIGEN_MAKE_ALIGNED_OPERATOR_NEW tasks::TaskBase & task
Definition inverse-dynamics-formulation-base.hpp:31
std::shared_ptr< math::ConstraintBase > constraint
Definition inverse-dynamics-formulation-base.hpp:32
TaskLevel(tasks::TaskBase &task, unsigned int priority)
Definition inverse-dynamics-formulation-base.cpp:9