inverse-dynamics-formulation-acc-force.hpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2017 CNRS, NYU, MPI Tübingen, UNITN
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_inverse_dynamics_formulation_acc_force_hpp__
19 #define __invdyn_inverse_dynamics_formulation_acc_force_hpp__
20 
21 #include <vector>
22 
26 
27 namespace tsid {
28 
30  public:
31  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
32 
33  double time_start;
34  double time_end;
35  double fMax_start;
36  double fMax_end;
37  std::shared_ptr<ContactLevel> contactLevel;
38 };
39 
42  public:
43  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
44 
55 
56  InverseDynamicsFormulationAccForce(const std::string& name,
57  RobotWrapper& robot, bool verbose = false);
58 
59  Data& data() override;
60 
61  unsigned int nVar() const override;
62  unsigned int nEq() const override;
63  unsigned int nIn() const override;
64 
65  bool addMotionTask(TaskMotion& task, double weight,
66  unsigned int priorityLevel,
67  double transition_duration = 0.0) override;
68 
69  bool addForceTask(TaskContactForce& task, double weight,
70  unsigned int priorityLevel,
71  double transition_duration = 0.0) override;
72 
73  bool addActuationTask(TaskActuation& task, double weight,
74  unsigned int priorityLevel,
75  double transition_duration = 0.0) override;
76 
77  bool updateTaskWeight(const std::string& task_name, double weight) override;
78 
79  bool addRigidContact(ContactBase& contact, double force_regularization_weight,
80  double motion_weight = 1.0,
81  unsigned int motion_priority_level = 0) override;
82 
83  TSID_DEPRECATED bool addRigidContact(ContactBase& contact) override;
84 
85  bool updateRigidContactWeights(const std::string& contact_name,
86  double force_regularization_weight,
87  double motion_weight = -1.0) override;
88 
89  bool addMeasuredForce(MeasuredForceBase& measuredForce) override;
90 
91  bool removeTask(const std::string& taskName,
92  double transition_duration = 0.0) override;
93 
94  bool removeRigidContact(const std::string& contactName,
95  double transition_duration = 0.0) override;
96 
97  bool removeMeasuredForce(const std::string& measuredForceName) override;
98 
100  ConstRefVector v) override;
101 
102  const Vector& getActuatorForces(const HQPOutput& sol) override;
103  const Vector& getAccelerations(const HQPOutput& sol) override;
104  const Vector& getContactForces(const HQPOutput& sol) override;
105  Vector getContactForces(const std::string& name, const HQPOutput& sol);
106  bool getContactForces(const std::string& name, const HQPOutput& sol,
107  RefVector f) override;
108 
109  public:
110  template <class TaskLevelPointer>
111  void addTask(TaskLevelPointer task, double weight,
112  unsigned int priorityLevel);
113 
114  void resizeHqpData();
115 
116  bool removeFromHqpData(const std::string& name);
117 
118  bool decodeSolution(const HQPOutput& sol);
119 
122  std::vector<std::shared_ptr<TaskLevel>> m_taskMotions;
123  std::vector<std::shared_ptr<TaskLevelForce>> m_taskContactForces;
124  std::vector<std::shared_ptr<TaskLevel>> m_taskActuations;
125  std::vector<std::shared_ptr<ContactLevel>> m_contacts;
126  std::vector<std::shared_ptr<MeasuredForceLevel>> m_measuredForces;
127  double m_t;
128  unsigned int m_k;
129  unsigned int m_v;
130  unsigned int m_u;
131  unsigned int m_eq;
132  unsigned int m_in;
134  std::shared_ptr<math::ConstraintEquality> m_baseDynamics;
135 
140 
142 
143  std::vector<std::shared_ptr<ContactTransitionInfo>> m_contactTransitions;
144 };
145 } // namespace tsid
146 #endif // ifndef __invdyn_inverse_dynamics_formulation_acc_force_hpp__
tsid::InverseDynamicsFormulationAccForce::Vector
math::Vector Vector
Definition: inverse-dynamics-formulation-acc-force.hpp:46
demo_quadruped.v
v
Definition: demo_quadruped.py:80
tsid::InverseDynamicsFormulationAccForce::resizeHqpData
void resizeHqpData()
Definition: inverse-dynamics-formulation-acc-force.cpp:63
tsid::InverseDynamicsFormulationAccForce::m_v
unsigned int m_v
number of contact-force variables
Definition: inverse-dynamics-formulation-acc-force.hpp:129
tsid::tasks::TaskBase
Base template of a Task. Each class is defined according to a constant model of a robot.
Definition: task-base.hpp:34
tsid::contacts::ContactBase
Base template of a Contact.
Definition: contact-base.hpp:31
tsid::InverseDynamicsFormulationAccForce::TaskContactForce
tasks::TaskContactForce TaskContactForce
Definition: inverse-dynamics-formulation-acc-force.hpp:51
pinocchio::DataTpl
tsid::InverseDynamicsFormulationAccForce::removeTask
bool removeTask(const std::string &taskName, double transition_duration=0.0) override
Definition: inverse-dynamics-formulation-acc-force.cpp:477
tsid::InverseDynamicsFormulationAccForce::updateTaskWeight
bool updateTaskWeight(const std::string &task_name, double weight) override
Definition: inverse-dynamics-formulation-acc-force.cpp:162
tsid::InverseDynamicsFormulationAccForce::getContactForces
const Vector & getContactForces(const HQPOutput &sol) override
Definition: inverse-dynamics-formulation-acc-force.cpp:443
tsid::InverseDynamicsFormulationAccForce::m_k
unsigned int m_k
time
Definition: inverse-dynamics-formulation-acc-force.hpp:128
tsid::tasks::TaskContactForce
Definition: task-contact-force.hpp:28
tsid::InverseDynamicsFormulationAccForce::nEq
unsigned int nEq() const override
Definition: inverse-dynamics-formulation-acc-force.cpp:59
tsid::InverseDynamicsFormulationAccForce::m_contactTransitions
std::vector< std::shared_ptr< ContactTransitionInfo > > m_contactTransitions
sum of external measured forces
Definition: inverse-dynamics-formulation-acc-force.hpp:143
tsid::InverseDynamicsFormulationAccForce::Matrix
math::Matrix Matrix
Definition: inverse-dynamics-formulation-acc-force.hpp:47
demo_quadruped.robot
robot
Definition: demo_quadruped.py:51
tsid::InverseDynamicsFormulationAccForce::getAccelerations
const Vector & getAccelerations(const HQPOutput &sol) override
Definition: inverse-dynamics-formulation-acc-force.cpp:437
tsid::ContactTransitionInfo::time_end
double time_end
Definition: inverse-dynamics-formulation-acc-force.hpp:34
tsid::contacts::MeasuredForceBase
Definition: measured-force-base.hpp:28
constraint-equality.hpp
tsid::InverseDynamicsFormulationAccForce::HQPOutput
solvers::HQPOutput HQPOutput
Definition: inverse-dynamics-formulation-acc-force.hpp:54
tsid::InverseDynamicsFormulationBase
Wrapper for a robot based on pinocchio.
Definition: inverse-dynamics-formulation-base.hpp:66
tsid::InverseDynamicsFormulationAccForce::addTask
void addTask(TaskLevelPointer task, double weight, unsigned int priorityLevel)
Definition: inverse-dynamics-formulation-acc-force.cpp:74
tsid::InverseDynamicsFormulationAccForce::updateRigidContactWeights
bool updateRigidContactWeights(const std::string &contact_name, double force_regularization_weight, double motion_weight=-1.0) override
Update the weights associated to the specified contact.
Definition: inverse-dynamics-formulation-acc-force.cpp:221
test_Contact.contact
contact
Definition: test_Contact.py:37
tsid::InverseDynamicsFormulationAccForce::m_data
Data m_data
Definition: inverse-dynamics-formulation-acc-force.hpp:120
tsid::InverseDynamicsFormulationAccForce::TaskMotion
tasks::TaskMotion TaskMotion
Definition: inverse-dynamics-formulation-acc-force.hpp:50
demo_quadruped.q
q
Definition: demo_quadruped.py:74
tsid::InverseDynamicsFormulationAccForce::data
Data & data() override
Definition: inverse-dynamics-formulation-acc-force.cpp:53
tsid::InverseDynamicsFormulationAccForce::m_dv
Vector m_dv
Definition: inverse-dynamics-formulation-acc-force.hpp:137
tsid::InverseDynamicsFormulationAccForce::m_tau
Vector m_tau
Definition: inverse-dynamics-formulation-acc-force.hpp:139
tsid::InverseDynamicsFormulationAccForce::m_taskContactForces
std::vector< std::shared_ptr< TaskLevelForce > > m_taskContactForces
Definition: inverse-dynamics-formulation-acc-force.hpp:123
tsid::InverseDynamicsFormulationAccForce::nVar
unsigned int nVar() const override
Definition: inverse-dynamics-formulation-acc-force.cpp:55
tsid::solvers::HQPOutput
Definition: solver-HQP-output.hpp:29
tsid::InverseDynamicsFormulationBase::RefVector
math::RefVector RefVector
Definition: inverse-dynamics-formulation-base.hpp:72
tsid::InverseDynamicsFormulationAccForce::m_in
unsigned int m_in
number of equality constraints
Definition: inverse-dynamics-formulation-acc-force.hpp:132
tsid::InverseDynamicsFormulationAccForce::ConstRefVector
math::ConstRefVector ConstRefVector
Definition: inverse-dynamics-formulation-acc-force.hpp:48
tsid::InverseDynamicsFormulationAccForce::removeMeasuredForce
bool removeMeasuredForce(const std::string &measuredForceName) override
Definition: inverse-dynamics-formulation-acc-force.cpp:577
tsid::InverseDynamicsFormulationAccForce::m_solutionDecoded
bool m_solutionDecoded
Definition: inverse-dynamics-formulation-acc-force.hpp:136
tsid::InverseDynamicsFormulationAccForce::m_hqpData
HQPData m_hqpData
Definition: inverse-dynamics-formulation-acc-force.hpp:121
tsid::InverseDynamicsFormulationAccForce::addActuationTask
bool addActuationTask(TaskActuation &task, double weight, unsigned int priorityLevel, double transition_duration=0.0) override
Definition: inverse-dynamics-formulation-acc-force.cpp:128
tsid::InverseDynamicsFormulationAccForce::decodeSolution
bool decodeSolution(const HQPOutput &sol)
Definition: inverse-dynamics-formulation-acc-force.cpp:415
tsid::InverseDynamicsFormulationAccForce::m_Jc
Matrix m_Jc
number of inequality constraints
Definition: inverse-dynamics-formulation-acc-force.hpp:133
tsid::InverseDynamicsFormulationAccForce::Data
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef pinocchio::Data Data
Definition: inverse-dynamics-formulation-acc-force.hpp:45
tsid::math::Matrix
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > Matrix
Definition: math/fwd.hpp:36
tsid::InverseDynamicsFormulationAccForce::addForceTask
bool addForceTask(TaskContactForce &task, double weight, unsigned int priorityLevel, double transition_duration=0.0) override
Definition: inverse-dynamics-formulation-acc-force.cpp:113
tsid::InverseDynamicsFormulationAccForce::MeasuredForceBase
contacts::MeasuredForceBase MeasuredForceBase
Definition: inverse-dynamics-formulation-acc-force.hpp:53
tsid::InverseDynamicsFormulationAccForce::m_f
Vector m_f
Definition: inverse-dynamics-formulation-acc-force.hpp:138
tsid::ContactTransitionInfo
Definition: inverse-dynamics-formulation-acc-force.hpp:29
tsid::InverseDynamicsFormulationAccForce::getActuatorForces
const Vector & getActuatorForces(const HQPOutput &sol) override
Definition: inverse-dynamics-formulation-acc-force.cpp:431
setup.name
name
Definition: setup.in.py:179
tsid::InverseDynamicsFormulationAccForce::m_taskActuations
std::vector< std::shared_ptr< TaskLevel > > m_taskActuations
Definition: inverse-dynamics-formulation-acc-force.hpp:124
tsid::tasks::TaskMotion
Definition: task-motion.hpp:26
tsid::math::ConstRefVector
const typedef Eigen::Ref< const Vector > ConstRefVector
Definition: math/fwd.hpp:48
tsid::InverseDynamicsFormulationAccForce::nIn
unsigned int nIn() const override
Definition: inverse-dynamics-formulation-acc-force.cpp:61
tsid::InverseDynamicsFormulationAccForce::removeFromHqpData
bool removeFromHqpData(const std::string &name)
Definition: inverse-dynamics-formulation-acc-force.cpp:588
tsid::ContactTransitionInfo::fMax_end
double fMax_end
max normal force at time time_start
Definition: inverse-dynamics-formulation-acc-force.hpp:36
tsid::InverseDynamicsFormulationAccForce::TaskBase
tasks::TaskBase TaskBase
Definition: inverse-dynamics-formulation-acc-force.hpp:49
tsid::math::Vector
Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > Vector
Definition: math/fwd.hpp:35
tsid::InverseDynamicsFormulationAccForce::computeProblemData
const HQPData & computeProblemData(double time, ConstRefVector q, ConstRefVector v) override
Definition: inverse-dynamics-formulation-acc-force.cpp:255
tsid::InverseDynamicsFormulationBase::HQPData
solvers::HQPData HQPData
Definition: inverse-dynamics-formulation-base.hpp:80
demo_quadruped.time
time
Definition: demo_quadruped.py:213
tsid::InverseDynamicsFormulationAccForce::removeRigidContact
bool removeRigidContact(const std::string &contactName, double transition_duration=0.0) override
Definition: inverse-dynamics-formulation-acc-force.cpp:520
inverse-dynamics-formulation-base.hpp
tsid::ContactTransitionInfo::fMax_start
double fMax_start
Definition: inverse-dynamics-formulation-acc-force.hpp:35
tsid::InverseDynamicsFormulationAccForce::m_taskMotions
std::vector< std::shared_ptr< TaskLevel > > m_taskMotions
Definition: inverse-dynamics-formulation-acc-force.hpp:122
tsid
Definition: bindings/python/constraint/constraint-bound.cpp:21
tsid::tasks::TaskActuation
Definition: task-actuation.hpp:25
tsid::robots::RobotWrapper
Wrapper for a robot based on pinocchio.
Definition: robots/robot-wrapper.hpp:37
tsid::InverseDynamicsFormulationAccForce
Definition: inverse-dynamics-formulation-acc-force.hpp:40
tsid::InverseDynamicsFormulationAccForce::h_fext
Vector h_fext
Definition: inverse-dynamics-formulation-acc-force.hpp:141
tsid::ContactTransitionInfo::time_start
EIGEN_MAKE_ALIGNED_OPERATOR_NEW double time_start
Definition: inverse-dynamics-formulation-acc-force.hpp:33
tsid::InverseDynamicsFormulationAccForce::m_measuredForces
std::vector< std::shared_ptr< MeasuredForceLevel > > m_measuredForces
Definition: inverse-dynamics-formulation-acc-force.hpp:126
tsid::InverseDynamicsFormulationAccForce::TaskActuation
tasks::TaskActuation TaskActuation
Definition: inverse-dynamics-formulation-acc-force.hpp:52
tsid::InverseDynamicsFormulationAccForce::addMotionTask
bool addMotionTask(TaskMotion &task, double weight, unsigned int priorityLevel, double transition_duration=0.0) override
Definition: inverse-dynamics-formulation-acc-force.cpp:97
tsid::InverseDynamicsFormulationAccForce::addMeasuredForce
bool addMeasuredForce(MeasuredForceBase &measuredForce) override
Definition: inverse-dynamics-formulation-acc-force.cpp:247
tsid::InverseDynamicsFormulationAccForce::m_u
unsigned int m_u
number of acceleration variables
Definition: inverse-dynamics-formulation-acc-force.hpp:130
tsid::ContactTransitionInfo::contactLevel
std::shared_ptr< ContactLevel > contactLevel
max normal force at time time_end
Definition: inverse-dynamics-formulation-acc-force.hpp:37
contact-level.hpp
tsid::InverseDynamicsFormulationAccForce::InverseDynamicsFormulationAccForce
InverseDynamicsFormulationAccForce(const std::string &name, RobotWrapper &robot, bool verbose=false)
Definition: inverse-dynamics-formulation-acc-force.cpp:32
tsid::InverseDynamicsFormulationAccForce::m_contacts
std::vector< std::shared_ptr< ContactLevel > > m_contacts
Definition: inverse-dynamics-formulation-acc-force.hpp:125
tsid::InverseDynamicsFormulationAccForce::m_t
double m_t
Definition: inverse-dynamics-formulation-acc-force.hpp:127
tsid::InverseDynamicsFormulationAccForce::m_eq
unsigned int m_eq
number of unactuated DoFs
Definition: inverse-dynamics-formulation-acc-force.hpp:131
tsid::InverseDynamicsFormulationAccForce::m_baseDynamics
std::shared_ptr< math::ConstraintEquality > m_baseDynamics
contact force Jacobian
Definition: inverse-dynamics-formulation-acc-force.hpp:134
tsid::InverseDynamicsFormulationAccForce::addRigidContact
bool addRigidContact(ContactBase &contact, double force_regularization_weight, double motion_weight=1.0, unsigned int motion_priority_level=0) override
Add a rigid contact constraint to the model, introducing the associated reaction forces as problem va...
Definition: inverse-dynamics-formulation-acc-force.cpp:177


tsid
Author(s): Andrea Del Prete, Justin Carpentier
autogenerated on Sat May 3 2025 02:48:16