tsid 1.9.0
Efficient Task Space Inverse Dynamics for Multi-body Systems based on Pinocchio
Loading...
Searching...
No Matches
task-contact-force-equality.hpp
Go to the documentation of this file.
1//
2// Copyright (c) 2021 LAAS-CNRS, University of Trento
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_task_contact_force_equality_hpp__
19#define __tsid_python_task_contact_force_equality_hpp__
20
22
28namespace tsid {
29namespace python {
30namespace bp = boost::python;
31
32template <typename TaskContactForceEquality>
34 : public boost::python::def_visitor<
35 TaskContactForceEqualityPythonVisitor<TaskContactForceEquality> > {
36 template <class PyClass>
37
38 void visit(PyClass& cl) const {
39 cl.def(bp::init<std::string, robots::RobotWrapper&, double,
40 contacts::ContactBase&>((bp::arg("name"), bp::arg("robot"),
41 bp::arg("dt"), bp::arg("contact")),
42 "Default Constructor"))
43 .add_property("dim", &TaskContactForceEquality::dim,
44 "return dimension size")
45 .def("setReference",
47 bp::arg("ref"))
48 .def("setExternalForce",
50 bp::arg("f_ext"))
52 bp::args("t", "q", "v", "data"))
53 .def("getConstraint",
56 .add_property("Kp",
57 bp::make_function(
59 bp::return_value_policy<bp::copy_const_reference>()))
60 .add_property("Kd",
61 bp::make_function(
63 bp::return_value_policy<bp::copy_const_reference>()))
64 .add_property("Ki",
65 bp::make_function(
67 bp::return_value_policy<bp::copy_const_reference>()))
68 .add_property("getLeakRate",
69 bp::make_function(
71 bp::return_value_policy<bp::copy_const_reference>()))
73 bp::arg("Kp"))
75 bp::arg("Kd"))
77 bp::arg("Ki"))
79 bp::arg("leak"));
80 }
81 static std::string name(TaskContactForceEquality& self) {
82 std::string name = self.name();
83 return name;
84 }
85 static math::ConstraintEquality compute(TaskContactForceEquality& self,
86 const double t,
87 const Eigen::VectorXd& q,
88 const Eigen::VectorXd& v,
89 pinocchio::Data& data) {
90 self.compute(t, q, v, data);
91 math::ConstraintEquality cons(self.getConstraint().name(),
92 self.getConstraint().matrix(),
93 self.getConstraint().vector());
94 return cons;
95 }
97 const TaskContactForceEquality& self) {
98 math::ConstraintEquality cons(self.getConstraint().name(),
99 self.getConstraint().matrix(),
100 self.getConstraint().vector());
101 return cons;
102 }
103 static void setReference(TaskContactForceEquality& self,
105 self.setReference(ref);
106 }
107 static void setExternalForce(TaskContactForceEquality& self,
109 self.setExternalForce(f_ext);
110 }
111 static const Eigen::VectorXd& Kp(TaskContactForceEquality& self) {
112 return self.Kp();
113 }
114 static const Eigen::VectorXd& Kd(TaskContactForceEquality& self) {
115 return self.Kd();
116 }
117 static const Eigen::VectorXd& Ki(TaskContactForceEquality& self) {
118 return self.Ki();
119 }
120 static const double& getLeakRate(TaskContactForceEquality& self) {
121 return self.getLeakRate();
122 }
123 static void setKp(TaskContactForceEquality& self,
124 const ::Eigen::VectorXd Kp) {
125 return self.Kp(Kp);
126 }
127 static void setKd(TaskContactForceEquality& self,
128 const ::Eigen::VectorXd Kd) {
129 return self.Kd(Kd);
130 }
131 static void setKi(TaskContactForceEquality& self,
132 const ::Eigen::VectorXd Ki) {
133 return self.Ki(Ki);
134 }
135 static void setLeakRate(TaskContactForceEquality& self, const double leak) {
136 return self.setLeakRate(leak);
137 }
138 static void expose(const std::string& class_name) {
139 std::string doc = "TaskContactForceEqualityPythonVisitor info.";
140 bp::class_<TaskContactForceEquality>(class_name.c_str(), doc.c_str(),
141 bp::no_init)
143 }
144};
145} // namespace python
146} // namespace tsid
147
148#endif // ifndef __tsid_python_task_contact_force_equality_hpp__
Base template of a Contact.
Definition contact-base.hpp:18
Definition constraint-equality.hpp:13
Wrapper for a robot based on pinocchio.
Definition robot-wrapper.hpp:37
Definition trajectory-base.hpp:33
Definition constraint-bound.hpp:26
Definition constraint-bound.hpp:25
Definition task-contact-force-equality.hpp:35
static math::ConstraintEquality compute(TaskContactForceEquality &self, const double t, const Eigen::VectorXd &q, const Eigen::VectorXd &v, pinocchio::Data &data)
Definition task-contact-force-equality.hpp:85
static void setLeakRate(TaskContactForceEquality &self, const double leak)
Definition task-contact-force-equality.hpp:135
static void setReference(TaskContactForceEquality &self, trajectories::TrajectorySample &ref)
Definition task-contact-force-equality.hpp:103
static const Eigen::VectorXd & Kd(TaskContactForceEquality &self)
Definition task-contact-force-equality.hpp:114
static std::string name(TaskContactForceEquality &self)
Definition task-contact-force-equality.hpp:81
static const Eigen::VectorXd & Ki(TaskContactForceEquality &self)
Definition task-contact-force-equality.hpp:117
void visit(PyClass &cl) const
Definition task-contact-force-equality.hpp:38
static void setKp(TaskContactForceEquality &self, const ::Eigen::VectorXd Kp)
Definition task-contact-force-equality.hpp:123
static const double & getLeakRate(TaskContactForceEquality &self)
Definition task-contact-force-equality.hpp:120
static void setExternalForce(TaskContactForceEquality &self, trajectories::TrajectorySample &f_ext)
Definition task-contact-force-equality.hpp:107
static const Eigen::VectorXd & Kp(TaskContactForceEquality &self)
Definition task-contact-force-equality.hpp:111
static void setKi(TaskContactForceEquality &self, const ::Eigen::VectorXd Ki)
Definition task-contact-force-equality.hpp:131
static math::ConstraintEquality getConstraint(const TaskContactForceEquality &self)
Definition task-contact-force-equality.hpp:96
static void expose(const std::string &class_name)
Definition task-contact-force-equality.hpp:138
static void setKd(TaskContactForceEquality &self, const ::Eigen::VectorXd Kd)
Definition task-contact-force-equality.hpp:127