tsid 1.9.0
Efficient Task Space Inverse Dynamics for Multi-body Systems based on Pinocchio
Loading...
Searching...
No Matches
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
5#ifndef __invdyn_inverse_dynamics_formulation_acc_force_hpp__
6#define __invdyn_inverse_dynamics_formulation_acc_force_hpp__
7
8#include <vector>
9
13
14namespace tsid {
15
17 public:
18 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
19
20 double time_start;
21 double time_end;
22 double fMax_start;
23 double fMax_end;
24 std::shared_ptr<ContactLevel> contactLevel;
25};
26
29 public:
30 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
31
32 typedef pinocchio::Data Data;
42
43 InverseDynamicsFormulationAccForce(const std::string& name,
44 RobotWrapper& robot, bool verbose = false);
45
46 Data& data() override;
47
48 unsigned int nVar() const override;
49 unsigned int nEq() const override;
50 unsigned int nIn() const override;
51
52 bool addMotionTask(TaskMotion& task, double weight,
53 unsigned int priorityLevel,
54 double transition_duration = 0.0) override;
55
56 bool addForceTask(TaskContactForce& task, double weight,
57 unsigned int priorityLevel,
58 double transition_duration = 0.0) override;
59
60 bool addActuationTask(TaskActuation& task, double weight,
61 unsigned int priorityLevel,
62 double transition_duration = 0.0) override;
63
64 bool updateTaskWeight(const std::string& task_name, double weight) override;
65
66 bool addRigidContact(ContactBase& contact, double force_regularization_weight,
67 double motion_weight = 1.0,
68 unsigned int motion_priority_level = 0) override;
69
70 TSID_DEPRECATED bool addRigidContact(ContactBase& contact) override;
71
72 bool updateRigidContactWeights(const std::string& contact_name,
73 double force_regularization_weight,
74 double motion_weight = -1.0) override;
75
76 bool addMeasuredForce(MeasuredForceBase& measuredForce) override;
77
78 bool removeTask(const std::string& taskName,
79 double transition_duration = 0.0) override;
80
81 bool removeRigidContact(const std::string& contactName,
82 double transition_duration = 0.0) override;
83
84 bool removeMeasuredForce(const std::string& measuredForceName) override;
85
86 const HQPData& computeProblemData(double time, ConstRefVector q,
87 ConstRefVector v) override;
88
89 const Vector& getActuatorForces(const HQPOutput& sol) override;
90 const Vector& getAccelerations(const HQPOutput& sol) override;
91 const Vector& getContactForces(const HQPOutput& sol) override;
92 Vector getContactForces(const std::string& name, const HQPOutput& sol);
93 bool getContactForces(const std::string& name, const HQPOutput& sol,
94 RefVector f) override;
95 unsigned int getTaskPriority(const std::string& name) override;
96
97 public:
98 template <class TaskLevelPointer>
99 void addTask(TaskLevelPointer task, double weight,
100 unsigned int priorityLevel);
101
102 void resizeHqpData();
103
104 bool removeFromHqpData(const std::string& name);
105
106 bool decodeSolution(const HQPOutput& sol);
107
110 std::vector<std::shared_ptr<TaskLevel>> m_taskMotions;
111 std::vector<std::shared_ptr<TaskLevelForce>> m_taskContactForces;
112 std::vector<std::shared_ptr<TaskLevel>> m_taskActuations;
113 std::vector<std::shared_ptr<ContactLevel>> m_contacts;
114 std::vector<std::shared_ptr<MeasuredForceLevel>> m_measuredForces;
115 double m_t;
116 unsigned int m_k;
117 unsigned int m_v;
118 unsigned int m_u;
119 unsigned int m_eq;
120 unsigned int m_in;
122 std::shared_ptr<math::ConstraintEquality> m_baseDynamics;
123
128
130
131 std::vector<std::shared_ptr<ContactTransitionInfo>> m_contactTransitions;
132};
133} // namespace tsid
134#endif // ifndef __invdyn_inverse_dynamics_formulation_acc_force_hpp__
Definition inverse-dynamics-formulation-acc-force.hpp:16
EIGEN_MAKE_ALIGNED_OPERATOR_NEW double time_start
Definition inverse-dynamics-formulation-acc-force.hpp:20
double fMax_start
Definition inverse-dynamics-formulation-acc-force.hpp:22
double fMax_end
max normal force at time time_start
Definition inverse-dynamics-formulation-acc-force.hpp:23
std::shared_ptr< ContactLevel > contactLevel
max normal force at time time_end
Definition inverse-dynamics-formulation-acc-force.hpp:24
double time_end
Definition inverse-dynamics-formulation-acc-force.hpp:21
void addTask(TaskLevelPointer task, double weight, unsigned int priorityLevel)
Definition inverse-dynamics-formulation-acc-force.cpp:61
HQPData m_hqpData
Definition inverse-dynamics-formulation-acc-force.hpp:109
bool updateTaskWeight(const std::string &task_name, double weight) override
Definition inverse-dynamics-formulation-acc-force.cpp:149
unsigned int m_u
number of acceleration variables
Definition inverse-dynamics-formulation-acc-force.hpp:118
std::vector< std::shared_ptr< TaskLevelForce > > m_taskContactForces
Definition inverse-dynamics-formulation-acc-force.hpp:111
Vector m_tau
Definition inverse-dynamics-formulation-acc-force.hpp:127
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef pinocchio::Data Data
Definition inverse-dynamics-formulation-acc-force.hpp:32
unsigned int m_in
number of equality constraints
Definition inverse-dynamics-formulation-acc-force.hpp:120
tasks::TaskBase TaskBase
Definition inverse-dynamics-formulation-acc-force.hpp:36
unsigned int m_eq
number of unactuated DoFs
Definition inverse-dynamics-formulation-acc-force.hpp:119
bool decodeSolution(const HQPOutput &sol)
Definition inverse-dynamics-formulation-acc-force.cpp:402
void resizeHqpData()
Definition inverse-dynamics-formulation-acc-force.cpp:50
unsigned int m_k
time
Definition inverse-dynamics-formulation-acc-force.hpp:116
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:208
unsigned int nEq() const override
Definition inverse-dynamics-formulation-acc-force.cpp:46
math::Matrix Matrix
Definition inverse-dynamics-formulation-acc-force.hpp:34
const Vector & getActuatorForces(const HQPOutput &sol) override
Definition inverse-dynamics-formulation-acc-force.cpp:418
std::vector< std::shared_ptr< TaskLevel > > m_taskMotions
Definition inverse-dynamics-formulation-acc-force.hpp:110
tasks::TaskContactForce TaskContactForce
Definition inverse-dynamics-formulation-acc-force.hpp:38
const HQPData & computeProblemData(double time, ConstRefVector q, ConstRefVector v) override
Definition inverse-dynamics-formulation-acc-force.cpp:242
math::Vector Vector
Definition inverse-dynamics-formulation-acc-force.hpp:33
bool addMeasuredForce(MeasuredForceBase &measuredForce) override
Definition inverse-dynamics-formulation-acc-force.cpp:234
bool removeMeasuredForce(const std::string &measuredForceName) override
Definition inverse-dynamics-formulation-acc-force.cpp:567
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:164
bool removeTask(const std::string &taskName, double transition_duration=0.0) override
Definition inverse-dynamics-formulation-acc-force.cpp:464
Vector h_fext
Definition inverse-dynamics-formulation-acc-force.hpp:129
const Vector & getContactForces(const HQPOutput &sol) override
Definition inverse-dynamics-formulation-acc-force.cpp:430
InverseDynamicsFormulationAccForce(const std::string &name, RobotWrapper &robot, bool verbose=false)
Definition inverse-dynamics-formulation-acc-force.cpp:19
tasks::TaskMotion TaskMotion
Definition inverse-dynamics-formulation-acc-force.hpp:37
math::ConstRefVector ConstRefVector
Definition inverse-dynamics-formulation-acc-force.hpp:35
std::shared_ptr< math::ConstraintEquality > m_baseDynamics
contact force Jacobian
Definition inverse-dynamics-formulation-acc-force.hpp:122
std::vector< std::shared_ptr< TaskLevel > > m_taskActuations
Definition inverse-dynamics-formulation-acc-force.hpp:112
Vector m_f
Definition inverse-dynamics-formulation-acc-force.hpp:126
unsigned int nVar() const override
Definition inverse-dynamics-formulation-acc-force.cpp:42
bool removeRigidContact(const std::string &contactName, double transition_duration=0.0) override
Definition inverse-dynamics-formulation-acc-force.cpp:507
bool addForceTask(TaskContactForce &task, double weight, unsigned int priorityLevel, double transition_duration=0.0) override
Definition inverse-dynamics-formulation-acc-force.cpp:100
Matrix m_Jc
number of inequality constraints
Definition inverse-dynamics-formulation-acc-force.hpp:121
const Vector & getAccelerations(const HQPOutput &sol) override
Definition inverse-dynamics-formulation-acc-force.cpp:424
bool m_solutionDecoded
Definition inverse-dynamics-formulation-acc-force.hpp:124
Data m_data
Definition inverse-dynamics-formulation-acc-force.hpp:108
bool removeFromHqpData(const std::string &name)
Definition inverse-dynamics-formulation-acc-force.cpp:578
solvers::HQPOutput HQPOutput
Definition inverse-dynamics-formulation-acc-force.hpp:41
Data & data() override
Definition inverse-dynamics-formulation-acc-force.cpp:40
bool addMotionTask(TaskMotion &task, double weight, unsigned int priorityLevel, double transition_duration=0.0) override
Definition inverse-dynamics-formulation-acc-force.cpp:84
std::vector< std::shared_ptr< ContactLevel > > m_contacts
Definition inverse-dynamics-formulation-acc-force.hpp:113
Vector m_dv
Definition inverse-dynamics-formulation-acc-force.hpp:125
unsigned int m_v
number of contact-force variables
Definition inverse-dynamics-formulation-acc-force.hpp:117
contacts::MeasuredForceBase MeasuredForceBase
Definition inverse-dynamics-formulation-acc-force.hpp:40
unsigned int getTaskPriority(const std::string &name) override
Definition inverse-dynamics-formulation-acc-force.cpp:594
double m_t
Definition inverse-dynamics-formulation-acc-force.hpp:115
unsigned int nIn() const override
Definition inverse-dynamics-formulation-acc-force.cpp:48
std::vector< std::shared_ptr< ContactTransitionInfo > > m_contactTransitions
sum of external measured forces
Definition inverse-dynamics-formulation-acc-force.hpp:131
std::vector< std::shared_ptr< MeasuredForceLevel > > m_measuredForces
Definition inverse-dynamics-formulation-acc-force.hpp:114
bool addActuationTask(TaskActuation &task, double weight, unsigned int priorityLevel, double transition_duration=0.0) override
Definition inverse-dynamics-formulation-acc-force.cpp:115
tasks::TaskActuation TaskActuation
Definition inverse-dynamics-formulation-acc-force.hpp:39
InverseDynamicsFormulationBase(const std::string &name, RobotWrapper &robot, bool verbose=false)
Definition inverse-dynamics-formulation-base.cpp:16
math::RefVector RefVector
Definition inverse-dynamics-formulation-base.hpp:65
solvers::HQPData HQPData
Definition inverse-dynamics-formulation-base.hpp:73
robots::RobotWrapper RobotWrapper
Definition inverse-dynamics-formulation-base.hpp:75
contacts::ContactBase ContactBase
Definition inverse-dynamics-formulation-base.hpp:72
Definition measured-force-base.hpp:15
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::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > Matrix
Definition fwd.hpp:23
Definition constraint-bound.hpp:25