18 #ifndef __tsid_python_contact_6d_hpp__
19 #define __tsid_python_contact_6d_hpp__
32 namespace bp = boost::python;
34 template <
typename Contact6d>
36 :
public boost::python::def_visitor<Contact6DPythonVisitor<Contact6d> > {
37 template <
class PyClass>
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"),
46 "Default Constructor"))
48 Eigen::MatrixXd, Eigen::VectorXd,
double,
double,
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")
60 bp::args(
"t",
"q",
"v",
"data"))
62 bp::args(
"t",
"q",
"v",
"data"))
63 .def(
"computeForceRegularizationTask",
65 bp::args(
"t",
"q",
"v",
"data"))
68 .add_property(
"getForceGeneratorMatrix",
71 bp::return_value_policy<bp::copy_const_reference>()))
75 .add_property(
"getMinNormalForce", &Contact6d::getMinNormalForce)
76 .add_property(
"getMaxNormalForce", &Contact6d::getMaxNormalForce)
81 bp::return_value_policy<bp::copy_const_reference>()))
85 bp::return_value_policy<bp::copy_const_reference>()))
93 .def(
"setFrictionCoefficient",
95 bp::args(
"friction_coeff"))
97 bp::args(
"min_force"))
99 bp::args(
"max_force"))
104 .def(
"setRegularizationTaskWeightVector",
108 static std::string
name(Contact6d &
self) {
109 std::string
name =
self.name();
115 const Eigen::VectorXd &q,
116 const Eigen::VectorXd &v,
118 self.computeMotionTask(t, q, v, data);
120 self.getMotionConstraint().matrix(),
121 self.getMotionConstraint().vector());
125 Contact6d &
self,
const double t,
const Eigen::VectorXd &q,
127 self.computeForceTask(t, q, v, data);
129 self.getForceConstraint().matrix(),
130 self.getForceConstraint().lowerBound(),
131 self.getForceConstraint().upperBound());
135 Contact6d &
self,
const double t,
const Eigen::VectorXd &q,
137 self.computeForceRegularizationTask(t, q, v, data);
139 self.getForceRegularizationTask().matrix(),
140 self.getForceRegularizationTask().vector());
149 return self.getForceGeneratorMatrix();
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) {
156 static void setKd(Contact6d &
self, const ::Eigen::VectorXd
Kd) {
160 const ::Eigen::MatrixXd contactpoints) {
161 return self.setContactPoints(contactpoints);
164 const ::Eigen::VectorXd contactNormal) {
165 return self.setContactNormal(contactNormal);
168 const double frictionCoefficient) {
169 return self.setFrictionCoefficient(frictionCoefficient);
172 return self.setMinNormalForce(minNormalForce);
175 return self.setMaxNormalForce(maxNormalForce);
178 self.setReference(ref);
181 const ::Eigen::VectorXd f_ref) {
182 self.setForceReference(f_ref);
185 const ::Eigen::VectorXd w) {
186 self.setRegularizationTaskWeightVector(w);
189 return self.getNormalForce(f);
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)
Definition: constraint-equality.hpp:26
Definition: constraint-inequality.hpp:26
Wrapper for a robot based on pinocchio.
Definition: robot-wrapper.hpp:37
Definition: task-se3-equality.hpp:31
pinocchio::SE3 SE3
Definition: trajectory-base.hpp:31
Definition: constraint-bound.hpp:25