| Line | Branch | Exec | Source | 
|---|---|---|---|
| 1 | #include <boost/python.hpp> | ||
| 2 | #include <eigenpy/eigenpy.hpp> | ||
| 3 | #include <eigenpy/memory.hpp> | ||
| 4 | |||
| 5 | #include "hpp/centroidal-dynamics/centroidal_dynamics.hh" | ||
| 6 | #include "hpp/centroidal-dynamics/util.hh" | ||
| 7 | |||
| 8 | EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(centroidal_dynamics::Equilibrium) | ||
| 9 | |||
| 10 | namespace centroidal_dynamics { | ||
| 11 | using namespace boost::python; | ||
| 12 | |||
| 13 | 1 | boost::python::tuple wrapComputeQuasiEquilibriumRobustness(Equilibrium& self, | |
| 14 | const Vector3& com) { | ||
| 15 | double robustness; | ||
| 16 | 
        2/4✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
          ✓ Branch 4 taken 1 times. 
          ✗ Branch 5 not taken. 
         | 
      1 | LP_status status = self.computeEquilibriumRobustness(com, robustness); | 
| 17 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | return boost::python::make_tuple(status, robustness); | 
| 18 | } | ||
| 19 | |||
| 20 | 1 | boost::python::tuple wrapComputeEquilibriumRobustness(Equilibrium& self, | |
| 21 | const Vector3& com, | ||
| 22 | const Vector3& acc) { | ||
| 23 | double robustness; | ||
| 24 | 
        3/6✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
          ✓ Branch 4 taken 1 times. 
          ✗ Branch 5 not taken. 
          ✓ Branch 7 taken 1 times. 
          ✗ Branch 8 not taken. 
         | 
      1 | LP_status status = self.computeEquilibriumRobustness(com, acc, robustness); | 
| 25 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | return boost::python::make_tuple(status, robustness); | 
| 26 | } | ||
| 27 | |||
| 28 | 1 | boost::python::tuple wrapCheckRobustEquilibrium(Equilibrium& self, | |
| 29 | const Vector3& com) { | ||
| 30 | bool robustness; | ||
| 31 | 
        2/4✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
          ✓ Branch 4 taken 1 times. 
          ✗ Branch 5 not taken. 
         | 
      1 | LP_status status = self.checkRobustEquilibrium(com, robustness); | 
| 32 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | return boost::python::make_tuple(status, robustness); | 
| 33 | } | ||
| 34 | |||
| 35 | ✗ | bool wrapSetNewContacts(Equilibrium& self, | |
| 36 | const MatrixX3ColMajor& contactPoints, | ||
| 37 | const MatrixX3ColMajor& contactNormals, | ||
| 38 | const double frictionCoefficient, | ||
| 39 | const EquilibriumAlgorithm alg) { | ||
| 40 | ✗ | return self.setNewContacts(contactPoints, contactNormals, frictionCoefficient, | |
| 41 | ✗ | alg); | |
| 42 | } | ||
| 43 | |||
| 44 | 2 | bool wrapSetNewContactsFull(Equilibrium& self, | |
| 45 | const MatrixX3ColMajor& contactPoints, | ||
| 46 | const MatrixX3ColMajor& contactNormals, | ||
| 47 | const double frictionCoefficient, | ||
| 48 | const EquilibriumAlgorithm alg) { | ||
| 49 | 2 | return self.setNewContacts(contactPoints, contactNormals, frictionCoefficient, | |
| 50 | 2 | alg); | |
| 51 | } | ||
| 52 | |||
| 53 | 1 | boost::python::tuple wrapGetPolytopeInequalities(Equilibrium& self) { | |
| 54 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      1 | MatrixXX H; | 
| 55 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      1 | VectorX h; | 
| 56 | 
        2/4✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
          ✓ Branch 4 taken 1 times. 
          ✗ Branch 5 not taken. 
         | 
      1 | H = MatrixXX::Zero(6, 6); | 
| 57 | 
        2/4✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
          ✓ Branch 4 taken 1 times. 
          ✗ Branch 5 not taken. 
         | 
      1 | h = VectorX::Zero(6, 1); | 
| 58 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      1 | self.getPolytopeInequalities(H, h); | 
| 59 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      1 | MatrixXXColMajor _H = H; | 
| 60 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | return boost::python::make_tuple(_H, h); | 
| 61 | 1 | } | |
| 62 | |||
| 63 | 
        2/4✓ Branch 0 taken 1 times. 
          ✗ Branch 1 not taken. 
          ✓ Branch 3 taken 1 times. 
          ✗ Branch 4 not taken. 
         | 
      4 | BOOST_PYTHON_MODULE(hpp_centroidal_dynamics) { | 
| 64 | /** BEGIN eigenpy init**/ | ||
| 65 | 2 | eigenpy::enableEigenPy(); | |
| 66 | |||
| 67 | // eigenpy::enableEigenPySpecific<MatrixX3ColMajor, MatrixX3ColMajor>(); | ||
| 68 | // eigenpy::enableEigenPySpecific<MatrixXXColMajor, MatrixXXColMajor>(); | ||
| 69 | // eigenpy::enableEigenPySpecific<Vector3, Vector3>(); | ||
| 70 | // eigenpy::enableEigenPySpecific<VectorX, VectorX>(); | ||
| 71 | /*eigenpy::exposeAngleAxis(); | ||
| 72 | eigenpy::exposeQuaternion();*/ | ||
| 73 | |||
| 74 | /** END eigenpy init**/ | ||
| 75 | |||
| 76 | /** BEGIN enum types **/ | ||
| 77 | #ifdef CLP_FOUND | ||
| 78 | enum_<SolverLP>("SolverLP") | ||
| 79 | .value("SOLVER_LP_QPOASES", SOLVER_LP_QPOASES) | ||
| 80 | .value("SOLVER_LP_CLP", SOLVER_LP_CLP) | ||
| 81 | .export_values(); | ||
| 82 | #else | ||
| 83 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      4 | enum_<SolverLP>("SolverLP") | 
| 84 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .value("SOLVER_LP_QPOASES", SOLVER_LP_QPOASES) | 
| 85 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .export_values(); | 
| 86 | #endif | ||
| 87 | |||
| 88 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      4 | enum_<EquilibriumAlgorithm>("EquilibriumAlgorithm") | 
| 89 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .value("EQUILIBRIUM_ALGORITHM_LP", EQUILIBRIUM_ALGORITHM_LP) | 
| 90 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .value("EQUILIBRIUM_ALGORITHM_LP2", EQUILIBRIUM_ALGORITHM_LP2) | 
| 91 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .value("EQUILIBRIUM_ALGORITHM_DLP", EQUILIBRIUM_ALGORITHM_DLP) | 
| 92 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .value("EQUILIBRIUM_ALGORITHM_PP", EQUILIBRIUM_ALGORITHM_PP) | 
| 93 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .value("EQUILIBRIUM_ALGORITHM_IP", EQUILIBRIUM_ALGORITHM_IP) | 
| 94 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .value("EQUILIBRIUM_ALGORITHM_DIP", EQUILIBRIUM_ALGORITHM_DIP) | 
| 95 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .export_values(); | 
| 96 | |||
| 97 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      4 | enum_<LP_status>("LP_status") | 
| 98 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .value("LP_STATUS_UNKNOWN", LP_STATUS_UNKNOWN) | 
| 99 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .value("LP_STATUS_OPTIMAL", LP_STATUS_OPTIMAL) | 
| 100 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .value("LP_STATUS_INFEASIBLE", LP_STATUS_INFEASIBLE) | 
| 101 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .value("LP_STATUS_UNBOUNDED", LP_STATUS_UNBOUNDED) | 
| 102 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .value("LP_STATUS_MAX_ITER_REACHED", LP_STATUS_MAX_ITER_REACHED) | 
| 103 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .value("LP_STATUS_ERROR", LP_STATUS_ERROR) | 
| 104 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .export_values(); | 
| 105 | |||
| 106 | /** END enum types **/ | ||
| 107 | |||
| 108 | // bool (Equilibrium::*setNewContacts) | ||
| 109 | // (const MatrixX3ColMajor&, const MatrixX3ColMajor&, const double, | ||
| 110 | // const EquilibriumAlgorithm, const int graspIndex, const double | ||
| 111 | // maxGraspForce) = &Equilibrium::setNewContacts; | ||
| 112 | |||
| 113 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      4 | class_<Equilibrium>( | 
| 114 | "Equilibrium", | ||
| 115 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | init<std::string, double, unsigned int, | 
| 116 | optional<SolverLP, bool, const unsigned int, const bool> >()) | ||
| 117 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .def("useWarmStart", &Equilibrium::useWarmStart) | 
| 118 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .def("setUseWarmStart", &Equilibrium::setUseWarmStart) | 
| 119 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .def("getName", &Equilibrium::getName) | 
| 120 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .def("getAlgorithm", &Equilibrium::getAlgorithm) | 
| 121 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .def("setNewContacts", wrapSetNewContacts) | 
| 122 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .def("setNewContacts", wrapSetNewContactsFull) | 
| 123 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .def("computeEquilibriumRobustness", | 
| 124 | wrapComputeQuasiEquilibriumRobustness) | ||
| 125 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .def("computeEquilibriumRobustness", wrapComputeEquilibriumRobustness) | 
| 126 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .def("checkRobustEquilibrium", wrapCheckRobustEquilibrium) | 
| 127 | 
        1/2✓ Branch 1 taken 1 times. 
          ✗ Branch 2 not taken. 
         | 
      2 | .def("getPolytopeInequalities", wrapGetPolytopeInequalities); | 
| 128 | 2 | } | |
| 129 | |||
| 130 | } // namespace centroidal_dynamics | ||
| 131 |