src/tasks/task-joint-posture.cpp
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 
21 
22 namespace tsid {
23 namespace tasks {
24 using namespace math;
25 using namespace trajectories;
26 using namespace pinocchio;
27 
29  : TaskMotion(name, robot),
30  m_ref(robot.nq_actuated(), robot.na()),
31  m_constraint(name, robot.na(), robot.nv()) {
33  m_Kp.setZero(robot.na());
34  m_Kd.setZero(robot.na());
35  Vector m = Vector::Ones(robot.na());
36  setMask(m);
37 }
38 
39 const Vector& TaskJointPosture::mask() const { return m_mask; }
40 
42  // std::cerr<<"The method TaskJointPosture::mask is deprecated. Use
43  // TaskJointPosture::setMask instead.\n";
44  return setMask(m);
45 }
46 
49  m.size() == m_robot.na(),
50  "The size of the mask needs to equal " + std::to_string(m_robot.na()));
51  m_mask = m;
52  const Vector::Index dim = static_cast<Vector::Index>(m.sum());
53  Matrix S = Matrix::Zero(dim, m_robot.nv());
54  m_activeAxes.resize(dim);
55  unsigned int j = 0;
56  for (unsigned int i = 0; i < m.size(); i++)
57  if (m(i) != 0.0) {
59  m(i) == 1.0, "Valid mask values are either 0.0 or 1.0 received: " +
60  std::to_string(m(i)));
61  S(j, m_robot.nv() - m_robot.na() + i) = 1.0;
62  m_activeAxes(j) = i;
63  j++;
64  }
65  m_constraint.resize((unsigned int)dim, m_robot.nv());
67 }
68 
69 int TaskJointPosture::dim() const { return (int)m_mask.sum(); }
70 
71 const Vector& TaskJointPosture::Kp() { return m_Kp; }
72 
73 const Vector& TaskJointPosture::Kd() { return m_Kd; }
74 
77  "The size of the Kp vector needs to equal " +
78  std::to_string(m_robot.na()));
79  m_Kp = Kp;
80 }
81 
84  "The size of the Kd vector needs to equal " +
85  std::to_string(m_robot.na()));
86  m_Kd = Kd;
87 }
88 
91  ref.getValue().size() == m_robot.nq_actuated(),
92  "The size of the reference value vector needs to equal " +
93  std::to_string(m_robot.nq_actuated()));
95  ref.getDerivative().size() == m_robot.na(),
96  "The size of the reference value derivative vector needs to equal " +
97  std::to_string(m_robot.na()));
99  ref.getSecondDerivative().size() == m_robot.na(),
100  "The size of the reference value second derivative vector needs to "
101  "equal " +
102  std::to_string(m_robot.na()));
103  m_ref = ref;
104 }
105 
107 
109  return m_a_des;
110 }
111 
113  return m_constraint.matrix() * dv;
114 }
115 
117 
119 
120 const Vector& TaskJointPosture::position() const { return m_p; }
121 
122 const Vector& TaskJointPosture::velocity() const { return m_v; }
123 
125  return m_ref.getValue();
126 }
127 
129  return m_ref.getDerivative();
130 }
131 
133  return m_constraint;
134 }
135 
137  ConstRefVector v, Data&) {
139 
140  // Compute errors
142  .tail(m_robot.na());
143 
144  m_v = v.tail(m_robot.na());
146  m_a_des = -m_Kp.cwiseProduct(m_p_error) - m_Kd.cwiseProduct(m_v_error) +
148 
149  for (unsigned int i = 0; i < m_activeAxes.size(); i++)
151  return m_constraint;
152 }
153 
154 } // namespace tasks
155 } // namespace tsid
tsid::tasks::TaskJointPosture::setMask
void setMask(math::ConstRefVector mask) override
Definition: src/tasks/task-joint-posture.cpp:47
demo_quadruped.v
v
Definition: demo_quadruped.py:80
tsid::tasks::TaskJointPosture::m_v
Vector m_v
Definition: tasks/task-joint-posture.hpp:75
tsid::trajectories::TrajectorySample::getDerivative
const math::Vector & getDerivative() const
Definition: trajectories/trajectory-base.hpp:44
tsid::tasks::TaskJointPosture::m_constraint
ConstraintEquality m_constraint
Definition: tasks/task-joint-posture.hpp:80
tsid::tasks::TaskJointPosture::getAcceleration
Vector getAcceleration(ConstRefVector dv) const override
Definition: src/tasks/task-joint-posture.cpp:112
tsid::tasks::TaskJointPosture::getReference
const TrajectorySample & getReference() const override
Definition: src/tasks/task-joint-posture.cpp:106
tsid::trajectories::TrajectorySample
Definition: trajectories/trajectory-base.hpp:33
pinocchio::DataTpl
PINOCCHIO_CHECK_INPUT_ARGUMENT
#define PINOCCHIO_CHECK_INPUT_ARGUMENT(...)
dv
dv
tsid::math::ConstraintEquality::vector
const Vector & vector() const override
Definition: src/math/constraint-equality.cpp:55
tsid::tasks::TaskJointPosture::position_error
const Vector & position_error() const override
Definition: src/tasks/task-joint-posture.cpp:116
tsid::tasks::TaskJointPosture::m_p_error
Vector m_p_error
Definition: tasks/task-joint-posture.hpp:74
tsid::tasks::TaskJointPosture::m_ref
TrajectorySample m_ref
Definition: tasks/task-joint-posture.hpp:78
tsid::math::ConstraintBase
Abstract class representing a linear equality/inequality constraint. Equality constraints are represe...
Definition: constraint-base.hpp:35
tsid::tasks::TaskJointPosture::mask
const TSID_DEPRECATED Vector & mask() const
Definition: src/tasks/task-joint-posture.cpp:39
pinocchio::difference
void difference(const LieGroupGenericTpl< LieGroupCollection > &lg, const Eigen::MatrixBase< ConfigL_t > &q0, const Eigen::MatrixBase< ConfigR_t > &q1, const Eigen::MatrixBase< Tangent_t > &v)
i
int i
ref
list ref
demo_quadruped.robot
robot
Definition: demo_quadruped.py:51
tsid::tasks::TaskJointPosture::setReference
void setReference(const TrajectorySample &ref)
Definition: src/tasks/task-joint-posture.cpp:89
tsid::tasks::TaskJointPosture::velocity_error
const Vector & velocity_error() const override
Definition: src/tasks/task-joint-posture.cpp:118
test_Contact.Kp
Kp
Definition: test_Contact.py:44
tsid::tasks::TaskJointPosture::m_Kd
Vector m_Kd
Definition: tasks/task-joint-posture.hpp:73
tsid::tasks::TaskMotion::m_mask
Vector m_mask
Definition: task-motion.hpp:53
tsid::math::ConstraintEquality::resize
void resize(unsigned int r, unsigned int c) override
Definition: src/math/constraint-equality.cpp:46
Index
PINOCCHIO_COMPILER_DIAGNOSTIC_POP typedef std::size_t Index
tsid::tasks::TaskJointPosture::m_activeAxes
VectorXi m_activeAxes
Definition: tasks/task-joint-posture.hpp:77
demo_quadruped.q
q
Definition: demo_quadruped.py:74
ex_4_conf.nv
int nv
Definition: ex_4_conf.py:23
tsid::tasks::TaskJointPosture::velocity_ref
const Vector & velocity_ref() const override
Definition: src/tasks/task-joint-posture.cpp:128
S
S
tsid::robots::RobotWrapper::nv
virtual int nv() const
Definition: src/robots/robot-wrapper.cpp:97
tsid::tasks::TaskJointPosture::position
const Vector & position() const override
Definition: src/tasks/task-joint-posture.cpp:120
tsid::robots::RobotWrapper::nq_actuated
virtual int nq_actuated() const
Definition: src/robots/robot-wrapper.cpp:99
tsid::robots::RobotWrapper::model
const Model & model() const
Accessor to model.
Definition: src/robots/robot-wrapper.cpp:102
task-joint-posture.hpp
tsid::math::ConstraintBase::matrix
virtual const Matrix & matrix() const
Definition: constraint-base.cpp:35
tsid::tasks::TaskJointPosture::getConstraint
const ConstraintBase & getConstraint() const override
Definition: src/tasks/task-joint-posture.cpp:132
robot-wrapper.hpp
tsid::trajectories::TrajectorySample::getValue
TSID_DISABLE_WARNING_PUSH const TSID_DISABLE_WARNING_DEPRECATED math::Vector & getValue() const
Definition: trajectories/trajectory-base.hpp:43
tsid::tasks::TaskJointPosture::m_v_error
Vector m_v_error
Definition: tasks/task-joint-posture.hpp:74
tsid::math::Matrix
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > Matrix
Definition: math/fwd.hpp:36
setup.name
name
Definition: setup.in.py:179
tsid::tasks::TaskJointPosture::Kd
const Vector & Kd()
Definition: src/tasks/task-joint-posture.cpp:73
tsid::tasks::TaskMotion
Definition: task-motion.hpp:26
pinocchio::neutral
Eigen::Matrix< typename LieGroupCollection::Scalar, Eigen::Dynamic, 1, LieGroupCollection::Options > neutral(const LieGroupGenericTpl< LieGroupCollection > &lg)
tsid::tasks::TaskJointPosture::position_ref
const Vector & position_ref() const override
Definition: src/tasks/task-joint-posture.cpp:124
joint-configuration.hpp
tsid::tasks::TaskJointPosture::getDesiredAcceleration
const Vector & getDesiredAcceleration() const override
Definition: src/tasks/task-joint-posture.cpp:108
tsid
Definition: bindings/python/constraint/constraint-bound.cpp:21
tsid::tasks::TaskJointPosture::m_a_des
Vector m_a_des
Definition: tasks/task-joint-posture.hpp:76
test_Constraint.m
int m
Definition: test_Constraint.py:41
tsid::robots::RobotWrapper
Wrapper for a robot based on pinocchio.
Definition: robots/robot-wrapper.hpp:37
tsid::tasks::TaskJointPosture::Vector
math::Vector Vector
Definition: tasks/task-joint-posture.hpp:35
tsid::tasks::TaskJointPosture::dim
int dim() const override
Return the dimension of the task. \info should be overloaded in the child class.
Definition: src/tasks/task-joint-posture.cpp:69
tsid::tasks::TaskJointPosture::m_Kp
Vector m_Kp
Definition: tasks/task-joint-posture.hpp:72
tsid::trajectories::TrajectorySample::getSecondDerivative
const math::Vector & getSecondDerivative() const
Definition: trajectories/trajectory-base.hpp:45
tsid::tasks::TaskJointPosture::Kp
const Vector & Kp()
Definition: src/tasks/task-joint-posture.cpp:71
test_Tasks.na
int na
Definition: test_Tasks.py:95
tsid::tasks::TaskJointPosture::compute
const ConstraintBase & compute(const double t, ConstRefVector q, ConstRefVector v, Data &data) override
Definition: src/tasks/task-joint-posture.cpp:136
test_Contact.Kd
int Kd
Definition: test_Contact.py:45
tsid::tasks::TaskBase::m_robot
RobotWrapper & m_robot
Reference on the robot model.
Definition: task-base.hpp:64
tsid::tasks::TaskJointPosture::velocity
const Vector & velocity() const override
Definition: src/tasks/task-joint-posture.cpp:122
tsid::tasks::TaskJointPosture::m_ref_q_augmented
Vector m_ref_q_augmented
Definition: tasks/task-joint-posture.hpp:79
tsid::tasks::TaskJointPosture::TaskJointPosture
TaskJointPosture(const std::string &name, RobotWrapper &robot)
Definition: src/tasks/task-joint-posture.cpp:28
tsid::tasks::TaskBase::ConstRefVector
math::ConstRefVector ConstRefVector
Definition: task-base.hpp:39
tsid::robots::RobotWrapper::na
virtual int na() const
Definition: src/robots/robot-wrapper.cpp:98
tsid::math::ConstraintBase::setMatrix
virtual bool setMatrix(ConstRefMatrix A)
Definition: constraint-base.cpp:39
tsid::tasks::TaskJointPosture::m_p
Vector m_p
Definition: tasks/task-joint-posture.hpp:75
pinocchio


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