GCC Code Coverage Report


Directory: ./
File: bindings/python/algorithm/expose-delassus.cpp
Date: 2024-08-27 18:20:05
Exec Total Coverage
Lines: 8 20 40.0%
Branches: 24 64 37.5%

Line Branch Exec Source
1 //
2 // Copyright (c) 2020-2021 INRIA
3 //
4
5 #include "pinocchio/bindings/python/algorithm/algorithms.hpp"
6
7 #include "pinocchio/bindings/python/utils/eigen.hpp"
8 #include "pinocchio/bindings/python/utils/std-vector.hpp"
9
10 #include "pinocchio/algorithm/delassus.hpp"
11
12 namespace bp = boost::python;
13
14 namespace pinocchio
15 {
16 namespace python
17 {
18 typedef PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(context::RigidConstraintModel)
19 RigidConstraintModelVector;
20 typedef PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(context::RigidConstraintData)
21 RigidConstraintDataVector;
22
23 static const context::MatrixXs computeDelassusMatrix_proxy(
24 const context::Model & model,
25 context::Data & data,
26 const context::VectorXs & q,
27 const RigidConstraintModelVector & contact_models,
28 RigidConstraintDataVector & contact_datas,
29 const context::Scalar mu = context::Scalar(0))
30 {
31 const size_t constraint_size = getTotalConstraintSize(contact_models);
32 context::MatrixXs delassus(constraint_size, constraint_size);
33 computeDelassusMatrix(model, data, q, contact_models, contact_datas, delassus, mu);
34 make_symmetric(delassus);
35 return delassus;
36 }
37
38 static const context::MatrixXs computeDampedDelassusMatrixInverse_proxy(
39 const context::Model & model,
40 context::Data & data,
41 const context::VectorXs & q,
42 const RigidConstraintModelVector & contact_models,
43 RigidConstraintDataVector & contact_datas,
44 const context::Scalar mu,
45 const bool scaled = false)
46 {
47 const size_t constraint_size = getTotalConstraintSize(contact_models);
48 context::MatrixXs delassus_inverse(constraint_size, constraint_size);
49 computeDampedDelassusMatrixInverse(
50 model, data, q, contact_models, contact_datas, delassus_inverse, mu, scaled);
51 make_symmetric(delassus_inverse);
52 return delassus_inverse;
53 }
54
55 20 void exposeDelassus()
56 {
57 using namespace Eigen;
58
59
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 bp::def(
60 "computeDelassusMatrix", computeDelassusMatrix_proxy,
61
7/14
✓ Branch 2 taken 20 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 20 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 20 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 20 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 20 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 20 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 20 times.
✗ Branch 21 not taken.
60 (bp::arg("model"), bp::arg("data"), bp::arg("q"), bp::arg("contact_models"),
62
4/8
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 20 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 20 times.
✗ Branch 11 not taken.
60 bp::arg("contact_datas"), bp::arg("mu") = 0),
63 "Computes the Delassus matrix associated to a set of given constraints.");
64
65
1/2
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
20 bp::def(
66 "computeDampedDelassusMatrixInverse", computeDampedDelassusMatrixInverse_proxy,
67
7/14
✓ Branch 2 taken 20 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 20 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 20 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 20 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 20 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 20 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 20 times.
✗ Branch 21 not taken.
60 (bp::arg("model"), bp::arg("data"), bp::arg("q"), bp::arg("contact_models"),
68
4/8
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 20 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 20 times.
✗ Branch 11 not taken.
60 bp::arg("contact_datas"), bp::arg("mu") = 0),
69 "Computes the inverse of the Delassus matrix associated to a set of given constraints.");
70 20 }
71 } // namespace python
72 } // namespace pinocchio
73