| Directory: | ./ |
|---|---|
| File: | unittest/liegroups.cpp |
| Date: | 2025-02-12 21:03:38 |
| Exec | Total | Coverage | |
|---|---|---|---|
| Lines: | 424 | 426 | 99.5% |
| Branches: | 1543 | 3025 | 51.0% |
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // Copyright (c) 2017-2020, CNRS INRIA | ||
| 2 | // Authors: Joseph Mirabel (joseph.mirabel@laas.fr) | ||
| 3 | // | ||
| 4 | |||
| 5 | #include <iostream> | ||
| 6 | #include <iomanip> | ||
| 7 | |||
| 8 | #include "pinocchio/multibody/liegroup/liegroup.hpp" | ||
| 9 | #include "pinocchio/multibody/liegroup/liegroup-collection.hpp" | ||
| 10 | #include "pinocchio/multibody/liegroup/liegroup-generic.hpp" | ||
| 11 | #include "pinocchio/multibody/liegroup/cartesian-product-variant.hpp" | ||
| 12 | |||
| 13 | #include "pinocchio/multibody/joint/joint-generic.hpp" | ||
| 14 | |||
| 15 | #include <boost/test/unit_test.hpp> | ||
| 16 | #include <boost/utility/binary.hpp> | ||
| 17 | #include <boost/algorithm/string.hpp> | ||
| 18 | #include <boost/mpl/vector.hpp> | ||
| 19 | |||
| 20 | #define EIGEN_VECTOR_IS_APPROX(Va, Vb, precision) \ | ||
| 21 | BOOST_CHECK_MESSAGE( \ | ||
| 22 | (Va).isApprox(Vb, precision), "check " #Va ".isApprox(" #Vb ") failed " \ | ||
| 23 | "[\n" \ | ||
| 24 | << (Va).transpose() << "\n!=\n" \ | ||
| 25 | << (Vb).transpose() << "\n]") | ||
| 26 | #define EIGEN_MATRIX_IS_APPROX(Va, Vb, precision) \ | ||
| 27 | BOOST_CHECK_MESSAGE( \ | ||
| 28 | (Va).isApprox(Vb, precision), "check " #Va ".isApprox(" #Vb ") failed " \ | ||
| 29 | "[\n" \ | ||
| 30 | << (Va) << "\n!=\n" \ | ||
| 31 | << (Vb) << "\n]") | ||
| 32 | |||
| 33 | using namespace pinocchio; | ||
| 34 | |||
| 35 | #define VERBOSE false | ||
| 36 | #define IFVERBOSE if (VERBOSE) | ||
| 37 | |||
| 38 | namespace pinocchio | ||
| 39 | { | ||
| 40 | template<typename Derived> | ||
| 41 | std::ostream & operator<<(std::ostream & os, const LieGroupBase<Derived> & lg) | ||
| 42 | { | ||
| 43 | return os << lg.name(); | ||
| 44 | } | ||
| 45 | template<typename LieGroupCollection> | ||
| 46 | ✗ | std::ostream & operator<<(std::ostream & os, const LieGroupGenericTpl<LieGroupCollection> & lg) | |
| 47 | { | ||
| 48 | ✗ | return os << lg.name(); | |
| 49 | } | ||
| 50 | } // namespace pinocchio | ||
| 51 | |||
| 52 | template<typename T> | ||
| 53 | 32640 | void test_lie_group_methods(T & jmodel, typename T::JointDataDerived &) | |
| 54 | { | ||
| 55 | typedef typename LieGroup<T>::type LieGroupType; | ||
| 56 | typedef double Scalar; | ||
| 57 | |||
| 58 | 32640 | const Scalar prec = Eigen::NumTraits<Scalar>::dummy_precision(); | |
| 59 |
7/14✓ Branch 2 taken 16320 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 16320 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 16320 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 16320 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 16320 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 16320 times.
✗ Branch 22 not taken.
|
32640 | BOOST_TEST_MESSAGE("Testing Joint over " << jmodel.shortname()); |
| 60 | typedef typename T::ConfigVector_t ConfigVector_t; | ||
| 61 | typedef typename T::TangentVector_t TangentVector_t; | ||
| 62 | |||
| 63 |
3/6✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 16320 times.
✗ Branch 8 not taken.
|
32640 | ConfigVector_t q1(ConfigVector_t::Random(jmodel.nq())); |
| 64 |
3/6✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 16320 times.
✗ Branch 8 not taken.
|
32640 | TangentVector_t q1_dot(TangentVector_t::Random(jmodel.nv())); |
| 65 |
3/6✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 16320 times.
✗ Branch 8 not taken.
|
32640 | ConfigVector_t q2(ConfigVector_t::Random(jmodel.nq())); |
| 66 | |||
| 67 |
6/12✓ Branch 0 taken 16 times.
✓ Branch 1 taken 16304 times.
✓ Branch 3 taken 16 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 16 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 16 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 16 times.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
|
32640 | static ConfigVector_t Ones(ConfigVector_t::Ones(jmodel.nq())); |
| 68 | 32640 | const Scalar u = 0.3; | |
| 69 | // pinocchio::Inertia::Matrix6 Ia(pinocchio::Inertia::Random().matrix()); | ||
| 70 | // bool update_I = false; | ||
| 71 | |||
| 72 |
3/6✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 16320 times.
✗ Branch 8 not taken.
|
32640 | q1 = LieGroupType().randomConfiguration(-Ones, Ones); |
| 73 |
8/16✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 16320 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 16320 times.
✗ Branch 15 not taken.
✓ Branch 18 taken 16320 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 16320 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 16320 times.
✗ Branch 25 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 16320 times.
|
32640 | BOOST_CHECK(LieGroupType().isNormalized(q1)); |
| 74 | |||
| 75 |
1/2✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
|
32640 | typename T::JointDataDerived jdata = jmodel.createData(); |
| 76 | |||
| 77 | // Check integrate | ||
| 78 |
1/2✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
|
32640 | jmodel.calc(jdata, q1, q1_dot); |
| 79 |
1/2✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
|
32640 | SE3 M1 = jdata.M; |
| 80 |
1/2✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
|
32640 | Motion v1(jdata.v); |
| 81 | |||
| 82 |
2/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
|
32640 | q2 = LieGroupType().integrate(q1, q1_dot); |
| 83 |
8/16✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 16320 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 16320 times.
✗ Branch 15 not taken.
✓ Branch 18 taken 16320 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 16320 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 16320 times.
✗ Branch 25 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 16320 times.
|
32640 | BOOST_CHECK(LieGroupType().isNormalized(q2)); |
| 84 |
1/2✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
|
32640 | jmodel.calc(jdata, q2); |
| 85 |
1/2✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
|
32640 | SE3 M2 = jdata.M; |
| 86 | |||
| 87 | 32640 | double tol_test = 1e2; | |
| 88 |
3/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1020 times.
✓ Branch 6 taken 15300 times.
|
32640 | if (jmodel.shortname() == "JointModelPlanar") |
| 89 | 2040 | tol_test = 5e4; | |
| 90 | |||
| 91 |
2/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
|
32640 | const SE3 M2_exp = M1 * exp6(v1); |
| 92 | |||
| 93 |
3/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 15300 times.
✓ Branch 6 taken 1020 times.
|
32640 | if (jmodel.shortname() != "JointModelSphericalZYX") |
| 94 | { | ||
| 95 |
9/18✓ Branch 1 taken 15300 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 15300 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 15300 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 15300 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 15300 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 15300 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 15300 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 15300 times.
✗ Branch 27 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 15300 times.
|
30600 | BOOST_CHECK_MESSAGE( |
| 96 | M2.isApprox(M2_exp), std::string("Error when integrating1 " + jmodel.shortname())); | ||
| 97 | } | ||
| 98 | |||
| 99 | // Check integrate when the same vector is passed as input and output | ||
| 100 |
3/6✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 16320 times.
✗ Branch 8 not taken.
|
32640 | ConfigVector_t qTest(ConfigVector_t::Random(jmodel.nq())); |
| 101 |
3/6✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 16320 times.
✗ Branch 8 not taken.
|
32640 | TangentVector_t qTest_dot(TangentVector_t::Random(jmodel.nv())); |
| 102 |
3/6✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 16320 times.
✗ Branch 8 not taken.
|
32640 | ConfigVector_t qResult(ConfigVector_t::Random(jmodel.nq())); |
| 103 |
3/6✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 16320 times.
✗ Branch 8 not taken.
|
32640 | qTest = LieGroupType().randomConfiguration(-Ones, Ones); |
| 104 |
2/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
|
32640 | qResult = LieGroupType().integrate(qTest, qTest_dot); |
| 105 |
2/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
|
32640 | LieGroupType().integrate(qTest, qTest_dot, qTest); |
| 106 |
10/20✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 16320 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 16320 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 16320 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 16320 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 16320 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 16320 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 16320 times.
✗ Branch 30 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 16320 times.
|
32640 | BOOST_CHECK_MESSAGE( |
| 107 | LieGroupType().isNormalized(qTest), | ||
| 108 | std::string( | ||
| 109 | "Normalization error when integrating with same input and output " + jmodel.shortname())); | ||
| 110 |
2/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
|
32640 | SE3 MTest, MResult; |
| 111 | { | ||
| 112 |
1/2✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
|
32640 | typename T::JointDataDerived jdata = jmodel.createData(); |
| 113 |
1/2✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
|
32640 | jmodel.calc(jdata, qTest); |
| 114 |
2/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11220 times.
✗ Branch 5 not taken.
|
32640 | MTest = jdata.M; |
| 115 | } | ||
| 116 | { | ||
| 117 |
1/2✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
|
32640 | typename T::JointDataDerived jdata = jmodel.createData(); |
| 118 |
1/2✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
|
32640 | jmodel.calc(jdata, qResult); |
| 119 |
2/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11220 times.
✗ Branch 5 not taken.
|
32640 | MResult = jdata.M; |
| 120 | } | ||
| 121 |
9/18✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 16320 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 16320 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 16320 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 16320 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 16320 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 16320 times.
✗ Branch 27 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 16320 times.
|
32640 | BOOST_CHECK_MESSAGE( |
| 122 | MTest.isApprox(MResult), | ||
| 123 | std::string( | ||
| 124 | "Inconsistent value when integrating with same input and output " + jmodel.shortname())); | ||
| 125 | |||
| 126 |
9/18✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 16320 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 16320 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 16320 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 16320 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 16320 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 16320 times.
✗ Branch 26 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 16320 times.
|
32640 | BOOST_CHECK_MESSAGE( |
| 127 | qTest.isApprox(qResult, prec), | ||
| 128 | std::string( | ||
| 129 | "Inconsistent value when integrating with same input and output " + jmodel.shortname())); | ||
| 130 | |||
| 131 | // Check the reversability of integrate | ||
| 132 |
3/6✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 16320 times.
✗ Branch 8 not taken.
|
32640 | ConfigVector_t q3 = LieGroupType().integrate(q2, -q1_dot); |
| 133 |
1/2✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
|
32640 | jmodel.calc(jdata, q3); |
| 134 |
1/2✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
|
32640 | SE3 M3 = jdata.M; |
| 135 | |||
| 136 |
9/18✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 16320 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 16320 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 16320 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 16320 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 16320 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 16320 times.
✗ Branch 27 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 16320 times.
|
32640 | BOOST_CHECK_MESSAGE( |
| 137 | M3.isApprox(M1), std::string("Error when integrating back " + jmodel.shortname())); | ||
| 138 | |||
| 139 | // Check interpolate | ||
| 140 |
2/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
|
32640 | ConfigVector_t q_interpolate = LieGroupType().interpolate(q1, q2, 0.); |
| 141 |
9/18✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 16320 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 16320 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 16320 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 16320 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 16320 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 16320 times.
✗ Branch 27 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 16320 times.
|
32640 | BOOST_CHECK_MESSAGE( |
| 142 | q_interpolate.isApprox(q1), std::string("Error when interpolating " + jmodel.shortname())); | ||
| 143 | |||
| 144 |
2/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
|
32640 | q_interpolate = LieGroupType().interpolate(q1, q2, 1.); |
| 145 |
3/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1020 times.
✓ Branch 6 taken 15300 times.
|
32640 | if (jmodel.shortname() == "JointModelPlanar") // TODO(jcarpent) fix precision loss for |
| 146 | // JointModelPlanar log operations | ||
| 147 |
9/18✓ Branch 1 taken 1020 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1020 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1020 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1020 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1020 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1020 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1020 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1020 times.
✗ Branch 26 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1020 times.
|
2040 | BOOST_CHECK_MESSAGE( |
| 148 | q_interpolate.isApprox(q2, 1e-8), | ||
| 149 | std::string("Error when interpolating " + jmodel.shortname())); | ||
| 150 | else | ||
| 151 |
9/18✓ Branch 1 taken 15300 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 15300 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 15300 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 15300 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 15300 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 15300 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 15300 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 15300 times.
✗ Branch 26 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 15300 times.
|
30600 | BOOST_CHECK_MESSAGE( |
| 152 | q_interpolate.isApprox(q2, 1e0 * prec), | ||
| 153 | std::string("Error when interpolating " + jmodel.shortname())); | ||
| 154 | |||
| 155 |
3/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 15300 times.
✓ Branch 6 taken 1020 times.
|
32640 | if (jmodel.shortname() != "JointModelSphericalZYX") |
| 156 | { | ||
| 157 |
2/4✓ Branch 1 taken 15300 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 15300 times.
✗ Branch 5 not taken.
|
30600 | q_interpolate = LieGroupType().interpolate(q1, q2, u); |
| 158 |
1/2✓ Branch 1 taken 15300 times.
✗ Branch 2 not taken.
|
30600 | jmodel.calc(jdata, q_interpolate); |
| 159 |
1/2✓ Branch 1 taken 15300 times.
✗ Branch 2 not taken.
|
30600 | SE3 M_interpolate = jdata.M; |
| 160 | |||
| 161 |
3/6✓ Branch 1 taken 15300 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 15300 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 15300 times.
✗ Branch 8 not taken.
|
30600 | SE3 M_interpolate_expected = M1 * exp6(u * v1); |
| 162 |
9/18✓ Branch 1 taken 15300 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 15300 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 15300 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 15300 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 15300 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 15300 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 15300 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 15300 times.
✗ Branch 26 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 15300 times.
|
30600 | BOOST_CHECK_MESSAGE( |
| 163 | M_interpolate_expected.isApprox(M_interpolate, 1e4 * prec), | ||
| 164 | std::string("Error when interpolating " + jmodel.shortname())); | ||
| 165 | } | ||
| 166 | |||
| 167 | // Check that difference between two equal configuration is exactly 0 | ||
| 168 |
2/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
|
32640 | TangentVector_t zero = LieGroupType().difference(q1, q1); |
| 169 |
8/16✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 16320 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 16320 times.
✗ Branch 15 not taken.
✓ Branch 18 taken 16320 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 16320 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 16320 times.
✗ Branch 25 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 16320 times.
|
32640 | BOOST_CHECK_MESSAGE( |
| 170 | zero.isZero(), std::string("Error: difference between two equal configurations is not 0.")); | ||
| 171 |
2/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
|
32640 | zero = LieGroupType().difference(q2, q2); |
| 172 |
8/16✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 16320 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 16320 times.
✗ Branch 15 not taken.
✓ Branch 18 taken 16320 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 16320 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 16320 times.
✗ Branch 25 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 16320 times.
|
32640 | BOOST_CHECK_MESSAGE( |
| 173 | zero.isZero(), std::string("Error: difference between two equal configurations is not 0.")); | ||
| 174 | |||
| 175 | // Check difference | ||
| 176 | // TODO(jcarpent): check the increase of tolerance. | ||
| 177 | |||
| 178 |
2/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
|
32640 | TangentVector_t vdiff = LieGroupType().difference(q1, q2); |
| 179 |
9/18✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 16320 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 16320 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 16320 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 16320 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 16320 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 16320 times.
✗ Branch 26 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 16320 times.
|
32640 | BOOST_CHECK_MESSAGE( |
| 180 | vdiff.isApprox(q1_dot, tol_test * prec), | ||
| 181 | std::string("Error when differentiating " + jmodel.shortname())); | ||
| 182 | |||
| 183 | // Check distance | ||
| 184 |
2/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
|
32640 | Scalar dist = LieGroupType().distance(q1, q2); |
| 185 |
6/12✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 16320 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 16320 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 16320 times.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 16320 times.
|
32640 | BOOST_CHECK_MESSAGE(dist > 0., "distance - wrong results"); |
| 186 |
6/12✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 16320 times.
✗ Branch 9 not taken.
✓ Branch 14 taken 16320 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 16320 times.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 16320 times.
|
32640 | BOOST_CHECK_SMALL(math::fabs(dist - q1_dot.norm()), tol_test * prec); |
| 187 | |||
| 188 |
1/2✓ Branch 2 taken 16320 times.
✗ Branch 3 not taken.
|
32640 | std::string error_prefix("LieGroup"); |
| 189 |
3/6✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 16320 times.
✗ Branch 8 not taken.
|
32640 | error_prefix += " on joint " + jmodel.shortname(); |
| 190 | |||
| 191 |
8/16✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 16320 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 16320 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 16320 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 16320 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 16320 times.
✗ Branch 23 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 16320 times.
|
32640 | BOOST_CHECK_MESSAGE(jmodel.nq() == LieGroupType::NQ, std::string(error_prefix + " - nq ")); |
| 192 |
8/16✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 16320 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 16320 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 16320 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 16320 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 16320 times.
✗ Branch 23 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 16320 times.
|
32640 | BOOST_CHECK_MESSAGE(jmodel.nv() == LieGroupType::NV, std::string(error_prefix + " - nv ")); |
| 193 | |||
| 194 |
11/22✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 16320 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 16320 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 16320 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 16320 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 16320 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 16320 times.
✗ Branch 26 not taken.
✓ Branch 29 taken 16320 times.
✗ Branch 30 not taken.
✓ Branch 32 taken 16320 times.
✗ Branch 33 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 16320 times.
|
32640 | BOOST_CHECK_MESSAGE( |
| 195 | jmodel.nq() == LieGroupType().randomConfiguration(-1 * Ones, Ones).size(), | ||
| 196 | std::string(error_prefix + " - RandomConfiguration dimensions ")); | ||
| 197 | |||
| 198 |
2/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
|
32640 | ConfigVector_t q_normalize(ConfigVector_t::Random()); |
| 199 |
1/2✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
|
32640 | Eigen::VectorXd q_normalize_ref(q_normalize); |
| 200 |
3/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1020 times.
✓ Branch 6 taken 15300 times.
|
32640 | if (jmodel.shortname() == "JointModelSpherical") |
| 201 | { | ||
| 202 |
9/18✓ Branch 1 taken 1020 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1020 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1020 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1020 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1020 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 1020 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1020 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 1020 times.
✗ Branch 27 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1020 times.
|
2040 | BOOST_CHECK_MESSAGE( |
| 203 | !LieGroupType().isNormalized(q_normalize_ref), | ||
| 204 | std::string(error_prefix + " - !isNormalized ")); | ||
| 205 |
2/4✓ Branch 1 taken 1020 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1020 times.
✗ Branch 5 not taken.
|
2040 | q_normalize_ref /= q_normalize_ref.norm(); |
| 206 | } | ||
| 207 |
3/4✓ Branch 1 taken 15300 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1020 times.
✓ Branch 6 taken 14280 times.
|
30600 | else if (jmodel.shortname() == "JointModelFreeFlyer") |
| 208 | { | ||
| 209 |
9/18✓ Branch 1 taken 1020 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1020 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1020 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1020 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1020 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 1020 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1020 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 1020 times.
✗ Branch 27 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1020 times.
|
2040 | BOOST_CHECK_MESSAGE( |
| 210 | !LieGroupType().isNormalized(q_normalize_ref), | ||
| 211 | std::string(error_prefix + " - !isNormalized ")); | ||
| 212 |
4/8✓ Branch 1 taken 1020 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1020 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1020 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1020 times.
✗ Branch 11 not taken.
|
2040 | q_normalize_ref.template tail<4>() /= q_normalize_ref.template tail<4>().norm(); |
| 213 | } | ||
| 214 |
4/6✓ Branch 2 taken 14280 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 14280 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 3060 times.
✓ Branch 10 taken 11220 times.
|
28560 | else if (boost::algorithm::istarts_with(jmodel.shortname(), "JointModelRUB")) |
| 215 | { | ||
| 216 |
9/18✓ Branch 1 taken 3060 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 3060 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 3060 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 3060 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 3060 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 3060 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 3060 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 3060 times.
✗ Branch 27 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 3060 times.
|
6120 | BOOST_CHECK_MESSAGE( |
| 217 | !LieGroupType().isNormalized(q_normalize_ref), | ||
| 218 | std::string(error_prefix + " - !isNormalized ")); | ||
| 219 |
2/4✓ Branch 1 taken 3060 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3060 times.
✗ Branch 5 not taken.
|
6120 | q_normalize_ref /= q_normalize_ref.norm(); |
| 220 | } | ||
| 221 |
3/4✓ Branch 1 taken 11220 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1020 times.
✓ Branch 6 taken 10200 times.
|
22440 | else if (jmodel.shortname() == "JointModelPlanar") |
| 222 | { | ||
| 223 |
9/18✓ Branch 1 taken 1020 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1020 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1020 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1020 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1020 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 1020 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1020 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 1020 times.
✗ Branch 27 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1020 times.
|
2040 | BOOST_CHECK_MESSAGE( |
| 224 | !LieGroupType().isNormalized(q_normalize_ref), | ||
| 225 | std::string(error_prefix + " - !isNormalized ")); | ||
| 226 |
4/8✓ Branch 1 taken 1020 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1020 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1020 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1020 times.
✗ Branch 11 not taken.
|
2040 | q_normalize_ref.template tail<2>() /= q_normalize_ref.template tail<2>().norm(); |
| 227 | } | ||
| 228 |
9/18✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 16320 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 16320 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 16320 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 16320 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 16320 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 16320 times.
✗ Branch 27 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 16320 times.
|
32640 | BOOST_CHECK_MESSAGE( |
| 229 | LieGroupType().isNormalized(q_normalize_ref), std::string(error_prefix + " - isNormalized ")); | ||
| 230 |
2/4✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16320 times.
✗ Branch 5 not taken.
|
32640 | LieGroupType().normalize(q_normalize); |
| 231 |
8/16✓ Branch 1 taken 16320 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 16320 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 16320 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 16320 times.
✗ Branch 14 not taken.
✓ Branch 17 taken 16320 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 16320 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 16320 times.
✗ Branch 24 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 16320 times.
|
32640 | BOOST_CHECK_MESSAGE( |
| 232 | q_normalize.isApprox(q_normalize_ref), std::string(error_prefix + " - normalize ")); | ||
| 233 | 32640 | } | |
| 234 | |||
| 235 | struct TestJoint | ||
| 236 | { | ||
| 237 | |||
| 238 | template<typename JointModel, typename JointData> | ||
| 239 | 640 | static void run_tests(JointModel & jmodel, JointData & jdata) | |
| 240 | { | ||
| 241 |
2/2✓ Branch 0 taken 16320 times.
✓ Branch 1 taken 320 times.
|
33280 | for (int i = 0; i <= 50; ++i) |
| 242 | { | ||
| 243 | 32640 | test_lie_group_methods(jmodel, jdata); | |
| 244 | } | ||
| 245 | 640 | } | |
| 246 | |||
| 247 | template<typename T> | ||
| 248 | 560 | void operator()(const T) const | |
| 249 | { | ||
| 250 |
1/2✓ Branch 1 taken 280 times.
✗ Branch 2 not taken.
|
560 | T jmodel; |
| 251 |
1/2✓ Branch 1 taken 280 times.
✗ Branch 2 not taken.
|
560 | jmodel.setIndexes(0, 0, 0); |
| 252 |
1/2✓ Branch 1 taken 280 times.
✗ Branch 2 not taken.
|
560 | typename T::JointDataDerived jdata = jmodel.createData(); |
| 253 | |||
| 254 |
1/2✓ Branch 1 taken 280 times.
✗ Branch 2 not taken.
|
560 | run_tests(jmodel, jdata); |
| 255 | 560 | } | |
| 256 | |||
| 257 | 20 | void operator()(const pinocchio::JointModelRevoluteUnaligned &) const | |
| 258 | { | ||
| 259 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | pinocchio::JointModelRevoluteUnaligned jmodel(1.5, 1., 0.); |
| 260 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | jmodel.setIndexes(0, 0, 0); |
| 261 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | pinocchio::JointModelRevoluteUnaligned::JointDataDerived jdata = jmodel.createData(); |
| 262 | |||
| 263 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | run_tests(jmodel, jdata); |
| 264 | 20 | } | |
| 265 | |||
| 266 | 20 | void operator()(const pinocchio::JointModelPrismaticUnaligned &) const | |
| 267 | { | ||
| 268 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | pinocchio::JointModelPrismaticUnaligned jmodel(1.5, 1., 0.); |
| 269 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | jmodel.setIndexes(0, 0, 0); |
| 270 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | pinocchio::JointModelPrismaticUnaligned::JointDataDerived jdata = jmodel.createData(); |
| 271 | |||
| 272 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | run_tests(jmodel, jdata); |
| 273 | 20 | } | |
| 274 | }; | ||
| 275 | |||
| 276 | struct LieGroup_Jdifference | ||
| 277 | { | ||
| 278 | template<typename T> | ||
| 279 | 320 | void operator()(const T) const | |
| 280 | { | ||
| 281 | typedef typename T::ConfigVector_t ConfigVector_t; | ||
| 282 | typedef typename T::TangentVector_t TangentVector_t; | ||
| 283 | typedef typename T::JacobianMatrix_t JacobianMatrix_t; | ||
| 284 | typedef typename T::Scalar Scalar; | ||
| 285 | |||
| 286 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | T lg; |
| 287 |
6/12✓ Branch 2 taken 160 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 160 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 160 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 160 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 160 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 160 times.
✗ Branch 19 not taken.
|
320 | BOOST_TEST_MESSAGE(lg.name()); |
| 288 |
6/8✓ Branch 1 taken 320 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 320 times.
✓ Branch 4 taken 160 times.
✓ Branch 6 taken 320 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 320 times.
✓ Branch 9 taken 160 times.
|
1600 | ConfigVector_t q[2], q_dv[2]; |
| 289 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | q[0] = lg.random(); |
| 290 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | q[1] = lg.random(); |
| 291 | PINOCCHIO_COMPILER_DIAGNOSTIC_PUSH | ||
| 292 | PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_MAYBE_UNINITIALIZED | ||
| 293 |
3/6✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 160 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 160 times.
✗ Branch 8 not taken.
|
320 | TangentVector_t va, vb, dv; |
| 294 |
3/4✓ Branch 1 taken 320 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 320 times.
✓ Branch 4 taken 160 times.
|
960 | JacobianMatrix_t J[2]; |
| 295 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | dv.setZero(); |
| 296 | |||
| 297 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | lg.difference(q[0], q[1], va); |
| 298 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | lg.template dDifference<ARG0>(q[0], q[1], J[0]); |
| 299 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | lg.template dDifference<ARG1>(q[0], q[1], J[1]); |
| 300 | |||
| 301 | 320 | const Scalar eps = 1e-6; | |
| 302 |
2/2✓ Branch 0 taken 320 times.
✓ Branch 1 taken 160 times.
|
960 | for (int k = 0; k < 2; ++k) |
| 303 | { | ||
| 304 |
8/16✓ Branch 2 taken 320 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 320 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 320 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 320 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 320 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 320 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 320 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 320 times.
✗ Branch 25 not taken.
|
640 | BOOST_TEST_MESSAGE("Checking J" << k << '\n' << J[k]); |
| 305 |
1/2✓ Branch 1 taken 320 times.
✗ Branch 2 not taken.
|
640 | q_dv[0] = q[0]; |
| 306 |
1/2✓ Branch 1 taken 320 times.
✗ Branch 2 not taken.
|
640 | q_dv[1] = q[1]; |
| 307 | // Check J[k] | ||
| 308 |
2/2✓ Branch 1 taken 1000 times.
✓ Branch 2 taken 320 times.
|
2640 | for (int i = 0; i < dv.size(); ++i) |
| 309 | { | ||
| 310 |
1/2✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
|
2000 | dv[i] = eps; |
| 311 |
1/2✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
|
2000 | lg.integrate(q[k], dv, q_dv[k]); |
| 312 |
1/2✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
|
2000 | lg.difference(q_dv[0], q_dv[1], vb); |
| 313 | |||
| 314 | // vb - va ~ J[k] * dv | ||
| 315 |
2/4✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1000 times.
✗ Branch 5 not taken.
|
2000 | TangentVector_t J_dv = J[k].col(i); |
| 316 |
3/6✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1000 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1000 times.
✗ Branch 8 not taken.
|
2000 | TangentVector_t vb_va = (vb - va) / eps; |
| 317 |
13/26✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1000 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1000 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1000 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1000 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1000 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1000 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1000 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1000 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1000 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1000 times.
✗ Branch 38 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 1000 times.
|
2000 | EIGEN_VECTOR_IS_APPROX(vb_va, J_dv, 1e-2); |
| 318 |
1/2✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
|
2000 | dv[i] = 0; |
| 319 | } | ||
| 320 | PINOCCHIO_COMPILER_DIAGNOSTIC_POP | ||
| 321 | } | ||
| 322 | |||
| 323 |
2/4✓ Branch 1 taken 120 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 40 times.
✗ Branch 5 not taken.
|
320 | specificTests(lg); |
| 324 | 320 | } | |
| 325 | |||
| 326 | template<typename T> | ||
| 327 | 240 | void specificTests(const T) const | |
| 328 | { | ||
| 329 | 240 | } | |
| 330 | |||
| 331 | template<typename Scalar, int Options> | ||
| 332 | 20 | void specificTests(const SpecialEuclideanOperationTpl<3, Scalar, Options>) const | |
| 333 | { | ||
| 334 | |||
| 335 | 20 | const Scalar prec = Eigen::NumTraits<Scalar>::dummy_precision(); | |
| 336 | typedef SE3Tpl<Scalar> SE3; | ||
| 337 | typedef SpecialEuclideanOperationTpl<3, Scalar, Options> LG_t; | ||
| 338 | typedef typename LG_t::ConfigVector_t ConfigVector_t; | ||
| 339 | typedef typename LG_t::JacobianMatrix_t JacobianMatrix_t; | ||
| 340 | typedef typename LG_t::ConstQuaternionMap_t ConstQuaternionMap_t; | ||
| 341 | |||
| 342 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | LG_t lg; |
| 343 | |||
| 344 |
3/4✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 40 times.
✓ Branch 4 taken 20 times.
|
60 | ConfigVector_t q[2]; |
| 345 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | q[0] = lg.random(); |
| 346 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | q[1] = lg.random(); |
| 347 | |||
| 348 |
2/4✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 20 times.
✗ Branch 6 not taken.
|
20 | ConstQuaternionMap_t quat0(q[0].template tail<4>().data()), |
| 349 |
2/4✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 20 times.
✗ Branch 6 not taken.
|
20 | quat1(q[1].template tail<4>().data()); |
| 350 |
3/4✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 40 times.
✓ Branch 4 taken 20 times.
|
60 | JacobianMatrix_t J[2]; |
| 351 | |||
| 352 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | lg.template dDifference<ARG0>(q[0], q[1], J[0]); |
| 353 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | lg.template dDifference<ARG1>(q[0], q[1], J[1]); |
| 354 | |||
| 355 |
5/10✓ 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.
✓ Branch 13 taken 20 times.
✗ Branch 14 not taken.
|
20 | SE3 om0(typename SE3::Quaternion(q[0].template tail<4>()).matrix(), q[0].template head<3>()), |
| 356 |
5/10✓ 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.
✓ Branch 13 taken 20 times.
✗ Branch 14 not taken.
|
20 | om1(typename SE3::Quaternion(q[1].template tail<4>()).matrix(), q[1].template head<3>()), |
| 357 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | _1m2(om1.actInv(om0)); |
| 358 |
17/34✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 20 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 20 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 20 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 20 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 20 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 20 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 20 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 20 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 20 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 20 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 20 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 20 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 20 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 20 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 20 times.
✗ Branch 50 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 20 times.
|
20 | EIGEN_MATRIX_IS_APPROX(J[1] * _1m2.toActionMatrix(), -J[0], 1e-8); |
| 359 | |||
| 360 | // Test against SE3::Interpolate | ||
| 361 | 20 | const Scalar u = 0.3; | |
| 362 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | ConfigVector_t q_interp = lg.interpolate(q[0], q[1], u); |
| 363 |
2/4✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 20 times.
✗ Branch 6 not taken.
|
20 | ConstQuaternionMap_t quat_interp(q_interp.template tail<4>().data()); |
| 364 | |||
| 365 |
2/4✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
|
20 | SE3 M0(quat0, q[0].template head<3>()); |
| 366 |
2/4✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
|
20 | SE3 M1(quat1, q[1].template head<3>()); |
| 367 | |||
| 368 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | SE3 M_u = SE3::Interpolate(M0, M1, u); |
| 369 |
2/4✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
|
20 | SE3 M_interp(quat_interp, q_interp.template head<3>()); |
| 370 |
7/14✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 20 times.
✗ Branch 6 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.
✗ Branch 25 not taken.
✓ Branch 26 taken 20 times.
|
20 | BOOST_CHECK(M_u.isApprox(M_interp, prec)); |
| 371 | 20 | } | |
| 372 | |||
| 373 | template<typename Scalar, int Options> | ||
| 374 | 20 | void specificTests(const CartesianProductOperation< | |
| 375 | VectorSpaceOperationTpl<3, Scalar, Options>, | ||
| 376 | SpecialOrthogonalOperationTpl<3, Scalar, Options>>) const | ||
| 377 | { | ||
| 378 | typedef SE3Tpl<Scalar> SE3; | ||
| 379 | typedef CartesianProductOperation< | ||
| 380 | VectorSpaceOperationTpl<3, Scalar, Options>, | ||
| 381 | SpecialOrthogonalOperationTpl<3, Scalar, Options>> | ||
| 382 | LG_t; | ||
| 383 | typedef typename LG_t::ConfigVector_t ConfigVector_t; | ||
| 384 | typedef typename LG_t::JacobianMatrix_t JacobianMatrix_t; | ||
| 385 | |||
| 386 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | LG_t lg; |
| 387 | |||
| 388 |
3/4✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 40 times.
✓ Branch 4 taken 20 times.
|
60 | ConfigVector_t q[2]; |
| 389 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | q[0] = lg.random(); |
| 390 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | q[1] = lg.random(); |
| 391 |
3/4✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 40 times.
✓ Branch 4 taken 20 times.
|
60 | JacobianMatrix_t J[2]; |
| 392 | |||
| 393 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | lg.template dDifference<ARG0>(q[0], q[1], J[0]); |
| 394 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | lg.template dDifference<ARG1>(q[0], q[1], J[1]); |
| 395 | |||
| 396 |
3/6✓ 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.
|
20 | typename SE3::Matrix3 oR0(typename SE3::Quaternion(q[0].template tail<4>()).matrix()), |
| 397 |
3/6✓ 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.
|
20 | oR1(typename SE3::Quaternion(q[1].template tail<4>()).matrix()); |
| 398 |
2/4✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
|
20 | JacobianMatrix_t X(JacobianMatrix_t::Identity()); |
| 399 |
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.
|
20 | X.template bottomRightCorner<3, 3>() = oR1.transpose() * oR0; |
| 400 |
15/30✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 20 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 20 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 20 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 20 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 20 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 20 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 20 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 20 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 20 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 20 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 20 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 20 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 20 times.
✗ Branch 44 not taken.
✗ Branch 52 not taken.
✓ Branch 53 taken 20 times.
|
20 | EIGEN_MATRIX_IS_APPROX(J[1] * X, -J[0], 1e-8); |
| 401 | 20 | } | |
| 402 | }; | ||
| 403 | |||
| 404 | template<bool around_identity> | ||
| 405 | struct LieGroup_Jintegrate | ||
| 406 | { | ||
| 407 | template<typename T> | ||
| 408 | 336 | void operator()(const T) const | |
| 409 | { | ||
| 410 | typedef typename T::ConfigVector_t ConfigVector_t; | ||
| 411 | typedef typename T::TangentVector_t TangentVector_t; | ||
| 412 | typedef typename T::JacobianMatrix_t JacobianMatrix_t; | ||
| 413 | typedef typename T::Scalar Scalar; | ||
| 414 | |||
| 415 |
1/2✓ Branch 1 taken 168 times.
✗ Branch 2 not taken.
|
336 | T lg; |
| 416 |
1/2✓ Branch 1 taken 168 times.
✗ Branch 2 not taken.
|
336 | ConfigVector_t q = lg.random(); |
| 417 |
3/6✓ Branch 1 taken 168 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 168 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 168 times.
✗ Branch 8 not taken.
|
336 | TangentVector_t v, dq, dv; |
| 418 | if (around_identity) | ||
| 419 |
1/2✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
|
16 | v.setZero(); |
| 420 | else | ||
| 421 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | v.setRandom(); |
| 422 | |||
| 423 |
1/2✓ Branch 1 taken 168 times.
✗ Branch 2 not taken.
|
336 | dq.setZero(); |
| 424 |
1/2✓ Branch 1 taken 168 times.
✗ Branch 2 not taken.
|
336 | dv.setZero(); |
| 425 | |||
| 426 |
1/2✓ Branch 1 taken 168 times.
✗ Branch 2 not taken.
|
336 | ConfigVector_t q_v = lg.integrate(q, v); |
| 427 | |||
| 428 | PINOCCHIO_COMPILER_DIAGNOSTIC_PUSH | ||
| 429 | PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_MAYBE_UNINITIALIZED | ||
| 430 |
2/4✓ Branch 1 taken 168 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 168 times.
✗ Branch 5 not taken.
|
336 | JacobianMatrix_t Jq, Jv; |
| 431 |
1/2✓ Branch 1 taken 168 times.
✗ Branch 2 not taken.
|
336 | lg.dIntegrate_dq(q, v, Jq); |
| 432 |
1/2✓ Branch 1 taken 168 times.
✗ Branch 2 not taken.
|
336 | lg.dIntegrate_dv(q, v, Jv); |
| 433 | PINOCCHIO_COMPILER_DIAGNOSTIC_POP | ||
| 434 | |||
| 435 | 336 | const Scalar eps = 1e-6; | |
| 436 |
2/2✓ Branch 1 taken 525 times.
✓ Branch 2 taken 168 times.
|
1386 | for (int i = 0; i < v.size(); ++i) |
| 437 | { | ||
| 438 |
2/4✓ Branch 1 taken 525 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 525 times.
✗ Branch 5 not taken.
|
1050 | dq[i] = dv[i] = eps; |
| 439 |
1/2✓ Branch 1 taken 525 times.
✗ Branch 2 not taken.
|
1050 | ConfigVector_t q_dq = lg.integrate(q, dq); |
| 440 | |||
| 441 |
1/2✓ Branch 1 taken 525 times.
✗ Branch 2 not taken.
|
1050 | ConfigVector_t q_dq_v = lg.integrate(q_dq, v); |
| 442 |
2/4✓ Branch 1 taken 525 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 525 times.
✗ Branch 5 not taken.
|
1050 | TangentVector_t Jq_dq = Jq.col(i); |
| 443 | // q_dv_v - q_v ~ Jq dv | ||
| 444 |
3/6✓ Branch 1 taken 525 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 525 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 525 times.
✗ Branch 8 not taken.
|
1050 | TangentVector_t dI_dq = lg.difference(q_v, q_dq_v) / eps; |
| 445 |
13/26✓ Branch 1 taken 525 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 525 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 525 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 525 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 525 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 525 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 525 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 525 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 525 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 525 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 525 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 525 times.
✗ Branch 38 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 525 times.
|
1050 | EIGEN_VECTOR_IS_APPROX(dI_dq, Jq_dq, 1e-2); |
| 446 | |||
| 447 |
3/6✓ Branch 1 taken 525 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 525 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 525 times.
✗ Branch 8 not taken.
|
1050 | ConfigVector_t q_v_dv = lg.integrate(q, (v + dv).eval()); |
| 448 |
2/4✓ Branch 1 taken 525 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 525 times.
✗ Branch 5 not taken.
|
1050 | TangentVector_t Jv_dv = Jv.col(i); |
| 449 | // q_v_dv - q_v ~ Jv dv | ||
| 450 |
3/6✓ Branch 1 taken 525 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 525 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 525 times.
✗ Branch 8 not taken.
|
1050 | TangentVector_t dI_dv = lg.difference(q_v, q_v_dv) / eps; |
| 451 |
13/26✓ Branch 1 taken 525 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 525 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 525 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 525 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 525 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 525 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 525 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 525 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 525 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 525 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 525 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 525 times.
✗ Branch 38 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 525 times.
|
1050 | EIGEN_VECTOR_IS_APPROX(dI_dv, Jv_dv, 1e-2); |
| 452 | |||
| 453 |
2/4✓ Branch 1 taken 525 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 525 times.
✗ Branch 5 not taken.
|
1050 | dq[i] = dv[i] = 0; |
| 454 | } | ||
| 455 | 336 | } | |
| 456 | }; | ||
| 457 | |||
| 458 | struct LieGroup_JintegrateJdifference | ||
| 459 | { | ||
| 460 | template<typename T> | ||
| 461 | 320 | void operator()(const T) const | |
| 462 | { | ||
| 463 | typedef typename T::ConfigVector_t ConfigVector_t; | ||
| 464 | typedef typename T::TangentVector_t TangentVector_t; | ||
| 465 | typedef typename T::JacobianMatrix_t JacobianMatrix_t; | ||
| 466 | |||
| 467 | PINOCCHIO_COMPILER_DIAGNOSTIC_PUSH | ||
| 468 | PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_MAYBE_UNINITIALIZED | ||
| 469 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | T lg; |
| 470 |
6/12✓ Branch 2 taken 160 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 160 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 160 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 160 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 160 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 160 times.
✗ Branch 19 not taken.
|
320 | BOOST_TEST_MESSAGE(lg.name()); |
| 471 |
2/4✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 160 times.
✗ Branch 6 not taken.
|
320 | ConfigVector_t qa, qb(lg.nq()); |
| 472 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | qa = lg.random(); |
| 473 |
1/2✓ Branch 2 taken 160 times.
✗ Branch 3 not taken.
|
320 | TangentVector_t v(lg.nv()); |
| 474 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | v.setRandom(); |
| 475 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | lg.integrate(qa, v, qb); |
| 476 | |||
| 477 |
2/4✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 160 times.
✗ Branch 5 not taken.
|
320 | JacobianMatrix_t Jd_qb, Ji_v; |
| 478 | |||
| 479 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | lg.template dDifference<ARG1>(qa, qb, Jd_qb); |
| 480 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | lg.template dIntegrate<ARG1>(qa, v, Ji_v); |
| 481 | PINOCCHIO_COMPILER_DIAGNOSTIC_POP | ||
| 482 | |||
| 483 |
17/34✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 160 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 160 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 160 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 160 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 160 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 160 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 160 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 160 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 160 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 160 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 160 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 160 times.
✗ Branch 41 not taken.
✓ Branch 44 taken 160 times.
✗ Branch 45 not taken.
✓ Branch 47 taken 160 times.
✗ Branch 48 not taken.
✓ Branch 50 taken 160 times.
✗ Branch 51 not taken.
✗ Branch 63 not taken.
✓ Branch 64 taken 160 times.
|
320 | BOOST_CHECK_MESSAGE( |
| 484 | (Jd_qb * Ji_v).isIdentity(), "Jd_qb\n" | ||
| 485 | << Jd_qb << '\n' | ||
| 486 | << "* Ji_v\n" | ||
| 487 | << Ji_v << '\n' | ||
| 488 | << "!= Identity\n" | ||
| 489 | << Jd_qb * Ji_v << '\n'); | ||
| 490 | 320 | } | |
| 491 | }; | ||
| 492 | |||
| 493 | struct LieGroup_dIntegrateTransport | ||
| 494 | { | ||
| 495 | template<typename T> | ||
| 496 | 320 | void operator()(const T) const | |
| 497 | { | ||
| 498 | typedef typename T::ConfigVector_t ConfigVector_t; | ||
| 499 | typedef typename T::TangentVector_t TangentVector_t; | ||
| 500 | typedef typename T::JacobianMatrix_t JacobianMatrix_t; | ||
| 501 | |||
| 502 | PINOCCHIO_COMPILER_DIAGNOSTIC_PUSH | ||
| 503 | PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_MAYBE_UNINITIALIZED | ||
| 504 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | T lg; |
| 505 |
6/12✓ Branch 2 taken 160 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 160 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 160 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 160 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 160 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 160 times.
✗ Branch 19 not taken.
|
320 | BOOST_TEST_MESSAGE(lg.name()); |
| 506 |
2/4✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 160 times.
✗ Branch 6 not taken.
|
320 | ConfigVector_t qa, qb(lg.nq()); |
| 507 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | qa = lg.random(); |
| 508 |
4/8✓ Branch 2 taken 160 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 160 times.
✗ Branch 7 not taken.
✓ Branch 10 taken 160 times.
✗ Branch 11 not taken.
✓ Branch 14 taken 160 times.
✗ Branch 15 not taken.
|
320 | TangentVector_t v(lg.nv()), tvec_at_qb(lg.nv()), tvec_at_qa(lg.nv()), tvec_at_qa_r(lg.nv()); |
| 509 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | v.setRandom(); |
| 510 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | lg.integrate(qa, v, qb); |
| 511 | |||
| 512 | // transport random tangent vector from q1 to q0 | ||
| 513 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | tvec_at_qb.setRandom(); |
| 514 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | lg.dIntegrateTransport(qa, v, tvec_at_qb, tvec_at_qa, ARG0); |
| 515 | |||
| 516 | // test reverse direction | ||
| 517 |
2/4✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 160 times.
✗ Branch 5 not taken.
|
320 | TangentVector_t v_r = -v; // reverse path |
| 518 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | ConfigVector_t qa_r = lg.integrate(qb, v_r); |
| 519 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | lg.dIntegrateTransport(qa_r, v_r, tvec_at_qa, tvec_at_qa_r, ARG0); |
| 520 | |||
| 521 |
7/14✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 160 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 160 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 160 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 160 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 160 times.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 160 times.
|
320 | BOOST_CHECK_SMALL((qa - qa_r).norm(), 1e-6); // recover init point on manifold |
| 522 |
7/14✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 160 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 160 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 160 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 160 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 160 times.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 160 times.
|
320 | BOOST_CHECK_SMALL((tvec_at_qb - tvec_at_qa_r).norm(), 1e-6); |
| 523 | |||
| 524 | // same test for matrix | ||
| 525 |
1/2✓ Branch 3 taken 160 times.
✗ Branch 4 not taken.
|
320 | JacobianMatrix_t J_at_qa(lg.nv(), lg.nv()); |
| 526 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | J_at_qa.setRandom(); |
| 527 |
1/2✓ Branch 3 taken 160 times.
✗ Branch 4 not taken.
|
320 | JacobianMatrix_t J_at_qb(lg.nv(), lg.nv()); |
| 528 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | lg.dIntegrateTransport(qa, v, J_at_qa, J_at_qb, ARG0); |
| 529 |
1/2✓ Branch 3 taken 160 times.
✗ Branch 4 not taken.
|
320 | JacobianMatrix_t J_at_qa_r(lg.nv(), lg.nv()); |
| 530 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | lg.dIntegrateTransport(qa_r, v_r, J_at_qb, J_at_qa_r, ARG0); |
| 531 | |||
| 532 |
7/14✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 160 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 160 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 160 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 160 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 160 times.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 160 times.
|
320 | BOOST_CHECK_SMALL((J_at_qa - J_at_qa_r).norm(), 1e-6); |
| 533 | 320 | } | |
| 534 | }; | ||
| 535 | |||
| 536 | struct LieGroup_JintegrateCoeffWise | ||
| 537 | { | ||
| 538 | template<typename T> | ||
| 539 | 320 | void operator()(const T) const | |
| 540 | { | ||
| 541 | typedef typename T::ConfigVector_t ConfigVector_t; | ||
| 542 | typedef typename T::TangentVector_t TangentVector_t; | ||
| 543 | typedef typename T::Scalar Scalar; | ||
| 544 | |||
| 545 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | T lg; |
| 546 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | ConfigVector_t q = lg.random(); |
| 547 |
2/4✓ Branch 2 taken 160 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 160 times.
✗ Branch 6 not taken.
|
320 | TangentVector_t dv(TangentVector_t::Zero(lg.nv())); |
| 548 | |||
| 549 |
6/12✓ Branch 2 taken 160 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 160 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 160 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 160 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 160 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 160 times.
✗ Branch 19 not taken.
|
320 | BOOST_TEST_MESSAGE(lg.name()); |
| 550 | typedef Eigen::Matrix<Scalar, T::NQ, T::NV> JacobianCoeffs; | ||
| 551 |
2/4✓ Branch 3 taken 160 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 160 times.
✗ Branch 7 not taken.
|
320 | JacobianCoeffs Jintegrate(JacobianCoeffs::Zero(lg.nq(), lg.nv())); |
| 552 |
1/2✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
|
320 | lg.integrateCoeffWiseJacobian(q, Jintegrate); |
| 553 |
2/4✓ Branch 3 taken 160 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 160 times.
✗ Branch 7 not taken.
|
320 | JacobianCoeffs Jintegrate_fd(JacobianCoeffs::Zero(lg.nq(), lg.nv())); |
| 554 | |||
| 555 | 320 | const Scalar eps = 1e-8; | |
| 556 |
2/2✓ Branch 1 taken 500 times.
✓ Branch 2 taken 160 times.
|
1320 | for (int i = 0; i < lg.nv(); ++i) |
| 557 | { | ||
| 558 |
1/2✓ Branch 1 taken 500 times.
✗ Branch 2 not taken.
|
1000 | dv[i] = eps; |
| 559 |
2/4✓ Branch 2 taken 500 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 500 times.
✗ Branch 6 not taken.
|
1000 | ConfigVector_t q_next(ConfigVector_t::Zero(lg.nq())); |
| 560 |
1/2✓ Branch 1 taken 500 times.
✗ Branch 2 not taken.
|
1000 | lg.integrate(q, dv, q_next); |
| 561 |
4/8✓ Branch 1 taken 500 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 500 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 500 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 500 times.
✗ Branch 11 not taken.
|
1000 | Jintegrate_fd.col(i) = (q_next - q) / eps; |
| 562 | |||
| 563 |
1/2✓ Branch 1 taken 500 times.
✗ Branch 2 not taken.
|
1000 | dv[i] = 0; |
| 564 | } | ||
| 565 | |||
| 566 |
11/22✓ Branch 1 taken 160 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 160 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 160 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 160 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 160 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 160 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 160 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 160 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 160 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 160 times.
✗ Branch 32 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 160 times.
|
320 | EIGEN_MATRIX_IS_APPROX(Jintegrate, Jintegrate_fd, sqrt(eps)); |
| 567 | 320 | } | |
| 568 | }; | ||
| 569 | |||
| 570 | BOOST_AUTO_TEST_SUITE(BOOST_TEST_MODULE) | ||
| 571 | |||
| 572 |
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) |
| 573 | { | ||
| 574 | typedef boost::variant< | ||
| 575 | JointModelRX, JointModelRY, JointModelRZ, JointModelRevoluteUnaligned, JointModelSpherical, | ||
| 576 | JointModelSphericalZYX, JointModelPX, JointModelPY, JointModelPZ, JointModelPrismaticUnaligned, | ||
| 577 | JointModelFreeFlyer, JointModelPlanar, JointModelTranslation, JointModelRUBX, JointModelRUBY, | ||
| 578 | JointModelRUBZ> | ||
| 579 | Variant; | ||
| 580 |
2/2✓ Branch 0 taken 20 times.
✓ Branch 1 taken 1 times.
|
42 | for (int i = 0; i < 20; ++i) |
| 581 | 40 | boost::mpl::for_each<Variant::types>(TestJoint()); | |
| 582 | |||
| 583 | // FIXME JointModelComposite does not work. | ||
| 584 | // boost::mpl::for_each<JointModelVariant::types>(TestJoint()); | ||
| 585 | 2 | } | |
| 586 | |||
| 587 |
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(Jdifference) |
| 588 | { | ||
| 589 | typedef double Scalar; | ||
| 590 | enum | ||
| 591 | { | ||
| 592 | Options = 0 | ||
| 593 | }; | ||
| 594 | |||
| 595 | typedef boost::mpl::vector< | ||
| 596 | VectorSpaceOperationTpl<1, Scalar, Options>, VectorSpaceOperationTpl<2, Scalar, Options>, | ||
| 597 | SpecialOrthogonalOperationTpl<2, Scalar, Options>, | ||
| 598 | SpecialOrthogonalOperationTpl<3, Scalar, Options>, | ||
| 599 | SpecialEuclideanOperationTpl<2, Scalar, Options>, | ||
| 600 | SpecialEuclideanOperationTpl<3, Scalar, Options>, | ||
| 601 | CartesianProductOperation< | ||
| 602 | VectorSpaceOperationTpl<2, Scalar, Options>, | ||
| 603 | SpecialOrthogonalOperationTpl<2, Scalar, Options>>, | ||
| 604 | CartesianProductOperation< | ||
| 605 | VectorSpaceOperationTpl<3, Scalar, Options>, | ||
| 606 | SpecialOrthogonalOperationTpl<3, Scalar, Options>>> | ||
| 607 | Types; | ||
| 608 |
2/2✓ Branch 0 taken 20 times.
✓ Branch 1 taken 1 times.
|
42 | for (int i = 0; i < 20; ++i) |
| 609 | 40 | boost::mpl::for_each<Types>(LieGroup_Jdifference()); | |
| 610 | 2 | } | |
| 611 | |||
| 612 |
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(dIntegrateTransport) |
| 613 | { | ||
| 614 | typedef double Scalar; | ||
| 615 | enum | ||
| 616 | { | ||
| 617 | Options = 0 | ||
| 618 | }; | ||
| 619 | |||
| 620 | typedef boost::mpl::vector< | ||
| 621 | VectorSpaceOperationTpl<1, Scalar, Options>, VectorSpaceOperationTpl<2, Scalar, Options>, | ||
| 622 | SpecialOrthogonalOperationTpl<2, Scalar, Options>, | ||
| 623 | SpecialOrthogonalOperationTpl<3, Scalar, Options>, | ||
| 624 | SpecialEuclideanOperationTpl<2, Scalar, Options>, | ||
| 625 | SpecialEuclideanOperationTpl<3, Scalar, Options>, | ||
| 626 | CartesianProductOperation< | ||
| 627 | VectorSpaceOperationTpl<2, Scalar, Options>, | ||
| 628 | SpecialOrthogonalOperationTpl<2, Scalar, Options>>, | ||
| 629 | CartesianProductOperation< | ||
| 630 | VectorSpaceOperationTpl<3, Scalar, Options>, | ||
| 631 | SpecialOrthogonalOperationTpl<3, Scalar, Options>>> | ||
| 632 | Types; | ||
| 633 |
2/2✓ Branch 0 taken 20 times.
✓ Branch 1 taken 1 times.
|
42 | for (int i = 0; i < 20; ++i) |
| 634 | 40 | boost::mpl::for_each<Types>(LieGroup_dIntegrateTransport()); | |
| 635 | 2 | } | |
| 636 | |||
| 637 |
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(Jintegrate) |
| 638 | { | ||
| 639 | typedef double Scalar; | ||
| 640 | enum | ||
| 641 | { | ||
| 642 | Options = 0 | ||
| 643 | }; | ||
| 644 | |||
| 645 | typedef boost::mpl::vector< | ||
| 646 | VectorSpaceOperationTpl<1, Scalar, Options>, VectorSpaceOperationTpl<2, Scalar, Options>, | ||
| 647 | SpecialOrthogonalOperationTpl<2, Scalar, Options>, | ||
| 648 | SpecialOrthogonalOperationTpl<3, Scalar, Options>, | ||
| 649 | SpecialEuclideanOperationTpl<2, Scalar, Options>, | ||
| 650 | SpecialEuclideanOperationTpl<3, Scalar, Options>, | ||
| 651 | CartesianProductOperation< | ||
| 652 | VectorSpaceOperationTpl<2, Scalar, Options>, | ||
| 653 | SpecialOrthogonalOperationTpl<2, Scalar, Options>>, | ||
| 654 | CartesianProductOperation< | ||
| 655 | VectorSpaceOperationTpl<3, Scalar, Options>, | ||
| 656 | SpecialOrthogonalOperationTpl<3, Scalar, Options>>> | ||
| 657 | Types; | ||
| 658 |
2/2✓ Branch 0 taken 20 times.
✓ Branch 1 taken 1 times.
|
42 | for (int i = 0; i < 20; ++i) |
| 659 | 40 | boost::mpl::for_each<Types>(LieGroup_Jintegrate<false>()); | |
| 660 | |||
| 661 | // Around identity | ||
| 662 | 2 | boost::mpl::for_each<Types>(LieGroup_Jintegrate<true>()); | |
| 663 | 2 | } | |
| 664 | |||
| 665 |
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(Jintegrate_Jdifference) |
| 666 | { | ||
| 667 | typedef double Scalar; | ||
| 668 | enum | ||
| 669 | { | ||
| 670 | Options = 0 | ||
| 671 | }; | ||
| 672 | |||
| 673 | typedef boost::mpl::vector< | ||
| 674 | VectorSpaceOperationTpl<1, Scalar, Options>, VectorSpaceOperationTpl<2, Scalar, Options>, | ||
| 675 | SpecialOrthogonalOperationTpl<2, Scalar, Options>, | ||
| 676 | SpecialOrthogonalOperationTpl<3, Scalar, Options>, | ||
| 677 | SpecialEuclideanOperationTpl<2, Scalar, Options>, | ||
| 678 | SpecialEuclideanOperationTpl<3, Scalar, Options>, | ||
| 679 | CartesianProductOperation< | ||
| 680 | VectorSpaceOperationTpl<2, Scalar, Options>, | ||
| 681 | SpecialOrthogonalOperationTpl<2, Scalar, Options>>, | ||
| 682 | CartesianProductOperation< | ||
| 683 | VectorSpaceOperationTpl<3, Scalar, Options>, | ||
| 684 | SpecialOrthogonalOperationTpl<3, Scalar, Options>>> | ||
| 685 | Types; | ||
| 686 |
2/2✓ Branch 0 taken 20 times.
✓ Branch 1 taken 1 times.
|
42 | for (int i = 0; i < 20; ++i) |
| 687 | 40 | boost::mpl::for_each<Types>(LieGroup_JintegrateJdifference()); | |
| 688 | 2 | } | |
| 689 | |||
| 690 |
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(JintegrateCoeffWise) |
| 691 | { | ||
| 692 | typedef double Scalar; | ||
| 693 | enum | ||
| 694 | { | ||
| 695 | Options = 0 | ||
| 696 | }; | ||
| 697 | |||
| 698 | typedef boost::mpl::vector< | ||
| 699 | VectorSpaceOperationTpl<1, Scalar, Options>, VectorSpaceOperationTpl<2, Scalar, Options>, | ||
| 700 | SpecialOrthogonalOperationTpl<2, Scalar, Options>, | ||
| 701 | SpecialOrthogonalOperationTpl<3, Scalar, Options>, | ||
| 702 | SpecialEuclideanOperationTpl<2, Scalar, Options>, | ||
| 703 | SpecialEuclideanOperationTpl<3, Scalar, Options>, | ||
| 704 | CartesianProductOperation< | ||
| 705 | VectorSpaceOperationTpl<2, Scalar, Options>, | ||
| 706 | SpecialOrthogonalOperationTpl<2, Scalar, Options>>, | ||
| 707 | CartesianProductOperation< | ||
| 708 | VectorSpaceOperationTpl<3, Scalar, Options>, | ||
| 709 | SpecialOrthogonalOperationTpl<3, Scalar, Options>>> | ||
| 710 | Types; | ||
| 711 |
2/2✓ Branch 0 taken 20 times.
✓ Branch 1 taken 1 times.
|
42 | for (int i = 0; i < 20; ++i) |
| 712 | 40 | boost::mpl::for_each<Types>(LieGroup_JintegrateCoeffWise()); | |
| 713 | |||
| 714 | { | ||
| 715 | typedef SpecialEuclideanOperationTpl<3, Scalar, Options> LieGroup; | ||
| 716 | typedef LieGroup::ConfigVector_t ConfigVector_t; | ||
| 717 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | LieGroup lg; |
| 718 | |||
| 719 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ConfigVector_t q = lg.random(); |
| 720 | // TangentVector_t dv(TangentVector_t::Zero(lg.nv())); | ||
| 721 | |||
| 722 | typedef Eigen::Matrix<Scalar, LieGroup::NQ, LieGroup::NV> JacobianCoeffs; | ||
| 723 |
2/4✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
|
2 | JacobianCoeffs Jintegrate(JacobianCoeffs::Zero(lg.nq(), lg.nv())); |
| 724 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | lg.integrateCoeffWiseJacobian(q, Jintegrate); |
| 725 | } | ||
| 726 | 2 | } | |
| 727 | |||
| 728 |
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_vector_space) |
| 729 | { | ||
| 730 | typedef VectorSpaceOperationTpl<3, double> VSO_t; | ||
| 731 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | VSO_t::ConfigVector_t q, |
| 732 |
2/4✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
2 | lo(VSO_t::ConfigVector_t::Constant(-std::numeric_limits<double>::infinity())), |
| 733 | // lo(VSO_t::ConfigVector_t::Constant( 0)), | ||
| 734 | // up(VSO_t::ConfigVector_t::Constant( std::numeric_limits<double>::infinity())); | ||
| 735 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | up(VSO_t::ConfigVector_t::Constant(0)); |
| 736 | |||
| 737 | 2 | bool error = false; | |
| 738 | try | ||
| 739 | { | ||
| 740 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
2 | VSO_t().randomConfiguration(lo, up, q); |
| 741 | } | ||
| 742 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
2 | catch (const std::runtime_error &) |
| 743 | { | ||
| 744 | 2 | error = true; | |
| 745 | 2 | } | |
| 746 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
|
2 | BOOST_CHECK_MESSAGE(error, "Random configuration between infinite bounds should return an error"); |
| 747 | 2 | } | |
| 748 | |||
| 749 |
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_size) |
| 750 | { | ||
| 751 | // R^1: neutral = [0] | ||
| 752 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | VectorSpaceOperationTpl<1, double> vs1; |
| 753 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Eigen::VectorXd neutral; |
| 754 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.resize(1); |
| 755 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.setZero(); |
| 756 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(vs1.nq() == 1); |
| 757 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(vs1.nv() == 1); |
| 758 |
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 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
|
2 | BOOST_CHECK(vs1.name() == "R^1"); |
| 759 |
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 28 not taken.
✓ Branch 29 taken 1 times.
|
2 | BOOST_CHECK(vs1.neutral() == neutral); |
| 760 | // R^2: neutral = [0, 0] | ||
| 761 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | VectorSpaceOperationTpl<2, double> vs2; |
| 762 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.resize(2); |
| 763 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.setZero(); |
| 764 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(vs2.nq() == 2); |
| 765 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(vs2.nv() == 2); |
| 766 |
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 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
|
2 | BOOST_CHECK(vs2.name() == "R^2"); |
| 767 |
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 28 not taken.
✓ Branch 29 taken 1 times.
|
2 | BOOST_CHECK(vs2.neutral() == neutral); |
| 768 | // R^3: neutral = [0, 0, 0] | ||
| 769 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | VectorSpaceOperationTpl<3, double> vs3; |
| 770 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.resize(3); |
| 771 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.setZero(); |
| 772 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(vs3.nq() == 3); |
| 773 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(vs3.nv() == 3); |
| 774 |
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 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
|
2 | BOOST_CHECK(vs3.name() == "R^3"); |
| 775 |
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 28 not taken.
✓ Branch 29 taken 1 times.
|
2 | BOOST_CHECK(vs3.neutral() == neutral); |
| 776 | // SO(2): neutral = [1, 0] | ||
| 777 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | SpecialOrthogonalOperationTpl<2, double> so2; |
| 778 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.resize(2); |
| 779 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral[0] = 1; |
| 780 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral[1] = 0; |
| 781 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(so2.nq() == 2); |
| 782 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(so2.nv() == 1); |
| 783 |
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 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
|
2 | BOOST_CHECK(so2.name() == "SO(2)"); |
| 784 |
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 28 not taken.
✓ Branch 29 taken 1 times.
|
2 | BOOST_CHECK(so2.neutral() == neutral); |
| 785 | // SO(3): neutral = [0, 0, 0, 1] | ||
| 786 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | SpecialOrthogonalOperationTpl<3, double> so3; |
| 787 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.resize(4); |
| 788 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.setZero(); |
| 789 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral[3] = 1; |
| 790 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(so3.nq() == 4); |
| 791 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(so3.nv() == 3); |
| 792 |
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 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
|
2 | BOOST_CHECK(so3.name() == "SO(3)"); |
| 793 |
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 28 not taken.
✓ Branch 29 taken 1 times.
|
2 | BOOST_CHECK(so3.neutral() == neutral); |
| 794 | // SE(2): neutral = [0, 0, 1, 0] | ||
| 795 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | SpecialEuclideanOperationTpl<2, double> se2; |
| 796 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.resize(4); |
| 797 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.setZero(); |
| 798 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral[2] = 1; |
| 799 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(se2.nq() == 4); |
| 800 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(se2.nv() == 3); |
| 801 |
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 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
|
2 | BOOST_CHECK(se2.name() == "SE(2)"); |
| 802 |
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 28 not taken.
✓ Branch 29 taken 1 times.
|
2 | BOOST_CHECK(se2.neutral() == neutral); |
| 803 | // SE(3): neutral = [0, 0, 0, 0, 0, 0, 1] | ||
| 804 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | SpecialEuclideanOperationTpl<3, double> se3; |
| 805 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.resize(7); |
| 806 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.setZero(); |
| 807 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral[6] = 1; |
| 808 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(se3.nq() == 7); |
| 809 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(se3.nv() == 6); |
| 810 |
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 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
|
2 | BOOST_CHECK(se3.name() == "SE(3)"); |
| 811 |
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 28 not taken.
✓ Branch 29 taken 1 times.
|
2 | BOOST_CHECK(se3.neutral() == neutral); |
| 812 | // R^2 x SO(2): neutral = [0, 0, 1, 0] | ||
| 813 | CartesianProductOperation< | ||
| 814 | VectorSpaceOperationTpl<2, double>, SpecialOrthogonalOperationTpl<2, double>> | ||
| 815 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | r2xso2; |
| 816 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.resize(4); |
| 817 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.setZero(); |
| 818 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral[2] = 1; |
| 819 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(r2xso2.nq() == 4); |
| 820 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(r2xso2.nv() == 3); |
| 821 |
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 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
|
2 | BOOST_CHECK(r2xso2.name() == "R^2*SO(2)"); |
| 822 |
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 28 not taken.
✓ Branch 29 taken 1 times.
|
2 | BOOST_CHECK(r2xso2.neutral() == neutral); |
| 823 | // R^3 x SO(3): neutral = [0, 0, 0, 0, 0, 0, 1] | ||
| 824 | CartesianProductOperation< | ||
| 825 | VectorSpaceOperationTpl<3, double>, SpecialOrthogonalOperationTpl<3, double>> | ||
| 826 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | r3xso3; |
| 827 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.resize(7); |
| 828 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral.setZero(); |
| 829 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | neutral[6] = 1; |
| 830 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(r3xso3.nq() == 7); |
| 831 |
6/12✓ 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 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(r3xso3.nv() == 6); |
| 832 |
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 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
|
2 | BOOST_CHECK(r3xso3.name() == "R^3*SO(3)"); |
| 833 |
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 28 not taken.
✓ Branch 29 taken 1 times.
|
2 | BOOST_CHECK(r3xso3.neutral() == neutral); |
| 834 | 2 | } | |
| 835 | |||
| 836 |
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_dim_computation) |
| 837 | { | ||
| 838 | 2 | int dim = eval_set_dim<1, 1>::value; | |
| 839 |
5/10✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 1 times.
|
2 | BOOST_CHECK(dim == 2); |
| 840 | 2 | dim = eval_set_dim<Eigen::Dynamic, 1>::value; | |
| 841 |
5/10✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 1 times.
|
2 | BOOST_CHECK(dim == Eigen::Dynamic); |
| 842 | 2 | dim = eval_set_dim<1, Eigen::Dynamic>::value; | |
| 843 |
5/10✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 1 times.
|
2 | BOOST_CHECK(dim == Eigen::Dynamic); |
| 844 | 2 | } | |
| 845 | |||
| 846 |
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(small_distance_test) |
| 847 | { | ||
| 848 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | SpecialOrthogonalOperationTpl<3, double> so3; |
| 849 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | Eigen::VectorXd q1(so3.nq()); |
| 850 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | Eigen::VectorXd q2(so3.nq()); |
| 851 |
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 | q1 << 0, 0, -0.1953711450011105244, 0.9807293794421349169; |
| 852 |
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 | q2 << 0, 0, -0.19537114500111049664, 0.98072937944213492244; |
| 853 | |||
| 854 |
7/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
|
2 | BOOST_CHECK_MESSAGE(so3.distance(q1, q2) > 0., "SO3 small distance - wrong results"); |
| 855 | 2 | } | |
| 856 | |||
| 857 | template<typename LieGroupCollection> | ||
| 858 | struct TestLieGroupVariantVisitor | ||
| 859 | { | ||
| 860 | |||
| 861 | typedef LieGroupGenericTpl<LieGroupCollection> LieGroupGeneric; | ||
| 862 | typedef typename LieGroupGeneric::ConfigVector_t ConfigVector_t; | ||
| 863 | typedef typename LieGroupGeneric::TangentVector_t TangentVector_t; | ||
| 864 | |||
| 865 | template<typename Derived> | ||
| 866 | 16 | void operator()(const LieGroupBase<Derived> & lg) const | |
| 867 | { | ||
| 868 |
1/2✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
|
16 | LieGroupGenericTpl<LieGroupCollection> lg_generic(lg.derived()); |
| 869 |
1/2✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
|
16 | test(lg, lg_generic); |
| 870 | 16 | } | |
| 871 | |||
| 872 | template<typename Derived> | ||
| 873 | static void | ||
| 874 | 16 | test(const LieGroupBase<Derived> & lg, const LieGroupGenericTpl<LieGroupCollection> & lg_generic) | |
| 875 | { | ||
| 876 |
12/21✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 8 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 8 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 3 times.
✓ Branch 15 taken 5 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 3 times.
✓ Branch 18 taken 5 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 3 times.
✓ Branch 21 taken 5 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 3 times.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 5 times.
✗ Branch 28 not taken.
✓ Branch 29 taken 3 times.
|
16 | BOOST_CHECK(lg.nq() == nq(lg_generic)); |
| 877 |
12/21✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 8 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 8 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✓ Branch 15 taken 7 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 1 times.
✓ Branch 18 taken 7 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✓ Branch 21 taken 7 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 7 times.
✗ Branch 28 not taken.
✓ Branch 29 taken 1 times.
|
16 | BOOST_CHECK(lg.nv() == nv(lg_generic)); |
| 878 | |||
| 879 |
8/16✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 8 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 8 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 8 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 8 times.
✗ Branch 18 not taken.
✓ Branch 21 taken 8 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 8 times.
✗ Branch 25 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 8 times.
|
16 | BOOST_CHECK(lg.name() == name(lg_generic)); |
| 880 | |||
| 881 |
10/19✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 8 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 8 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 8 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 8 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 8 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 8 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 8 times.
✗ Branch 27 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 7 times.
✓ Branch 34 taken 1 times.
|
16 | BOOST_CHECK(lg.neutral() == neutral(lg_generic)); |
| 882 | |||
| 883 | typedef typename LieGroupGeneric::ConfigVector_t ConfigVectorGeneric; | ||
| 884 | typedef typename LieGroupGeneric::TangentVector_t TangentVectorGeneric; | ||
| 885 | |||
| 886 |
2/4✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
|
16 | ConfigVector_t q0 = lg.random(); |
| 887 |
5/8✓ Branch 1 taken 1 times.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✓ Branch 5 taken 7 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
|
16 | TangentVector_t v = TangentVector_t::Random(lg.nv()); |
| 888 |
3/5✓ Branch 1 taken 3 times.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
|
16 | ConfigVector_t qout_ref(lg.nq()); |
| 889 |
1/2✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
|
16 | lg.integrate(q0, v, qout_ref); |
| 890 | |||
| 891 |
3/5✓ Branch 1 taken 3 times.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
|
16 | ConfigVectorGeneric qout(lg.nq()); |
| 892 |
3/6✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 8 times.
✗ Branch 8 not taken.
|
16 | integrate(lg_generic, ConfigVectorGeneric(q0), TangentVectorGeneric(v), qout); |
| 893 |
7/14✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 8 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 8 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 8 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 8 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 8 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 8 times.
|
16 | BOOST_CHECK(qout.isApprox(qout_ref)); |
| 894 | |||
| 895 |
2/4✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
|
16 | ConfigVector_t q1(nq(lg_generic)); |
| 896 |
1/2✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
|
16 | random(lg_generic, q1); |
| 897 |
1/2✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
|
16 | difference(lg_generic, q0, q1, v); |
| 898 |
7/14✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 8 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 8 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 8 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 8 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 8 times.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 8 times.
|
16 | BOOST_CHECK_EQUAL(lg.distance(q0, q1), distance(lg_generic, q0, q1)); |
| 899 | |||
| 900 |
2/4✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
|
16 | ConfigVector_t q2(nq(lg_generic)); |
| 901 |
1/2✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
|
16 | random(lg_generic, q2); |
| 902 |
1/2✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
|
16 | normalize(lg_generic, q2); |
| 903 |
7/14✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 8 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 8 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 8 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 8 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 8 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 8 times.
|
16 | BOOST_CHECK(isNormalized(lg_generic, q2)); |
| 904 | 16 | } | |
| 905 | }; | ||
| 906 | |||
| 907 |
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_liegroup_variant) |
| 908 | { | ||
| 909 | 2 | boost::mpl::for_each<LieGroupCollectionDefault::LieGroupVariant::types>( | |
| 910 | TestLieGroupVariantVisitor<LieGroupCollectionDefault>()); | ||
| 911 | 2 | } | |
| 912 | |||
| 913 | template<typename Lg1, typename Lg2> | ||
| 914 | 1 | void test_liegroup_variant_equal(Lg1 lg1, Lg2 lg2) | |
| 915 | { | ||
| 916 | typedef LieGroupGenericTpl<LieGroupCollectionDefault> LieGroupGeneric; | ||
| 917 |
5/10✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
|
1 | BOOST_CHECK_EQUAL(LieGroupGeneric(lg1), LieGroupGeneric(lg2)); |
| 918 | 1 | } | |
| 919 | |||
| 920 | template<typename Lg1, typename Lg2> | ||
| 921 | 1 | void test_liegroup_variant_not_equal(Lg1 lg1, Lg2 lg2) | |
| 922 | { | ||
| 923 | typedef LieGroupGenericTpl<LieGroupCollectionDefault> LieGroupGeneric; | ||
| 924 |
5/10✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
|
1 | BOOST_CHECK_PREDICATE( |
| 925 | std::not_equal_to<LieGroupGeneric>(), (LieGroupGeneric(lg1))(LieGroupGeneric(lg2))); | ||
| 926 | 1 | } | |
| 927 | |||
| 928 |
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_liegroup_variant_comparison) |
| 929 | { | ||
| 930 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_liegroup_variant_equal( |
| 931 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | VectorSpaceOperationTpl<1, double>(), VectorSpaceOperationTpl<Eigen::Dynamic, double>(1)); |
| 932 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_liegroup_variant_not_equal( |
| 933 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | VectorSpaceOperationTpl<1, double>(), VectorSpaceOperationTpl<Eigen::Dynamic, double>(2)); |
| 934 | 2 | } | |
| 935 | |||
| 936 | BOOST_AUTO_TEST_SUITE_END() | ||
| 937 |