18 #ifndef __tsid_python_contact_two_frame_positions_hpp__
19 #define __tsid_python_contact_two_frame_positions_hpp__
31 namespace bp = boost::python;
33 template <
typename ContactTwoFramePositions>
35 :
public boost::python::def_visitor<
36 ContactTwoFramePositionsPythonVisitor<ContactTwoFramePositions> > {
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", &ContactTwoFramePositions::n_motion,
47 "return number of motion")
48 .add_property(
"n_force", &ContactTwoFramePositions::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",
61 bp::args(
"t",
"q",
"v",
"data"))
64 "getForceGeneratorMatrix",
67 bp::return_value_policy<bp::copy_const_reference>()))
69 .def(
"getNormalForce",
72 .add_property(
"getMinNormalForce",
73 &ContactTwoFramePositions::getMinNormalForce)
74 .add_property(
"getMaxNormalForce",
75 &ContactTwoFramePositions::getMaxNormalForce)
80 bp::return_value_policy<bp::copy_const_reference>()))
84 bp::return_value_policy<bp::copy_const_reference>()))
89 .def(
"setContactNormal",
92 .def(
"setFrictionCoefficient",
94 bp::args(
"friction_coeff"))
95 .def(
"setMinNormalForce",
97 bp::args(
"min_force"))
98 .def(
"setMaxNormalForce",
100 bp::args(
"max_force"))
101 .def(
"setForceReference",
104 .def(
"setRegularizationTaskWeightVector",
109 static std::string
name(ContactTwoFramePositions&
self) {
110 std::string
name =
self.name();
115 ContactTwoFramePositions&
self,
const double t,
const Eigen::VectorXd& q,
117 self.computeMotionTask(t, q, v, data);
119 self.getMotionConstraint().matrix(),
120 self.getMotionConstraint().vector());
124 ContactTwoFramePositions&
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 ContactTwoFramePositions&
self,
const double t,
const Eigen::VectorXd& q,
136 self.computeForceRegularizationTask(t, q, v, data);
138 self.getForceRegularizationTask().matrix(),
139 self.getForceRegularizationTask().vector());
144 ContactTwoFramePositions&
self) {
145 return self.getForceGeneratorMatrix();
147 static const Eigen::VectorXd&
Kp(ContactTwoFramePositions&
self) {
150 static const Eigen::VectorXd&
Kd(ContactTwoFramePositions&
self) {
153 static void setKp(ContactTwoFramePositions&
self,
154 const ::Eigen::VectorXd
Kp) {
157 static void setKd(ContactTwoFramePositions&
self,
158 const ::Eigen::VectorXd
Kd) {
162 ContactTwoFramePositions&
self,
163 const ::Eigen::MatrixXd ContactTwoFramePositionss) {
164 return self.setContactTwoFramePositionss(ContactTwoFramePositionss);
167 const ::Eigen::VectorXd contactNormal) {
168 return self.setContactNormal(contactNormal);
171 const double frictionCoefficient) {
172 return self.setFrictionCoefficient(frictionCoefficient);
175 const double minNormalForce) {
176 return self.setMinNormalForce(minNormalForce);
179 const double maxNormalForce) {
180 return self.setMaxNormalForce(maxNormalForce);
183 const ::Eigen::VectorXd f_ref) {
184 self.setForceReference(f_ref);
187 const ::Eigen::VectorXd w) {
188 self.setRegularizationTaskWeightVector(w);
192 return self.getNormalForce(f);
194 static void expose(
const std::string& class_name) {
195 std::string doc =
"ContactTwoFramePositions info.";
196 bp::class_<ContactTwoFramePositions>(class_name.c_str(), doc.c_str(),
Definition: constraint-equality.hpp:26
Definition: constraint-inequality.hpp:26
Wrapper for a robot based on pinocchio.
Definition: robot-wrapper.hpp:37
Definition: constraint-bound.hpp:25