GCC Code Coverage Report


Directory: ./
File: unittest/joint-generic.cpp
Date: 2025-02-12 21:03:38
Exec Total Coverage
Lines: 182 182 100.0%
Branches: 641 1281 50.0%

Line Branch Exec Source
1 //
2 // Copyright (c) 2016-2019 CNRS INRIA
3 //
4
5 #include "pinocchio/multibody/joint/joint-generic.hpp"
6
7 #include "pinocchio/multibody/liegroup/liegroup.hpp"
8
9 #include "pinocchio/multibody/model.hpp"
10
11 #include "pinocchio/algorithm/joint-configuration.hpp"
12
13 #include <iostream>
14 #include <boost/test/unit_test.hpp>
15 #include <boost/utility/binary.hpp>
16
17 using namespace pinocchio;
18
19 template<typename JointModel>
20 50 void test_joint_methods(
21 JointModelBase<JointModel> & jmodel, JointDataBase<typename JointModel::JointDataDerived> & jdata)
22 {
23 typedef typename LieGroup<JointModel>::type LieGroupType;
24 typedef typename JointModel::JointDataDerived JointData;
25
26
4/8
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 25 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
50 std::cout << "Testing Joint over " << jmodel.shortname() << std::endl;
27
28
2/4
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
50 Eigen::VectorXd q1, q2;
29
2/4
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
50 Eigen::VectorXd armature =
30
6/12
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 25 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 25 times.
✗ Branch 17 not taken.
50 Eigen::VectorXd::Random(jdata.S().nv()) + Eigen::VectorXd::Ones(jdata.S().nv());
31
32
3/6
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 25 times.
✗ Branch 8 not taken.
50 q1 = LieGroupType().random();
33
3/6
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 25 times.
✗ Branch 8 not taken.
50 q2 = LieGroupType().random();
34
35
4/8
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 25 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
50 Eigen::VectorXd v1(Eigen::VectorXd::Random(jdata.S().nv())),
36
4/8
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 25 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
50 v2(Eigen::VectorXd::Random(jdata.S().nv()));
37
38
2/4
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
50 Inertia::Matrix6 Ia(pinocchio::Inertia::Random().matrix()),
39
2/4
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
50 Ia2(pinocchio::Inertia::Random().matrix());
40 50 bool update_I = false;
41
42
1/2
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
50 jmodel.calc(jdata.derived(), q1, v1);
43
1/2
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
50 jmodel.calc_aba(jdata.derived(), armature, Ia, update_I);
44
45
1/2
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
50 pinocchio::JointModel jma(jmodel);
46
7/14
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 25 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 25 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 25 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 25 times.
50 BOOST_CHECK(jmodel == jma);
47
7/14
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 25 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 25 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 25 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 25 times.
50 BOOST_CHECK(jma == jmodel);
48
7/14
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 25 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 25 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 25 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 25 times.
50 BOOST_CHECK(jma.hasSameIndexes(jmodel));
49
50
1/2
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
50 pinocchio::JointData jda(jdata.derived());
51
7/14
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 25 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 25 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 25 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 25 times.
50 BOOST_CHECK(jda == jdata);
52
7/14
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 25 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 25 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 25 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 25 times.
50 BOOST_CHECK(jdata == jda);
53
54
1/2
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
50 jma.calc(jda, q1, v1);
55
1/2
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
50 jma.calc_aba(jda, armature, Ia, update_I);
56
1/2
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
50 pinocchio::JointData jda_other(jdata);
57
58
1/2
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
50 jma.calc(jda_other, q2, v2);
59
1/2
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
50 jma.calc_aba(jda_other, armature, Ia2, update_I);
60
61
7/14
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 25 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 25 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 25 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 25 times.
50 BOOST_CHECK(jda_other != jda);
62
7/14
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 25 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 25 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 25 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 25 times.
50 BOOST_CHECK(jda != jda_other);
63
8/16
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 25 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 25 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 25 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 25 times.
✗ Branch 24 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 25 times.
50 BOOST_CHECK(jda_other != jdata);
64
7/14
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 25 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 25 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 25 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 25 times.
50 BOOST_CHECK(jdata != jda_other);
65
66
2/4
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
100 const std::string error_prefix("JointModel on " + jma.shortname());
67
9/18
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 25 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 25 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 25 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 25 times.
✗ Branch 26 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 25 times.
50 BOOST_CHECK_MESSAGE(jmodel.nq() == jma.nq(), std::string(error_prefix + " - nq "));
68
9/18
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 25 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 25 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 25 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 25 times.
✗ Branch 26 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 25 times.
50 BOOST_CHECK_MESSAGE(jmodel.nv() == jma.nv(), std::string(error_prefix + " - nv "));
69
70
9/18
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 25 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 25 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 25 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 25 times.
✗ Branch 26 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 25 times.
50 BOOST_CHECK_MESSAGE(jmodel.idx_q() == jma.idx_q(), std::string(error_prefix + " - Idx_q "));
71
9/18
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 25 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 25 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 25 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 25 times.
✗ Branch 26 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 25 times.
50 BOOST_CHECK_MESSAGE(jmodel.idx_v() == jma.idx_v(), std::string(error_prefix + " - Idx_v "));
72
9/18
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 25 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 25 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 25 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 25 times.
✗ Branch 26 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 25 times.
50 BOOST_CHECK_MESSAGE(jmodel.id() == jma.id(), std::string(error_prefix + " - JointId "));
73
74
12/24
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 25 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 25 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 25 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 25 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 25 times.
✗ Branch 30 not taken.
✓ Branch 32 taken 25 times.
✗ Branch 33 not taken.
✓ Branch 35 taken 25 times.
✗ Branch 36 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 25 times.
50 BOOST_CHECK_MESSAGE(
75 jda.S().matrix().isApprox(jdata.S().matrix()),
76 std::string(error_prefix + " - JointMotionSubspaceXd "));
77
12/24
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 25 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 25 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 25 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 25 times.
✗ Branch 30 not taken.
✓ Branch 32 taken 17 times.
✗ Branch 33 not taken.
✗ Branch 35 not taken.
✓ Branch 36 taken 8 times.
✗ Branch 38 not taken.
✓ Branch 39 taken 17 times.
50 BOOST_CHECK_MESSAGE(
78 (jda.M()).isApprox((jdata.M())),
79 std::string(error_prefix + " - Joint transforms ")); // == or isApprox ?
80
11/22
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 25 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 25 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 25 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 25 times.
✗ Branch 30 not taken.
✓ Branch 32 taken 25 times.
✗ Branch 33 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 25 times.
50 BOOST_CHECK_MESSAGE(
81 (jda.v()).isApprox((pinocchio::Motion(jdata.v()))),
82 std::string(error_prefix + " - Joint motions "));
83
10/20
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 25 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 25 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 25 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 25 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 25 times.
✗ Branch 29 not taken.
✗ Branch 34 not taken.
✓ Branch 35 taken 25 times.
50 BOOST_CHECK_MESSAGE((jda.c()) == (jdata.c()), std::string(error_prefix + " - Joint bias "));
84
85
10/20
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 25 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 25 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 25 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 25 times.
✗ Branch 30 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 25 times.
50 BOOST_CHECK_MESSAGE(
86 (jda.U()).isApprox(jdata.U()),
87 std::string(error_prefix + " - Joint U inertia matrix decomposition "));
88
10/20
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 25 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 25 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 25 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 25 times.
✗ Branch 30 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 25 times.
50 BOOST_CHECK_MESSAGE(
89 (jda.Dinv()).isApprox(jdata.Dinv()),
90 std::string(error_prefix + " - Joint DInv inertia matrix decomposition "));
91
10/20
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 25 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 25 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 25 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 25 times.
✗ Branch 30 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 25 times.
50 BOOST_CHECK_MESSAGE(
92 (jda.UDinv()).isApprox(jdata.UDinv()),
93 std::string(error_prefix + " - Joint UDInv inertia matrix decomposition "));
94
95 // Test vxS
96 typedef typename JointModel::Constraint_t Constraint_t;
97 typedef typename Constraint_t::DenseBase ConstraintDense;
98
99
1/2
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
50 Motion v(Motion::Random());
100
2/4
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
50 ConstraintDense vxS(v.cross(jdata.S()));
101
5/10
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 25 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
50 ConstraintDense vxS_ref = v.toActionMatrix() * jdata.S().matrix();
102
103
8/16
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 17 taken 25 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 25 times.
✗ Branch 24 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 25 times.
50 BOOST_CHECK_MESSAGE(vxS.isApprox(vxS_ref), std::string(error_prefix + "- Joint vxS operation "));
104
105 // Test Y*S
106
1/2
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
50 const Inertia Isparse(Inertia::Random());
107
1/2
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
50 const Inertia::Matrix6 Idense(Isparse.matrix());
108
109
2/4
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
50 const ConstraintDense IsparseS = Isparse * jdata.S();
110
4/7
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 24 times.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 16 times.
✗ Branch 8 not taken.
50 const ConstraintDense IdenseS = Idense * jdata.S();
111
112
8/16
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 17 taken 25 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 25 times.
✗ Branch 24 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 25 times.
50 BOOST_CHECK_MESSAGE(
113 IdenseS.isApprox(IsparseS), std::string(error_prefix + "- Joint YS operation "));
114
115 // Test calc
116 {
117
1/2
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
50 JointData jdata1(jdata.derived());
118
119
1/2
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
50 jmodel.calc(jdata1.derived(), q1, v1);
120
1/2
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
50 jmodel.calc(jdata1.derived(), Blank(), v2);
121
122
1/2
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
50 JointData jdata_ref(jdata.derived());
123
1/2
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
50 jmodel.calc(jdata_ref.derived(), q1, v2);
124
125
12/24
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 25 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 25 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 25 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 25 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 25 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 25 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 25 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 25 times.
✗ Branch 35 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 25 times.
50 BOOST_CHECK_MESSAGE(
126 pinocchio::JointData(jdata1).v() == pinocchio::JointData(jdata_ref).v(),
127 std::string(error_prefix + "- joint.calc(jdata,*,v) "));
128 }
129 50 }
130
131 template<typename JointModel_>
132 struct init;
133
134 template<typename JointModel_>
135 struct init
136 {
137 62 static JointModel_ run()
138 {
139 62 JointModel_ jmodel;
140 62 jmodel.setIndexes(0, 0, 0);
141 62 return jmodel;
142 }
143 };
144
145 template<typename Scalar, int Options>
146 struct init<pinocchio::JointModelRevoluteUnalignedTpl<Scalar, Options>>
147 {
148 typedef pinocchio::JointModelRevoluteUnalignedTpl<Scalar, Options> JointModel;
149
150 2 static JointModel run()
151 {
152 typedef typename JointModel::Vector3 Vector3;
153
2/4
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
2 JointModel jmodel(Vector3::Random().normalized());
154
155 2 jmodel.setIndexes(0, 0, 0);
156 2 return jmodel;
157 }
158 };
159
160 template<typename Scalar, int Options>
161 struct init<pinocchio::JointModelRevoluteUnboundedUnalignedTpl<Scalar, Options>>
162 {
163 typedef pinocchio::JointModelRevoluteUnboundedUnalignedTpl<Scalar, Options> JointModel;
164
165 2 static JointModel run()
166 {
167 typedef typename JointModel::Vector3 Vector3;
168
2/4
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
2 JointModel jmodel(Vector3::Random().normalized());
169
170 2 jmodel.setIndexes(0, 0, 0);
171 2 return jmodel;
172 }
173 };
174
175 template<typename Scalar, int Options>
176 struct init<pinocchio::JointModelPrismaticUnalignedTpl<Scalar, Options>>
177 {
178 typedef pinocchio::JointModelPrismaticUnalignedTpl<Scalar, Options> JointModel;
179
180 2 static JointModel run()
181 {
182 typedef typename JointModel::Vector3 Vector3;
183
2/4
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
2 JointModel jmodel(Vector3::Random().normalized());
184
185 2 jmodel.setIndexes(0, 0, 0);
186 2 return jmodel;
187 }
188 };
189
190 template<typename Scalar, int Options, template<typename, int> class JointCollection>
191 struct init<pinocchio::JointModelTpl<Scalar, Options, JointCollection>>
192 {
193 typedef pinocchio::JointModelTpl<Scalar, Options, JointCollection> JointModel;
194
195 static JointModel run()
196 {
197 typedef pinocchio::JointModelRevoluteTpl<Scalar, Options, 0> JointModelRX;
198 JointModel jmodel((JointModelRX()));
199
200 jmodel.setIndexes(0, 0, 0);
201 return jmodel;
202 }
203 };
204
205 template<typename Scalar, int Options, template<typename, int> class JointCollection>
206 struct init<pinocchio::JointModelCompositeTpl<Scalar, Options, JointCollection>>
207 {
208 typedef pinocchio::JointModelCompositeTpl<Scalar, Options, JointCollection> JointModel;
209
210 1 static JointModel run()
211 {
212 typedef pinocchio::JointModelRevoluteTpl<Scalar, Options, 0> JointModelRX;
213 typedef pinocchio::JointModelRevoluteTpl<Scalar, Options, 1> JointModelRY;
214
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
1 JointModel jmodel((JointModelRX()));
215
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 jmodel.addJoint(JointModelRY());
216
217
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 jmodel.setIndexes(0, 0, 0);
218 1 return jmodel;
219 }
220 };
221
222 template<typename JointModel_>
223 struct init<pinocchio::JointModelMimic<JointModel_>>
224 {
225 typedef pinocchio::JointModelMimic<JointModel_> JointModel;
226
227 6 static JointModel run()
228 {
229
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6 JointModel_ jmodel_ref = init<JointModel_>::run();
230
231
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6 JointModel jmodel(jmodel_ref, 1., 0.);
232
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6 jmodel.setIndexes(0, 0, 0);
233
234 12 return jmodel;
235 }
236 };
237
238 template<typename Scalar, int Options>
239 struct init<pinocchio::JointModelUniversalTpl<Scalar, Options>>
240 {
241 typedef pinocchio::JointModelUniversalTpl<Scalar, Options> JointModel;
242
243 2 static JointModel run()
244 {
245 typedef typename JointModel::Vector3 Vector3;
246
2/4
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
2 JointModel jmodel(XAxis::vector(), YAxis::vector());
247
248 2 jmodel.setIndexes(0, 0, 0);
249 2 return jmodel;
250 }
251 };
252
253 template<typename Scalar, int Options, int axis>
254 struct init<pinocchio::JointModelHelicalTpl<Scalar, Options, axis>>
255 {
256 typedef pinocchio::JointModelHelicalTpl<Scalar, Options, axis> JointModel;
257
258 12 static JointModel run()
259 {
260
1/2
✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
12 JointModel jmodel(static_cast<Scalar>(0.5));
261
262 12 jmodel.setIndexes(0, 0, 0);
263 12 return jmodel;
264 }
265 };
266
267 template<typename Scalar, int Options>
268 struct init<pinocchio::JointModelHelicalUnalignedTpl<Scalar, Options>>
269 {
270 typedef pinocchio::JointModelHelicalUnalignedTpl<Scalar, Options> JointModel;
271
272 2 static JointModel run()
273 {
274 typedef typename JointModel::Vector3 Vector3;
275
2/4
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
2 JointModel jmodel(Vector3::Random().normalized());
276
277 2 jmodel.setIndexes(0, 0, 0);
278 2 return jmodel;
279 }
280 };
281
282 struct TestJoint
283 {
284
285 template<typename JointModel>
286 50 void operator()(const JointModelBase<JointModel> &) const
287 {
288
1/2
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
50 JointModel jmodel = init<JointModel>::run();
289
1/2
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
50 jmodel.setIndexes(0, 0, 0);
290
1/2
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
50 typename JointModel::JointDataDerived jdata = jmodel.createData();
291
292
1/2
✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
50 test_joint_methods(jmodel, jdata);
293 50 }
294
295 1 void operator()(const pinocchio::JointModelComposite &) const
296 {
297 1 }
298 };
299
300 namespace pinocchio
301 {
302
303 template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
304 struct JointTest;
305 template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
306 struct JointModelTest;
307 template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
308 struct JointDataTest;
309
310 template<typename _Scalar, int _Options, template<typename, int> class JointCollectionTpl>
311 struct traits<JointDataTest<_Scalar, _Options, JointCollectionTpl>>
312 {
313 typedef JointTpl<_Scalar, _Options, JointCollectionTpl> JointDerived;
314 typedef _Scalar Scalar;
315 };
316
317 template<typename _Scalar, int _Options, template<typename, int> class JointCollectionTpl>
318 struct traits<JointModelTest<_Scalar, _Options, JointCollectionTpl>>
319 {
320 typedef JointTpl<_Scalar, _Options, JointCollectionTpl> JointDerived;
321 typedef _Scalar Scalar;
322 };
323
324 template<typename _Scalar, int _Options, template<typename, int> class JointCollectionTpl>
325 struct traits<JointTest<_Scalar, _Options, JointCollectionTpl>>
326 {
327 enum
328 {
329 Options = _Options,
330 NQ = Eigen::Dynamic, // Dynamic because unknown at compile time
331 NV = Eigen::Dynamic
332 };
333 typedef _Scalar Scalar;
334
335 typedef JointDataTpl<Scalar, Options, JointCollectionTpl> JointDataDerived;
336 typedef JointModelTpl<Scalar, Options, JointCollectionTpl> JointModelDerived;
337 typedef JointMotionSubspaceTpl<Eigen::Dynamic, Scalar, Options> Constraint_t;
338 typedef SE3Tpl<Scalar, Options> Transformation_t;
339 typedef MotionTpl<Scalar, Options> Motion_t;
340 typedef MotionTpl<Scalar, Options> Bias_t;
341
342 // [ABA]
343 typedef Eigen::Matrix<Scalar, 6, Eigen::Dynamic, Options> U_t;
344 typedef Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic, Options> D_t;
345 typedef Eigen::Matrix<Scalar, 6, Eigen::Dynamic, Options> UD_t;
346
347 typedef Eigen::Matrix<Scalar, Eigen::Dynamic, 1, Options> ConfigVector_t;
348 typedef Eigen::Matrix<Scalar, Eigen::Dynamic, 1, Options> TangentVector_t;
349 };
350
351 template<typename _Scalar, int _Options, template<typename, int> class JointCollectionTpl>
352 struct JointModelTest
353 : JointCollectionTpl<_Scalar, _Options>::JointModelVariant
354 , JointModelBase<JointModelTest<_Scalar, _Options, JointCollectionTpl>>
355 {
356 typedef JointTest<_Scalar, _Options, JointCollectionTpl> JointDerived;
357 typedef JointCollectionTpl<_Scalar, _Options> JointCollection;
358 typedef typename JointCollection::JointModelVariant VariantBase;
359 typedef typename JointCollection::JointModelVariant JointModelVariant;
360
361 PINOCCHIO_JOINT_TYPEDEF_TEMPLATE(JointDerived);
362
363 2 JointModelTest(const JointModelVariant & jmodel)
364 2 : VariantBase(jmodel)
365 {
366 2 }
367 };
368
369 } // namespace pinocchio
370
371 BOOST_AUTO_TEST_SUITE(BOOST_TEST_MODULE)
372
373
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_joint_from_joint_composite)
374 {
375 typedef JointCollectionDefault JointCollection;
376 typedef JointCollection::JointModelVariant JointModelVariant;
377
378
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModelRX jmodel_revolute_x;
379
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModel jmodel_generic(jmodel_revolute_x);
380
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModelVariant jmodel_variant(jmodel_revolute_x);
381
382
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 JointModelTest<double, 0, JointCollectionDefaultTpl> jmodel_test(jmodel_revolute_x);
383 2 std::vector<JointModelTest<double, 0, JointCollectionDefaultTpl>> jmodel_test_vector;
384
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 jmodel_test_vector.push_back(
385
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
4 JointModelTest<double, 0, JointCollectionDefaultTpl>(jmodel_revolute_x));
386
387 2 std::vector<JointModelVariant> jmodel_variant_vector;
388
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 jmodel_variant_vector.push_back(jmodel_revolute_x);
389
390 2 std::vector<JointModel> jmodel_generic_vector;
391
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 jmodel_generic_vector.push_back((JointModel)jmodel_revolute_x);
392
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 JointModelComposite jmodel_composite(jmodel_revolute_x);
393 2 }
394
395
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_all_joints)
396 {
397 2 boost::mpl::for_each<JointModelVariant::types>(TestJoint());
398 2 }
399
400
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_empty_model)
401 {
402
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModel jmodel;
403
4/8
✓ 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.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 std::cout << "nq " << jmodel.nq() << std::endl;
404
4/8
✓ 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.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 std::cout << "nv " << jmodel.nv() << std::endl;
405
4/8
✓ 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.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 std::cout << "idx_q " << jmodel.idx_q() << std::endl;
406
4/8
✓ 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.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 std::cout << "idx_v " << jmodel.idx_v() << std::endl;
407
4/8
✓ 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.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 std::cout << "id " << jmodel.id() << std::endl;
408
4/8
✓ 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.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 std::cout << "name " << jmodel.shortname() << std::endl;
409
410
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(jmodel.idx_q() == -1);
411
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(jmodel.idx_v() == -1);
412 2 }
413
414
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(isEqual)
415 {
416
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModelRX joint_revolutex;
417
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModelRY joint_revolutey;
418
419
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(joint_revolutex != joint_revolutey);
420
421
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModel jmodelx(joint_revolutex);
422
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 jmodelx.setIndexes(0, 0, 0);
423
424
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModel jmodelx_copy = jmodelx;
425
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(jmodelx_copy == jmodelx);
426
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 1 times.
2 BOOST_CHECK(jmodelx_copy == jmodelx.derived());
427
428
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModel jmodely(joint_revolutey);
429 // TODO: the comparison of two variants is not supported by some old version of BOOST
430 // BOOST_CHECK(jmodely.toVariant() != jmodelx.toVariant());
431
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(jmodely != jmodelx);
432 2 }
433
434
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(cast)
435 {
436
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModelRX joint_revolutex;
437
438
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModel jmodelx(joint_revolutex);
439
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 jmodelx.setIndexes(0, 0, 0);
440
441
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
2 BOOST_CHECK(jmodelx.cast<double>() == jmodelx);
442
9/18
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK(jmodelx.cast<long double>().cast<double>() == jmodelx);
443 2 }
444
445 struct TestJointOperatorEqual
446 {
447
448 template<typename JointModel>
449 46 void operator()(const JointModelBase<JointModel> &) const
450 {
451
1/2
✓ Branch 1 taken 23 times.
✗ Branch 2 not taken.
46 JointModel jmodel_init = init<JointModel>::run();
452 typedef typename JointModel::JointDataDerived JointData;
453
454
1/2
✓ Branch 1 taken 23 times.
✗ Branch 2 not taken.
46 Model model;
455
4/8
✓ Branch 2 taken 23 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 23 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 23 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 23 times.
✗ Branch 12 not taken.
46 model.addJoint(0, jmodel_init, SE3::Random(), "toto");
456
1/2
✓ Branch 1 taken 23 times.
✗ Branch 2 not taken.
46 model.lowerPositionLimit.fill(-1.);
457
1/2
✓ Branch 1 taken 23 times.
✗ Branch 2 not taken.
46 model.upperPositionLimit.fill(1.);
458
459
1/2
✓ Branch 2 taken 23 times.
✗ Branch 3 not taken.
46 const JointModel & jmodel = boost::get<JointModel>(model.joints[1]);
460
461
1/2
✓ Branch 1 taken 23 times.
✗ Branch 2 not taken.
46 Eigen::VectorXd q = randomConfiguration(model);
462
2/4
✓ Branch 1 taken 23 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 23 times.
✗ Branch 5 not taken.
46 Eigen::VectorXd v = Eigen::VectorXd::Random(model.nv);
463
464
1/2
✓ Branch 1 taken 23 times.
✗ Branch 2 not taken.
46 JointData jdata = jmodel.createData();
465
466
1/2
✓ Branch 1 taken 23 times.
✗ Branch 2 not taken.
46 jmodel.calc(jdata, q, v);
467
468
2/4
✓ Branch 1 taken 23 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 23 times.
✗ Branch 5 not taken.
46 Eigen::VectorXd armature =
469
4/8
✓ Branch 1 taken 23 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 23 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 23 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 23 times.
✗ Branch 11 not taken.
46 Eigen::VectorXd::Random(jmodel.nv()) + Eigen::VectorXd::Ones(jmodel.nv());
470
2/4
✓ Branch 1 taken 23 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 23 times.
✗ Branch 5 not taken.
46 Inertia::Matrix6 I = Inertia::Matrix6::Identity();
471
1/2
✓ Branch 1 taken 23 times.
✗ Branch 2 not taken.
46 jmodel.calc_aba(jdata, armature, I, false);
472
1/2
✓ Branch 1 taken 23 times.
✗ Branch 2 not taken.
46 test(jdata);
473 46 }
474
475 template<typename JointModel>
476 6 void operator()(const pinocchio::JointModelMimic<JointModel> &) const
477 {
478 6 }
479
480 template<typename JointData>
481 46 static void test(const JointData & jdata)
482 {
483
1/2
✓ Branch 1 taken 23 times.
✗ Branch 2 not taken.
46 pinocchio::JointData jdata_generic1(jdata);
484
485
4/8
✓ Branch 1 taken 23 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 23 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 23 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 23 times.
✗ Branch 11 not taken.
46 std::cout << "name: " << jdata_generic1.shortname() << std::endl;
486
7/14
✓ Branch 1 taken 23 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 23 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 23 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 23 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 23 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 23 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 23 times.
46 BOOST_CHECK(jdata_generic1 == jdata_generic1);
487 46 }
488 };
489
490
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_operator_equal)
491 {
492 2 boost::mpl::for_each<JointModelVariant::types>(TestJointOperatorEqual());
493 2 }
494
495 BOOST_AUTO_TEST_SUITE_END()
496