18#ifndef __tsid_python_contact_two_frames_hpp__ 19#define __tsid_python_contact_two_frames_hpp__ 23#include "tsid/contacts/contact-two-frames.hpp" 31namespace bp = boost::python;
33template <
typename ContactTwoFrames>
35 :
public boost::python::def_visitor<
36 ContactTwoFramesPythonVisitor<ContactTwoFrames> > {
37 template <
class PyClass>
42 std::string,
double,
double>(
43 (bp::arg(
"name"), bp::arg(
"robot"), bp::arg(
"framename1"),
44 bp::arg(
"framename2"), bp::arg(
"minForce"), bp::arg(
"maxForce")),
45 "Default Constructor"))
46 .add_property(
"n_motion", &ContactTwoFrames::n_motion,
47 "return number of motion")
48 .add_property(
"n_force", &ContactTwoFrames::n_force,
49 "return number of force")
52 .def(
"computeMotionTask",
54 bp::args(
"t",
"q",
"v",
"data"))
55 .def(
"computeForceTask",
57 bp::args(
"t",
"q",
"v",
"data"))
58 .def(
"computeForceRegularizationTask",
60 bp::args(
"t",
"q",
"v",
"data"))
63 "getForceGeneratorMatrix",
66 bp::return_value_policy<bp::copy_const_reference>()))
70 .add_property(
"getMinNormalForce", &ContactTwoFrames::getMinNormalForce)
71 .add_property(
"getMaxNormalForce", &ContactTwoFrames::getMaxNormalForce)
76 bp::return_value_policy<bp::copy_const_reference>()))
80 bp::return_value_policy<bp::copy_const_reference>()))
85 bp::arg(
"local_frame"))
87 .def(
"setContactNormal",
89 .def(
"setFrictionCoefficient",
91 bp::args(
"friction_coeff"))
92 .def(
"setMinNormalForce",
94 bp::args(
"min_force"))
95 .def(
"setMaxNormalForce",
97 bp::args(
"max_force"))
100 .def(
"setForceReference",
103 .def(
"setRegularizationTaskWeightVector",
107 static std::string
name(ContactTwoFrames& self) {
108 std::string
name = self.name();
114 const Eigen::VectorXd& q,
115 const Eigen::VectorXd& v,
116 pinocchio::Data& data) {
117 self.computeMotionTask(t, q, v, data);
119 self.getMotionConstraint().matrix(),
120 self.getMotionConstraint().vector());
124 ContactTwoFrames& self,
const double t,
const Eigen::VectorXd& q,
125 const Eigen::VectorXd& v,
const pinocchio::Data& data) {
126 self.computeForceTask(t, q, v, data);
128 self.getForceConstraint().matrix(),
129 self.getForceConstraint().lowerBound(),
130 self.getForceConstraint().upperBound());
134 ContactTwoFrames& self,
const double t,
const Eigen::VectorXd& q,
135 const Eigen::VectorXd& v,
const pinocchio::Data& data) {
136 self.computeForceRegularizationTask(t, q, v, data);
138 self.getForceRegularizationTask().matrix(),
139 self.getForceRegularizationTask().vector());
144 self.useLocalFrame(local_frame);
147 ContactTwoFrames& self) {
148 return self.getForceGeneratorMatrix();
150 static const Eigen::VectorXd&
Kp(ContactTwoFrames& self) {
return self.Kp(); }
151 static const Eigen::VectorXd&
Kd(ContactTwoFrames& self) {
return self.Kd(); }
152 static void setKp(ContactTwoFrames& self, const ::Eigen::VectorXd
Kp) {
155 static void setKd(ContactTwoFrames& self, const ::Eigen::VectorXd
Kd) {
159 const ::Eigen::MatrixXd ContactTwoFramess) {
160 return self.setContactTwoFramess(ContactTwoFramess);
163 const ::Eigen::VectorXd contactNormal) {
164 return self.setContactNormal(contactNormal);
167 const double frictionCoefficient) {
168 return self.setFrictionCoefficient(frictionCoefficient);
171 const double minNormalForce) {
172 return self.setMinNormalForce(minNormalForce);
175 const double maxNormalForce) {
176 return self.setMaxNormalForce(maxNormalForce);
178 static void setReference(ContactTwoFrames& self,
const pinocchio::SE3& ref) {
179 self.setReference(ref);
182 const ::Eigen::VectorXd f_ref) {
183 self.setForceReference(f_ref);
186 const ::Eigen::VectorXd w) {
187 self.setRegularizationTaskWeightVector(w);
190 return self.getNormalForce(f);
193 static void expose(
const std::string& class_name) {
194 std::string doc =
"ContactTwoFrames info.";
195 bp::class_<ContactTwoFrames>(class_name.c_str(), doc.c_str(), bp::no_init)
Definition constraint-equality.hpp:13
Definition constraint-inequality.hpp:13
Wrapper for a robot based on pinocchio.
Definition robot-wrapper.hpp:37
Definition constraint-bound.hpp:26
Definition constraint-bound.hpp:25