18 #ifndef __tsid_python_contact_two_frames_hpp__ 
   19 #define __tsid_python_contact_two_frames_hpp__ 
   23 #include "tsid/contacts/contact-two-frames.hpp" 
   31 namespace bp = boost::python;
 
   33 template <
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,
 
  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,
 
  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,
 
  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);
 
  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:26
 
Definition: constraint-inequality.hpp:26
 
Wrapper for a robot based on pinocchio.
Definition: robot-wrapper.hpp:37
 
pinocchio::SE3 SE3
Definition: trajectory-base.hpp:31
 
Definition: constraint-bound.hpp:25