18 #ifndef __tsid_python_contact_6d_hpp__ 19 #define __tsid_python_contact_6d_hpp__ 33 template <
typename ContactPo
int>
35 :
public boost::python::def_visitor<
36 ContactPointPythonVisitor<ContactPoint> > {
37 template <
class PyClass>
41 Eigen::VectorXd,
double,
double,
double>(
42 (bp::arg(
"name"), bp::arg(
"robot"), bp::arg(
"framename"),
43 bp::arg(
"contactNormal"), bp::arg(
"frictionCoeff"),
44 bp::arg(
"minForce"), bp::arg(
"maxForce")),
45 "Default Constructor"))
46 .add_property(
"n_motion", &ContactPoint::n_motion,
47 "return number of motion")
48 .add_property(
"n_force", &ContactPoint::n_force,
49 "return number of force")
52 bp::args(
"t",
"q",
"v",
"data"))
54 bp::args(
"t",
"q",
"v",
"data"))
55 .def(
"computeForceRegularizationTask",
57 bp::args(
"t",
"q",
"v",
"data"))
59 .add_property(
"getForceGeneratorMatrix",
62 bp::return_value_policy<bp::copy_const_reference>()))
66 .add_property(
"getMinNormalForce", &ContactPoint::getMinNormalForce)
67 .add_property(
"getMaxNormalForce", &ContactPoint::getMaxNormalForce)
72 bp::return_value_policy<bp::copy_const_reference>()))
76 bp::return_value_policy<bp::copy_const_reference>()))
81 bp::arg(
"local_frame"))
85 .def(
"setFrictionCoefficient",
87 bp::args(
"friction_coeff"))
89 bp::args(
"min_force"))
91 bp::args(
"max_force"))
96 .def(
"setRegularizationTaskWeightVector",
100 static std::string
name(ContactPoint&
self) {
101 std::string
name =
self.name();
107 const Eigen::VectorXd&
q,
108 const Eigen::VectorXd&
v,
110 self.computeMotionTask(t, q, v, data);
112 self.getMotionConstraint().matrix(),
113 self.getMotionConstraint().
vector());
117 ContactPoint&
self,
const double t,
const Eigen::VectorXd&
q,
119 self.computeForceTask(t, q, v, data);
121 self.getForceConstraint().matrix(),
122 self.getForceConstraint().lowerBound(),
123 self.getForceConstraint().upperBound());
127 ContactPoint&
self,
const double t,
const Eigen::VectorXd&
q,
129 self.computeForceRegularizationTask(t, q, v, data);
131 self.getForceRegularizationTask().matrix(),
132 self.getForceRegularizationTask().
vector());
137 self.useLocalFrame(local_frame);
140 return self.getForceGeneratorMatrix();
142 static const Eigen::VectorXd&
Kp(ContactPoint&
self) {
return self.Kp(); }
143 static const Eigen::VectorXd&
Kd(ContactPoint&
self) {
return self.Kd(); }
144 static void setKp(ContactPoint&
self, const ::Eigen::VectorXd
Kp) {
147 static void setKd(ContactPoint&
self, const ::Eigen::VectorXd
Kd) {
151 const ::Eigen::MatrixXd contactpoints) {
152 return self.setContactPoints(contactpoints);
156 return self.setContactNormal(contactNormal);
159 const double frictionCoefficient) {
160 return self.setFrictionCoefficient(frictionCoefficient);
163 const double minNormalForce) {
164 return self.setMinNormalForce(minNormalForce);
167 const double maxNormalForce) {
168 return self.setMaxNormalForce(maxNormalForce);
171 self.setReference(ref);
174 const ::Eigen::VectorXd f_ref) {
175 self.setForceReference(f_ref);
178 const ::Eigen::VectorXd w) {
179 self.setRegularizationTaskWeightVector(w);
182 return self.getNormalForce(f);
185 static void expose(
const std::string& class_name) {
186 std::string doc =
"ContactPoint info.";
187 bp::class_<ContactPoint>(class_name.c_str(), doc.c_str(), bp::no_init)
194 #endif // ifndef __tsid_python_contact_hpp__
void def(const char *name, Func func)
void init(bool compute_local_aabb=true)
Wrapper for a robot based on pinocchio.