bindings/python/contacts/contact-6d.hpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2018 CNRS, NYU, MPI Tübingen
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 __tsid_python_contact_6d_hpp__
19 #define __tsid_python_contact_6d_hpp__
20 
22 
29 
30 namespace tsid {
31 namespace python {
32 namespace bp = boost::python;
33 
34 template <typename Contact6d>
36  : public boost::python::def_visitor<Contact6DPythonVisitor<Contact6d> > {
37  template <class PyClass>
38 
39  void visit(PyClass &cl) const {
40  cl.def(bp::init<std::string, robots::RobotWrapper &, std::string,
41  Eigen::MatrixXd, Eigen::VectorXd, double, double, double>(
42  (bp::arg("name"), bp::arg("robot"), bp::arg("framename"),
43  bp::arg("contactPoint"), bp::arg("contactNormal"),
44  bp::arg("frictionCoeff"), bp::arg("minForce"),
45  bp::arg("maxForce")),
46  "Default Constructor"))
47  .def(bp::init<std::string, robots::RobotWrapper &, std::string,
48  Eigen::MatrixXd, Eigen::VectorXd, double, double, double,
49  double>(
50  (bp::arg("name"), bp::arg("robot"), bp::arg("framename"),
51  bp::arg("contactPoint"), bp::arg("contactNormal"),
52  bp::arg("frictionCoeff"), bp::arg("minForce"), bp::arg("maxForce"),
53  bp::arg("wForceReg")),
54  "Deprecated Constructor"))
55  .add_property("n_motion", &Contact6d::n_motion,
56  "return number of motion")
57  .add_property("n_force", &Contact6d::n_force, "return number of force")
58  .add_property("name", &Contact6DPythonVisitor::name, "return name")
59  .def("computeMotionTask", &Contact6DPythonVisitor::computeMotionTask,
60  bp::args("t", "q", "v", "data"))
61  .def("computeForceTask", &Contact6DPythonVisitor::computeForceTask,
62  bp::args("t", "q", "v", "data"))
63  .def("computeForceRegularizationTask",
65  bp::args("t", "q", "v", "data"))
66  .def("getMotionTask", &Contact6DPythonVisitor::getMotionTask)
67 
68  .add_property("getForceGeneratorMatrix",
69  bp::make_function(
71  bp::return_value_policy<bp::copy_const_reference>()))
72 
73  .def("getNormalForce", &Contact6DPythonVisitor::getNormalForce,
74  bp::arg("vec"))
75  .add_property("getMinNormalForce", &Contact6d::getMinNormalForce)
76  .add_property("getMaxNormalForce", &Contact6d::getMaxNormalForce)
77 
78  .add_property("Kp",
79  bp::make_function(
81  bp::return_value_policy<bp::copy_const_reference>()))
82  .add_property("Kd",
83  bp::make_function(
85  bp::return_value_policy<bp::copy_const_reference>()))
86  .def("setKp", &Contact6DPythonVisitor::setKp, bp::arg("Kp"))
87  .def("setKd", &Contact6DPythonVisitor::setKd, bp::arg("Kd"))
88 
89  .def("setContactPoints", &Contact6DPythonVisitor::setContactPoints,
90  bp::args("vec"))
91  .def("setContactNormal", &Contact6DPythonVisitor::setContactNormal,
92  bp::args("vec"))
93  .def("setFrictionCoefficient",
95  bp::args("friction_coeff"))
96  .def("setMinNormalForce", &Contact6DPythonVisitor::setMinNormalForce,
97  bp::args("min_force"))
98  .def("setMaxNormalForce", &Contact6DPythonVisitor::setMaxNormalForce,
99  bp::args("max_force"))
100  .def("setReference", &Contact6DPythonVisitor::setReference,
101  bp::args("SE3"))
102  .def("setForceReference", &Contact6DPythonVisitor::setForceReference,
103  bp::args("f_vec"))
104  .def("setRegularizationTaskWeightVector",
106  bp::args("w_vec"));
107  }
108  static std::string name(Contact6d &self) {
109  std::string name = self.name();
110  return name;
111  }
112 
114  const double t,
115  const Eigen::VectorXd &q,
116  const Eigen::VectorXd &v,
118  self.computeMotionTask(t, q, v, data);
119  math::ConstraintEquality cons(self.getMotionConstraint().name(),
120  self.getMotionConstraint().matrix(),
121  self.getMotionConstraint().vector());
122  return cons;
123  }
125  Contact6d &self, const double t, const Eigen::VectorXd &q,
126  const Eigen::VectorXd &v, const pinocchio::Data &data) {
127  self.computeForceTask(t, q, v, data);
128  math::ConstraintInequality cons(self.getForceConstraint().name(),
129  self.getForceConstraint().matrix(),
130  self.getForceConstraint().lowerBound(),
131  self.getForceConstraint().upperBound());
132  return cons;
133  }
135  Contact6d &self, const double t, const Eigen::VectorXd &q,
136  const Eigen::VectorXd &v, const pinocchio::Data &data) {
137  self.computeForceRegularizationTask(t, q, v, data);
138  math::ConstraintEquality cons(self.getForceRegularizationTask().name(),
139  self.getForceRegularizationTask().matrix(),
140  self.getForceRegularizationTask().vector());
141  return cons;
142  }
143  static tsid::tasks::TaskSE3Equality getMotionTask(Contact6d &self) {
144  tsid::tasks::TaskSE3Equality t = self.getMotionTask();
145  return t;
146  }
147 
148  static const Eigen::MatrixXd &getForceGeneratorMatrix(Contact6d &self) {
149  return self.getForceGeneratorMatrix();
150  }
151  static const Eigen::VectorXd &Kp(Contact6d &self) { return self.Kp(); }
152  static const Eigen::VectorXd &Kd(Contact6d &self) { return self.Kd(); }
153  static void setKp(Contact6d &self, const ::Eigen::VectorXd Kp) {
154  return self.Kp(Kp);
155  }
156  static void setKd(Contact6d &self, const ::Eigen::VectorXd Kd) {
157  return self.Kd(Kd);
158  }
159  static bool setContactPoints(Contact6d &self,
160  const ::Eigen::MatrixXd contactpoints) {
161  return self.setContactPoints(contactpoints);
162  }
163  static bool setContactNormal(Contact6d &self,
164  const ::Eigen::VectorXd contactNormal) {
165  return self.setContactNormal(contactNormal);
166  }
167  static bool setFrictionCoefficient(Contact6d &self,
168  const double frictionCoefficient) {
169  return self.setFrictionCoefficient(frictionCoefficient);
170  }
171  static bool setMinNormalForce(Contact6d &self, const double minNormalForce) {
172  return self.setMinNormalForce(minNormalForce);
173  }
174  static bool setMaxNormalForce(Contact6d &self, const double maxNormalForce) {
175  return self.setMaxNormalForce(maxNormalForce);
176  }
177  static void setReference(Contact6d &self, const pinocchio::SE3 &ref) {
178  self.setReference(ref);
179  }
180  static void setForceReference(Contact6d &self,
181  const ::Eigen::VectorXd f_ref) {
182  self.setForceReference(f_ref);
183  }
184  static void setRegularizationTaskWeightVector(Contact6d &self,
185  const ::Eigen::VectorXd w) {
186  self.setRegularizationTaskWeightVector(w);
187  }
188  static double getNormalForce(Contact6d &self, Eigen::VectorXd f) {
189  return self.getNormalForce(f);
190  }
191 
192  static void expose(const std::string &class_name) {
193  std::string doc = "Contact6d info.";
194  bp::class_<Contact6d>(class_name.c_str(), doc.c_str(), bp::no_init)
196  }
197 };
198 } // namespace python
199 } // namespace tsid
200 
201 #endif // ifndef __tsid_python_contact_hpp__
demo_quadruped.v
v
Definition: demo_quadruped.py:80
init
void init(bool compute_local_aabb=true)
tsid::python::Contact6DPythonVisitor::setKd
static void setKd(Contact6d &self, const ::Eigen::VectorXd Kd)
Definition: bindings/python/contacts/contact-6d.hpp:156
boost::python
class_name
str class_name(str s)
tsid::python::Contact6DPythonVisitor::setContactNormal
static bool setContactNormal(Contact6d &self, const ::Eigen::VectorXd contactNormal)
Definition: bindings/python/contacts/contact-6d.hpp:163
pinocchio::DataTpl
tsid::python::Contact6DPythonVisitor::setMaxNormalForce
static bool setMaxNormalForce(Contact6d &self, const double maxNormalForce)
Definition: bindings/python/contacts/contact-6d.hpp:174
tsid::python::Contact6DPythonVisitor::name
static std::string name(Contact6d &self)
Definition: bindings/python/contacts/contact-6d.hpp:108
tsid::math::ConstraintEquality
Definition: math/constraint-equality.hpp:26
tsid::python::Contact6DPythonVisitor::expose
static void expose(const std::string &class_name)
Definition: bindings/python/contacts/contact-6d.hpp:192
tsid::python::Contact6DPythonVisitor::getNormalForce
static double getNormalForce(Contact6d &self, Eigen::VectorXd f)
Definition: bindings/python/contacts/contact-6d.hpp:188
tsid::python::Contact6DPythonVisitor::computeForceRegularizationTask
static math::ConstraintEquality computeForceRegularizationTask(Contact6d &self, const double t, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const pinocchio::Data &data)
Definition: bindings/python/contacts/contact-6d.hpp:134
pinocchio::SE3
context::SE3 SE3
tsid::python::Contact6DPythonVisitor::setRegularizationTaskWeightVector
static void setRegularizationTaskWeightVector(Contact6d &self, const ::Eigen::VectorXd w)
Definition: bindings/python/contacts/contact-6d.hpp:184
ref
list ref
setup.data
data
Definition: setup.in.py:48
tsid::python::Contact6DPythonVisitor::setKp
static void setKp(Contact6d &self, const ::Eigen::VectorXd Kp)
Definition: bindings/python/contacts/contact-6d.hpp:153
constraint-equality.hpp
tsid::python::Contact6DPythonVisitor::setReference
static void setReference(Contact6d &self, const pinocchio::SE3 &ref)
Definition: bindings/python/contacts/contact-6d.hpp:177
f
f
demo_quadruped.q
q
Definition: demo_quadruped.py:74
tsid::python::Contact6DPythonVisitor::setForceReference
static void setForceReference(Contact6d &self, const ::Eigen::VectorXd f_ref)
Definition: bindings/python/contacts/contact-6d.hpp:180
robot-wrapper.hpp
tsid::python::Contact6DPythonVisitor::visit
void visit(PyClass &cl) const
Definition: bindings/python/contacts/contact-6d.hpp:39
python
constraint-base.hpp
tsid::python::Contact6DPythonVisitor::computeForceTask
static math::ConstraintInequality computeForceTask(Contact6d &self, const double t, const Eigen::VectorXd &q, const Eigen::VectorXd &v, const pinocchio::Data &data)
Definition: bindings/python/contacts/contact-6d.hpp:124
demo_quadruped.vector
vector
Definition: demo_quadruped.py:49
task-se3-equality.hpp
tsid::math::ConstraintInequality
Definition: math/constraint-inequality.hpp:26
w
w
tsid::python::Contact6DPythonVisitor::getMotionTask
static tsid::tasks::TaskSE3Equality getMotionTask(Contact6d &self)
Definition: bindings/python/contacts/contact-6d.hpp:143
tsid::python::Contact6DPythonVisitor::getForceGeneratorMatrix
static const Eigen::MatrixXd & getForceGeneratorMatrix(Contact6d &self)
Definition: bindings/python/contacts/contact-6d.hpp:148
constraint-inequality.hpp
tsid
Definition: bindings/python/constraint/constraint-bound.cpp:21
contact-6d.hpp
tsid::robots::RobotWrapper
Wrapper for a robot based on pinocchio.
Definition: robots/robot-wrapper.hpp:37
tsid::python::Contact6DPythonVisitor
Definition: bindings/python/contacts/contact-6d.hpp:35
cl
cl
fwd.hpp
t
Transform3f t
tsid::tasks::TaskSE3Equality
Definition: tasks/task-se3-equality.hpp:31
tsid::python::Contact6DPythonVisitor::Kd
static const Eigen::VectorXd & Kd(Contact6d &self)
Definition: bindings/python/contacts/contact-6d.hpp:152
tsid::python::Contact6DPythonVisitor::computeMotionTask
static math::ConstraintEquality computeMotionTask(Contact6d &self, const double t, const Eigen::VectorXd &q, const Eigen::VectorXd &v, pinocchio::Data &data)
Definition: bindings/python/contacts/contact-6d.hpp:113
demo_quadruped.contactNormal
contactNormal
Definition: demo_quadruped.py:29
tsid::python::Contact6DPythonVisitor::setMinNormalForce
static bool setMinNormalForce(Contact6d &self, const double minNormalForce)
Definition: bindings/python/contacts/contact-6d.hpp:171
tsid::python::Contact6DPythonVisitor::Kp
static const Eigen::VectorXd & Kp(Contact6d &self)
Definition: bindings/python/contacts/contact-6d.hpp:151
tsid::python::Contact6DPythonVisitor::setFrictionCoefficient
static bool setFrictionCoefficient(Contact6d &self, const double frictionCoefficient)
Definition: bindings/python/contacts/contact-6d.hpp:167
tsid::python::Contact6DPythonVisitor::setContactPoints
static bool setContactPoints(Contact6d &self, const ::Eigen::MatrixXd contactpoints)
Definition: bindings/python/contacts/contact-6d.hpp:159


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