1 |
|
|
#include <boost/python.hpp> |
2 |
|
|
#include <boost/python/return_internal_reference.hpp> |
3 |
|
|
#include <eigenpy/eigenpy.hpp> |
4 |
|
|
|
5 |
|
|
#include "dynacom/contact6d.hpp" |
6 |
|
|
#include "dynacom/python.hpp" |
7 |
|
|
|
8 |
|
|
namespace dynacom { |
9 |
|
|
namespace python { |
10 |
|
|
namespace bp = boost::python; |
11 |
|
|
|
12 |
|
5 |
bp::dict get_settings(Contact6D &self) { |
13 |
✓✗ |
5 |
bp::dict settings; |
14 |
✓✗ |
10 |
Contact6DSettings conf = self.getSettings(); |
15 |
✓✗✓✗
|
5 |
settings["frame_name"] = conf.frame_name; |
16 |
✓✗✓✗
|
5 |
settings["gu"] = conf.gu; |
17 |
✓✗✓✗
|
5 |
settings["mu"] = conf.mu; |
18 |
✓✗✓✗
|
5 |
settings["weights"] = conf.weights; |
19 |
✓✗✓✗
|
5 |
settings["half_width"] = conf.half_width; |
20 |
✓✗✓✗
|
5 |
settings["half_length"] = conf.half_length; |
21 |
|
|
|
22 |
|
10 |
return settings; |
23 |
|
|
} |
24 |
|
|
|
25 |
|
12 |
void set_weights(Contact6DSettings &self, Eigen::Matrix<double, 6, 1> w) { |
26 |
|
12 |
self.weights = w; |
27 |
|
12 |
} |
28 |
|
|
|
29 |
|
1 |
Eigen::Matrix<double, 6, 1> get_weights(Contact6DSettings &self) { |
30 |
|
1 |
return self.weights; |
31 |
|
|
} |
32 |
|
|
|
33 |
|
1 |
void exposeContact6D() { |
34 |
|
1 |
bp::class_<Contact6DSettings>("Contact6DSettings") |
35 |
✓✗ |
1 |
.def_readwrite("frame_name", &Contact6DSettings::frame_name) |
36 |
✓✗ |
1 |
.def_readwrite("gu", &Contact6DSettings::gu) |
37 |
✓✗ |
1 |
.def_readwrite("mu", &Contact6DSettings::mu) |
38 |
✓✗ |
1 |
.add_property("weights", &get_weights, &set_weights) |
39 |
✓✗ |
1 |
.def_readwrite("half_width", &Contact6DSettings::half_width) |
40 |
✓✗ |
2 |
.def_readwrite("half_length", &Contact6DSettings::half_length) |
41 |
✓✗ |
1 |
.def("__repr__", &Contact6DSettings::to_string) |
42 |
✓✗ |
1 |
.def("__eq__", &Contact6DSettings::operator==) |
43 |
✓✗ |
1 |
.def("__ne__", &Contact6DSettings::operator!=); |
44 |
|
|
|
45 |
✓✗ |
1 |
bp::class_<Contact6D>("Contact6D", bp::init<>()) |
46 |
✓✗✓✗
|
2 |
.def("initialize", &Contact6D::initialize, bp::args("self", "settings")) |
47 |
✓✗✓✗
|
2 |
.def("get_settings", &get_settings, bp::args("self")) |
48 |
✓✗✓✗
|
2 |
.def("set_mu", &Contact6D::setMu, bp::args("self", "mu")) |
49 |
✓✗✓✗
|
2 |
.def("set_gu", &Contact6D::setGu, bp::args("self", "gu")) |
50 |
|
|
.def("set_force_weights", &Contact6D::setForceWeights, |
51 |
✓✗✓✗
|
2 |
bp::args("self", "force_weights")) |
52 |
|
|
.def("set_torque_weights", &Contact6D::setTorqueWeights, |
53 |
✓✗✓✗
|
2 |
bp::args("self", "torque_weights")) |
54 |
|
|
.def("set_surface_half_width", &Contact6D::setSurfaceHalfWidth, |
55 |
✓✗✓✗
|
2 |
bp::args("self", "half_width")) |
56 |
|
|
.def("set_surface_half_length", &Contact6D::setSurfaceHalfLength, |
57 |
✓✗✓✗
|
2 |
bp::args("self", "half_length")) |
58 |
|
|
.def("update_NE_matrix", &Contact6D::updateNewtonEuler, |
59 |
✓✗✓✗
|
2 |
bp::args("self", "CoM", "oMf")) |
60 |
|
|
.def("uni_A", &Contact6D::uni_A, |
61 |
|
|
bp::return_value_policy<bp::reference_existing_object>(), |
62 |
✓✗✓✗
|
2 |
bp::args("self")) |
63 |
|
|
.def("uni_b", &Contact6D::uni_b, |
64 |
|
|
bp::return_value_policy<bp::reference_existing_object>(), |
65 |
✓✗✓✗
|
2 |
bp::args("self")) |
66 |
|
|
.def("reg_A", &Contact6D::reg_A, |
67 |
|
|
bp::return_value_policy<bp::reference_existing_object>(), |
68 |
✓✗✓✗
|
2 |
bp::args("self")) |
69 |
|
|
.def("reg_b", &Contact6D::reg_b, |
70 |
|
|
bp::return_value_policy<bp::reference_existing_object>(), |
71 |
✓✗✓✗
|
2 |
bp::args("self")) |
72 |
|
|
.def("fri_A", &Contact6D::fri_A, |
73 |
|
|
bp::return_value_policy<bp::reference_existing_object>(), |
74 |
✓✗✓✗
|
2 |
bp::args("self")) |
75 |
|
|
.def("fri_b", &Contact6D::fri_b, |
76 |
|
|
bp::return_value_policy<bp::reference_existing_object>(), |
77 |
✓✗✓✗
|
2 |
bp::args("self")) |
78 |
|
|
.def("NE_A", &Contact6D::NE_A, |
79 |
|
|
bp::return_value_policy<bp::reference_existing_object>(), |
80 |
✓✗✓✗
|
2 |
bp::args("self")) |
81 |
✓✗✓✗
|
2 |
.def("uni_rows", &Contact6D::uni_rows, bp::args("self")) |
82 |
✓✗✓✗
|
2 |
.def("fri_rows", &Contact6D::fri_rows, bp::args("self")) |
83 |
✓✗✓✗
|
2 |
.def("cols", &Contact6D::cols, bp::args("self")) |
84 |
✓✗✓✗
|
2 |
.def("get_frame_id", &Contact6D::getFrameID, bp::args("self")) |
85 |
✓✗✓✗
|
2 |
.def("toWorldForces", &Contact6D::toWorldForces, bp::args("self")) |
86 |
✓✗✓✗
|
2 |
.def("toCoMForces", &Contact6D::toCoMForces, bp::args("self")) |
87 |
✓✗✓✗
|
2 |
.def("set_frame_id", &Contact6D::setFrameID, bp::args("self")) |
88 |
✓✗✓✗
|
2 |
.def("applyForce", &Contact6D::applyForce, bp::args("self", "force")) |
89 |
|
|
.def("appliedForce", &Contact6D::appliedForce, |
90 |
|
|
bp::return_value_policy<bp::reference_existing_object>(), |
91 |
✓✗✓✗
|
2 |
bp::args("self")) |
92 |
|
|
.def("get_pose", &Contact6D::getPose, |
93 |
|
|
bp::return_value_policy<bp::reference_existing_object>(), |
94 |
✓✗✓✗
|
1 |
bp::args("self")); |
95 |
|
1 |
} |
96 |
|
|
} // namespace python |
97 |
|
|
} // namespace dynacom |