Directory: | ./ |
---|---|
File: | include/pinocchio/algorithm/joint-configuration.hxx |
Date: | 2025-02-12 21:03:38 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 167 | 167 | 100.0% |
Branches: | 128 | 1132 | 11.3% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | // | ||
2 | // Copyright (c) 2016-2020 CNRS INRIA | ||
3 | // | ||
4 | |||
5 | #ifndef __pinocchio_algorithm_joint_configuration_hxx__ | ||
6 | #define __pinocchio_algorithm_joint_configuration_hxx__ | ||
7 | |||
8 | #include "pinocchio/multibody/visitor.hpp" | ||
9 | #include "pinocchio/multibody/liegroup/liegroup-algo.hpp" | ||
10 | |||
11 | /* --- Details -------------------------------------------------------------------- */ | ||
12 | namespace pinocchio | ||
13 | { | ||
14 | |||
15 | // --------------- API with return value as argument ---------------------- // | ||
16 | |||
17 | template< | ||
18 | typename LieGroup_t, | ||
19 | typename Scalar, | ||
20 | int Options, | ||
21 | template<typename, int> class JointCollectionTpl, | ||
22 | typename ConfigVectorType, | ||
23 | typename TangentVectorType, | ||
24 | typename ReturnType> | ||
25 | 4293 | void integrate( | |
26 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
27 | const Eigen::MatrixBase<ConfigVectorType> & q, | ||
28 | const Eigen::MatrixBase<TangentVectorType> & v, | ||
29 | const Eigen::MatrixBase<ReturnType> & qout) | ||
30 | { | ||
31 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 4058 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
4293 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
32 | q.size(), model.nq, "The configuration vector is not of the right size"); | ||
33 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 4058 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
4293 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
34 | v.size(), model.nv, "The joint velocity vector is not of the right size"); | ||
35 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 4058 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
4293 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
36 | qout.size(), model.nq, "The output argument is not of the right size"); | ||
37 | |||
38 | typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model; | ||
39 | typedef typename Model::JointIndex JointIndex; | ||
40 | 4293 | ReturnType & res = PINOCCHIO_EIGEN_CONST_CAST(ReturnType, qout); | |
41 | |||
42 | typedef IntegrateStep<LieGroup_t, ConfigVectorType, TangentVectorType, ReturnType> Algo; | ||
43 |
1/2✓ Branch 3 taken 4058 times.
✗ Branch 4 not taken.
|
4293 | typename Algo::ArgsType args(q.derived(), v.derived(), res); |
44 |
2/2✓ Branch 0 taken 75275 times.
✓ Branch 1 taken 4058 times.
|
85913 | for (JointIndex i = 1; i < (JointIndex)model.njoints; ++i) |
45 | { | ||
46 |
2/4✓ Branch 1 taken 75275 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 75275 times.
✗ Branch 6 not taken.
|
81620 | Algo::run(model.joints[i], args); |
47 | } | ||
48 | 4293 | } | |
49 | |||
50 | template< | ||
51 | typename LieGroup_t, | ||
52 | typename Scalar, | ||
53 | int Options, | ||
54 | template<typename, int> class JointCollectionTpl, | ||
55 | typename ConfigVectorIn1, | ||
56 | typename ConfigVectorIn2, | ||
57 | typename ReturnType> | ||
58 | 6 | void interpolate( | |
59 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
60 | const Eigen::MatrixBase<ConfigVectorIn1> & q0, | ||
61 | const Eigen::MatrixBase<ConfigVectorIn2> & q1, | ||
62 | const Scalar & u, | ||
63 | const Eigen::MatrixBase<ReturnType> & qout) | ||
64 | { | ||
65 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 6 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
6 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
66 | q0.size(), model.nq, "The first configuration vector is not of the right size"); | ||
67 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 6 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
6 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
68 | q1.size(), model.nq, "The second configuration vector is not of the right size"); | ||
69 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 6 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
6 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
70 | qout.size(), model.nq, "The output argument is not of the right size"); | ||
71 | |||
72 | typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model; | ||
73 | typedef typename Model::JointIndex JointIndex; | ||
74 | 6 | ReturnType & res = PINOCCHIO_EIGEN_CONST_CAST(ReturnType, qout); | |
75 | |||
76 | typedef InterpolateStep<LieGroup_t, ConfigVectorIn1, ConfigVectorIn2, Scalar, ReturnType> Algo; | ||
77 |
2/2✓ Branch 0 taken 105 times.
✓ Branch 1 taken 6 times.
|
111 | for (JointIndex i = 1; i < (JointIndex)model.njoints; ++i) |
78 | { | ||
79 |
1/2✓ Branch 1 taken 105 times.
✗ Branch 2 not taken.
|
105 | Algo::run( |
80 | 210 | model.joints[i], typename Algo::ArgsType(q0.derived(), q1.derived(), u, res.derived())); | |
81 | } | ||
82 | 6 | } | |
83 | |||
84 | template< | ||
85 | typename LieGroup_t, | ||
86 | typename Scalar, | ||
87 | int Options, | ||
88 | template<typename, int> class JointCollectionTpl, | ||
89 | typename ConfigVectorIn1, | ||
90 | typename ConfigVectorIn2, | ||
91 | typename ReturnType> | ||
92 | 373 | void difference( | |
93 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
94 | const Eigen::MatrixBase<ConfigVectorIn1> & q0, | ||
95 | const Eigen::MatrixBase<ConfigVectorIn2> & q1, | ||
96 | const Eigen::MatrixBase<ReturnType> & dvout) | ||
97 | { | ||
98 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 373 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
373 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
99 | q0.size(), model.nq, "The first configuration vector is not of the right size"); | ||
100 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 373 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
373 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
101 | q1.size(), model.nq, "The second configuration vector is not of the right size"); | ||
102 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 373 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
373 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
103 | dvout.size(), model.nv, "The output argument is not of the right size"); | ||
104 | |||
105 | typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model; | ||
106 | typedef typename Model::JointIndex JointIndex; | ||
107 | 373 | ReturnType & res = PINOCCHIO_EIGEN_CONST_CAST(ReturnType, dvout); | |
108 | |||
109 | typedef DifferenceStep<LieGroup_t, ConfigVectorIn1, ConfigVectorIn2, ReturnType> Algo; | ||
110 |
1/2✓ Branch 3 taken 373 times.
✗ Branch 4 not taken.
|
373 | typename Algo::ArgsType args(q0.derived(), q1.derived(), res); |
111 |
2/2✓ Branch 0 taken 1728 times.
✓ Branch 1 taken 373 times.
|
2101 | for (JointIndex i = 1; i < (JointIndex)model.njoints; ++i) |
112 | { | ||
113 |
2/4✓ Branch 1 taken 1728 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1728 times.
✗ Branch 6 not taken.
|
1728 | Algo::run(model.joints[i], args); |
114 | } | ||
115 | 373 | } | |
116 | |||
117 | template< | ||
118 | typename LieGroup_t, | ||
119 | typename Scalar, | ||
120 | int Options, | ||
121 | template<typename, int> class JointCollectionTpl, | ||
122 | typename ConfigVectorIn1, | ||
123 | typename ConfigVectorIn2, | ||
124 | typename ReturnType> | ||
125 | 3 | void squaredDistance( | |
126 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
127 | const Eigen::MatrixBase<ConfigVectorIn1> & q0, | ||
128 | const Eigen::MatrixBase<ConfigVectorIn2> & q1, | ||
129 | const Eigen::MatrixBase<ReturnType> & out) | ||
130 | { | ||
131 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
3 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
132 | q0.size(), model.nq, "The first configuration vector is not of the right size"); | ||
133 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
3 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
134 | q1.size(), model.nq, "The second configuration vector is not of the right size"); | ||
135 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
3 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
136 | out.size(), (model.njoints - 1), "The output argument is not of the right size"); | ||
137 | |||
138 | typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model; | ||
139 | typedef typename Model::JointIndex JointIndex; | ||
140 | 3 | ReturnType & distances = PINOCCHIO_EIGEN_CONST_CAST(ReturnType, out); | |
141 | |||
142 | typedef SquaredDistanceStep<LieGroup_t, ConfigVectorIn1, ConfigVectorIn2, ReturnType> Algo; | ||
143 |
2/2✓ Branch 0 taken 65 times.
✓ Branch 1 taken 3 times.
|
68 | for (JointIndex i = 0; i < (JointIndex)model.njoints - 1; ++i) |
144 | { | ||
145 |
1/2✓ Branch 4 taken 65 times.
✗ Branch 5 not taken.
|
65 | typename Algo::ArgsType args(i, q0.derived(), q1.derived(), distances.derived()); |
146 |
2/4✓ Branch 1 taken 65 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 65 times.
✗ Branch 6 not taken.
|
65 | Algo::run(model.joints[i + 1], args); |
147 | } | ||
148 | 3 | } | |
149 | |||
150 | template< | ||
151 | typename LieGroup_t, | ||
152 | typename Scalar, | ||
153 | int Options, | ||
154 | template<typename, int> class JointCollectionTpl, | ||
155 | typename ConfigVectorIn1, | ||
156 | typename ConfigVectorIn2, | ||
157 | typename ReturnType> | ||
158 | 2524 | void randomConfiguration( | |
159 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
160 | const Eigen::MatrixBase<ConfigVectorIn1> & lowerLimits, | ||
161 | const Eigen::MatrixBase<ConfigVectorIn2> & upperLimits, | ||
162 | const Eigen::MatrixBase<ReturnType> & qout) | ||
163 | { | ||
164 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 2498 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
2524 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
165 | lowerLimits.size(), model.nq, "The lower limits vector is not of the right size"); | ||
166 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 2498 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
2524 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
167 | upperLimits.size(), model.nq, "The upper limits vector is not of the right size"); | ||
168 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 2498 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
2524 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
169 | qout.size(), model.nq, "The output argument is not of the right size"); | ||
170 | |||
171 | typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model; | ||
172 | typedef typename Model::JointIndex JointIndex; | ||
173 | 2524 | ReturnType & q = PINOCCHIO_EIGEN_CONST_CAST(ReturnType, qout); | |
174 | |||
175 | typedef RandomConfigurationStep<LieGroup_t, ReturnType, ConfigVectorIn1, ConfigVectorIn2> Algo; | ||
176 |
1/2✓ Branch 4 taken 2498 times.
✗ Branch 5 not taken.
|
2524 | typename Algo::ArgsType args( |
177 | PINOCCHIO_EIGEN_CONST_CAST(ReturnType, q), lowerLimits.derived(), upperLimits.derived()); | ||
178 |
2/2✓ Branch 0 taken 75571 times.
✓ Branch 1 taken 2498 times.
|
78124 | for (JointIndex i = 1; i < (JointIndex)model.njoints; ++i) |
179 | { | ||
180 |
2/4✓ Branch 1 taken 75571 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 75571 times.
✗ Branch 6 not taken.
|
75600 | Algo::run(model.joints[i], args); |
181 | } | ||
182 | 2524 | } | |
183 | |||
184 | template< | ||
185 | typename LieGroup_t, | ||
186 | typename Scalar, | ||
187 | int Options, | ||
188 | template<typename, int> class JointCollectionTpl, | ||
189 | typename ReturnType> | ||
190 | 84 | void neutral( | |
191 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
192 | const Eigen::MatrixBase<ReturnType> & qout) | ||
193 | { | ||
194 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 84 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
84 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
195 | qout.size(), model.nq, "The output argument is not of the right size"); | ||
196 | |||
197 | typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model; | ||
198 | typedef typename Model::JointIndex JointIndex; | ||
199 | 84 | ReturnType & neutral_elt = PINOCCHIO_EIGEN_CONST_CAST(ReturnType, qout); | |
200 | |||
201 |
1/2✓ Branch 2 taken 84 times.
✗ Branch 3 not taken.
|
84 | typename NeutralStep<LieGroup_t, ReturnType>::ArgsType args(neutral_elt.derived()); |
202 |
2/2✓ Branch 0 taken 1347 times.
✓ Branch 1 taken 84 times.
|
1431 | for (JointIndex i = 1; i < (JointIndex)model.njoints; ++i) |
203 | { | ||
204 |
2/4✓ Branch 1 taken 1347 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1347 times.
✗ Branch 6 not taken.
|
1347 | NeutralStep<LieGroup_t, ReturnType>::run(model.joints[i], args); |
205 | } | ||
206 | 84 | } | |
207 | |||
208 | template< | ||
209 | typename LieGroup_t, | ||
210 | typename Scalar, | ||
211 | int Options, | ||
212 | template<typename, int> class JointCollectionTpl, | ||
213 | typename ConfigVectorType, | ||
214 | typename TangentVectorType, | ||
215 | typename JacobianMatrixType> | ||
216 | 32 | void dIntegrate( | |
217 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
218 | const Eigen::MatrixBase<ConfigVectorType> & q, | ||
219 | const Eigen::MatrixBase<TangentVectorType> & v, | ||
220 | const Eigen::MatrixBase<JacobianMatrixType> & J, | ||
221 | const ArgumentPosition arg, | ||
222 | const AssignmentOperatorType op) | ||
223 | { | ||
224 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 32 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
32 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
225 | q.size(), model.nq, "The configuration vector is not of the right size"); | ||
226 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 32 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
32 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
227 | v.size(), model.nv, "The joint velocity vector is not of the right size"); | ||
228 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 32 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
32 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
229 | J.rows(), model.nv, "The output argument is not of the right size"); | ||
230 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 32 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
32 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
231 | J.cols(), model.nv, "The output argument is not of the right size"); | ||
232 | |||
233 | typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model; | ||
234 | typedef typename Model::JointIndex JointIndex; | ||
235 | |||
236 | typedef dIntegrateStep<LieGroup_t, ConfigVectorType, TangentVectorType, JacobianMatrixType> | ||
237 | Algo; | ||
238 |
1/2✓ Branch 3 taken 32 times.
✗ Branch 4 not taken.
|
32 | typename Algo::ArgsType args( |
239 | 32 | q.derived(), v.derived(), PINOCCHIO_EIGEN_CONST_CAST(JacobianMatrixType, J), arg, op); | |
240 |
2/2✓ Branch 0 taken 512 times.
✓ Branch 1 taken 32 times.
|
544 | for (JointIndex i = 1; i < (JointIndex)model.njoints; ++i) |
241 | { | ||
242 |
2/4✓ Branch 1 taken 512 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 512 times.
✗ Branch 6 not taken.
|
512 | Algo::run(model.joints[i], args); |
243 | } | ||
244 | 32 | } | |
245 | |||
246 | template< | ||
247 | typename LieGroup_t, | ||
248 | typename Scalar, | ||
249 | int Options, | ||
250 | template<typename, int> class JointCollectionTpl, | ||
251 | typename ConfigVectorType, | ||
252 | typename TangentVectorType, | ||
253 | typename JacobianMatrixType1, | ||
254 | typename JacobianMatrixType2> | ||
255 | 4 | void dIntegrateTransport( | |
256 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
257 | const Eigen::MatrixBase<ConfigVectorType> & q, | ||
258 | const Eigen::MatrixBase<TangentVectorType> & v, | ||
259 | const Eigen::MatrixBase<JacobianMatrixType1> & Jin, | ||
260 | const Eigen::MatrixBase<JacobianMatrixType2> & Jout, | ||
261 | const ArgumentPosition arg) | ||
262 | { | ||
263 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
4 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
264 | q.size(), model.nq, "The configuration vector is not of the right size"); | ||
265 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
4 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
266 | v.size(), model.nv, "The joint velocity vector is not of the right size"); | ||
267 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
4 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
268 | Jin.rows(), model.nv, "The input matrix is not of the right size"); | ||
269 |
1/24✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
|
4 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
270 | Jout.rows(), Jin.rows(), "The output argument should be the same size as input matrix"); | ||
271 |
1/24✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
|
4 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
272 | Jout.cols(), Jin.cols(), "The output argument should be the same size as input matrix"); | ||
273 | |||
274 | typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model; | ||
275 | typedef typename Model::JointIndex JointIndex; | ||
276 | |||
277 | typedef dIntegrateTransportStep< | ||
278 | LieGroup_t, ConfigVectorType, TangentVectorType, JacobianMatrixType1, JacobianMatrixType2> | ||
279 | Algo; | ||
280 |
1/2✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
|
4 | typename Algo::ArgsType args( |
281 | q.derived(), v.derived(), Jin.derived(), | ||
282 | 4 | PINOCCHIO_EIGEN_CONST_CAST(JacobianMatrixType2, Jout), arg); | |
283 |
2/2✓ Branch 0 taken 76 times.
✓ Branch 1 taken 4 times.
|
80 | for (JointIndex i = 1; i < (JointIndex)model.njoints; ++i) |
284 | { | ||
285 |
2/4✓ Branch 1 taken 76 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 76 times.
✗ Branch 6 not taken.
|
76 | Algo::run(model.joints[i], args); |
286 | } | ||
287 | 4 | } | |
288 | |||
289 | template< | ||
290 | typename LieGroup_t, | ||
291 | typename Scalar, | ||
292 | int Options, | ||
293 | template<typename, int> class JointCollectionTpl, | ||
294 | typename ConfigVectorType, | ||
295 | typename TangentVectorType, | ||
296 | typename JacobianMatrixType> | ||
297 | 2 | void dIntegrateTransport( | |
298 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
299 | const Eigen::MatrixBase<ConfigVectorType> & q, | ||
300 | const Eigen::MatrixBase<TangentVectorType> & v, | ||
301 | const Eigen::MatrixBase<JacobianMatrixType> & J, | ||
302 | const ArgumentPosition arg) | ||
303 | { | ||
304 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
2 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
305 | q.size(), model.nq, "The configuration vector is not of the right size"); | ||
306 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
2 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
307 | v.size(), model.nv, "The joint velocity vector is not of the right size"); | ||
308 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
2 | PINOCCHIO_CHECK_ARGUMENT_SIZE(J.rows(), model.nv, "The input matrix is not of the right size"); |
309 | |||
310 | typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model; | ||
311 | typedef typename Model::JointIndex JointIndex; | ||
312 | |||
313 | typedef dIntegrateTransportInPlaceStep< | ||
314 | LieGroup_t, ConfigVectorType, TangentVectorType, JacobianMatrixType> | ||
315 | Algo; | ||
316 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
2 | typename Algo::ArgsType args( |
317 | 2 | q.derived(), v.derived(), PINOCCHIO_EIGEN_CONST_CAST(JacobianMatrixType, J), arg); | |
318 |
2/2✓ Branch 0 taken 22 times.
✓ Branch 1 taken 2 times.
|
24 | for (JointIndex i = 1; i < (JointIndex)model.njoints; ++i) |
319 | { | ||
320 |
2/4✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
|
22 | Algo::run(model.joints[i], args); |
321 | } | ||
322 | 2 | } | |
323 | |||
324 | template< | ||
325 | typename LieGroup_t, | ||
326 | typename Scalar, | ||
327 | int Options, | ||
328 | template<typename, int> class JointCollectionTpl, | ||
329 | typename ConfigVector1, | ||
330 | typename ConfigVector2, | ||
331 | typename JacobianMatrix> | ||
332 | 14 | void dDifference( | |
333 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
334 | const Eigen::MatrixBase<ConfigVector1> & q0, | ||
335 | const Eigen::MatrixBase<ConfigVector2> & q1, | ||
336 | const Eigen::MatrixBase<JacobianMatrix> & J, | ||
337 | const ArgumentPosition arg) | ||
338 | { | ||
339 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 14 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
14 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
340 | q0.size(), model.nq, "The configuration vector q0 is not of the right size"); | ||
341 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 14 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
14 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
342 | q1.size(), model.nq, "The configuration vector q1 is not of the right size"); | ||
343 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 14 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
14 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
344 | J.rows(), model.nv, "The output argument is not of the right size"); | ||
345 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 14 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
14 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
346 | J.cols(), model.nv, "The output argument is not of the right size"); | ||
347 | |||
348 | typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model; | ||
349 | typedef typename Model::JointIndex JointIndex; | ||
350 | |||
351 | typedef dDifferenceStep<LieGroup_t, ConfigVector1, ConfigVector2, JacobianMatrix> Algo; | ||
352 |
1/2✓ Branch 3 taken 14 times.
✗ Branch 4 not taken.
|
14 | typename Algo::ArgsType args( |
353 | 14 | q0.derived(), q1.derived(), PINOCCHIO_EIGEN_CONST_CAST(JacobianMatrix, J), arg); | |
354 |
2/2✓ Branch 0 taken 282 times.
✓ Branch 1 taken 14 times.
|
296 | for (JointIndex i = 1; i < (JointIndex)model.njoints; ++i) |
355 | { | ||
356 |
2/4✓ Branch 1 taken 282 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 282 times.
✗ Branch 6 not taken.
|
282 | Algo::run(model.joints[i], args); |
357 | } | ||
358 | 14 | } | |
359 | |||
360 | template< | ||
361 | typename LieGroup_t, | ||
362 | typename Scalar, | ||
363 | int Options, | ||
364 | template<typename, int> class JointCollectionTpl, | ||
365 | typename ConfigVectorIn1, | ||
366 | typename ConfigVectorIn2> | ||
367 | 4 | Scalar squaredDistanceSum( | |
368 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
369 | const Eigen::MatrixBase<ConfigVectorIn1> & q0, | ||
370 | const Eigen::MatrixBase<ConfigVectorIn2> & q1) | ||
371 | { | ||
372 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
4 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
373 | q0.size(), model.nq, "The first configuration vector is not of the right size"); | ||
374 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
4 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
375 | q1.size(), model.nq, "The second configuration vector is not of the right size"); | ||
376 | |||
377 | typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model; | ||
378 | typedef typename Model::JointIndex JointIndex; | ||
379 | 4 | typename ConfigVectorIn1::Scalar squaredDistance = Scalar(0.0); | |
380 | |||
381 | typedef SquaredDistanceSumStep<LieGroup_t, ConfigVectorIn1, ConfigVectorIn2, Scalar> Algo; | ||
382 |
2/2✓ Branch 0 taken 76 times.
✓ Branch 1 taken 4 times.
|
80 | for (JointIndex i = 1; i < (JointIndex)model.njoints; ++i) |
383 | { | ||
384 |
1/2✓ Branch 3 taken 76 times.
✗ Branch 4 not taken.
|
76 | typename Algo::ArgsType args(q0.derived(), q1.derived(), squaredDistance); |
385 |
2/4✓ Branch 1 taken 76 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 76 times.
✗ Branch 6 not taken.
|
76 | Algo::run(model.joints[i], args); |
386 | } | ||
387 | |||
388 | 4 | return squaredDistance; | |
389 | } | ||
390 | |||
391 | template< | ||
392 | typename LieGroup_t, | ||
393 | typename Scalar, | ||
394 | int Options, | ||
395 | template<typename, int> class JointCollectionTpl, | ||
396 | typename ConfigVectorIn1, | ||
397 | typename ConfigVectorIn2> | ||
398 | 4 | Scalar distance( | |
399 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
400 | const Eigen::MatrixBase<ConfigVectorIn1> & q0, | ||
401 | const Eigen::MatrixBase<ConfigVectorIn2> & q1) | ||
402 | { | ||
403 |
0/2✗ Branch 1 not taken.
✗ Branch 2 not taken.
|
4 | const Scalar & squaredDistance = squaredDistanceSum< |
404 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | LieGroup_t, Scalar, Options, JointCollectionTpl, ConfigVectorIn1, ConfigVectorIn2>( |
405 | 4 | model, q0.derived(), q1.derived()); | |
406 |
0/2✗ Branch 1 not taken.
✗ Branch 2 not taken.
|
8 | return math::sqrt(squaredDistance); |
407 | } | ||
408 | |||
409 | template< | ||
410 | typename LieGroup_t, | ||
411 | typename Scalar, | ||
412 | int Options, | ||
413 | template<typename, int> class JointCollectionTpl, | ||
414 | typename ConfigVectorType> | ||
415 | 14 | void normalize( | |
416 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
417 | const Eigen::MatrixBase<ConfigVectorType> & qout) | ||
418 | { | ||
419 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 14 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
14 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
420 | qout.size(), model.nq, "The output argument is not of the right size"); | ||
421 | |||
422 | typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model; | ||
423 | typedef typename Model::JointIndex JointIndex; | ||
424 | |||
425 | typedef NormalizeStep<LieGroup_t, ConfigVectorType> Algo; | ||
426 |
2/2✓ Branch 0 taken 225 times.
✓ Branch 1 taken 14 times.
|
239 | for (JointIndex i = 1; i < (JointIndex)model.njoints; ++i) |
427 | { | ||
428 |
1/2✓ Branch 1 taken 225 times.
✗ Branch 2 not taken.
|
225 | Algo::run( |
429 | 225 | model.joints[i], | |
430 | 450 | typename Algo::ArgsType(PINOCCHIO_EIGEN_CONST_CAST(ConfigVectorType, qout))); | |
431 | } | ||
432 | 14 | } | |
433 | |||
434 | template< | ||
435 | typename LieGroup_t, | ||
436 | typename Scalar, | ||
437 | int Options, | ||
438 | template<typename, int> class JointCollectionTpl, | ||
439 | typename ConfigVectorIn> | ||
440 | 19 | bool isNormalized( | |
441 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
442 | const Eigen::MatrixBase<ConfigVectorIn> & q, | ||
443 | const Scalar & prec) | ||
444 | { | ||
445 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 19 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
19 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
446 | q.size(), model.nq, "The configuration vector is not of the right size"); | ||
447 |
2/6✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 19 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
19 | PINOCCHIO_CHECK_INPUT_ARGUMENT( |
448 | (check_expression_if_real<Scalar, true>(prec >= 0)), "The precision should be positive"); | ||
449 | |||
450 | typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model; | ||
451 | typedef typename Model::JointIndex JointIndex; | ||
452 | |||
453 | 19 | bool result = true; | |
454 | typedef IsNormalizedStep<LieGroup_t, ConfigVectorIn, Scalar> Algo; | ||
455 |
1/2✓ Branch 2 taken 19 times.
✗ Branch 3 not taken.
|
19 | typename Algo::ArgsType args(q.derived(), prec, result); |
456 |
2/2✓ Branch 0 taken 245 times.
✓ Branch 1 taken 13 times.
|
258 | for (JointIndex i = 1; i < (JointIndex)model.njoints; ++i) |
457 | { | ||
458 |
2/4✓ Branch 1 taken 245 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 245 times.
✗ Branch 6 not taken.
|
245 | Algo::run(model.joints[i], args); |
459 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 239 times.
|
245 | if (!result) |
460 | 6 | return false; | |
461 | } | ||
462 | |||
463 | 13 | return true; | |
464 | } | ||
465 | |||
466 | template< | ||
467 | typename LieGroup_t, | ||
468 | typename Scalar, | ||
469 | int Options, | ||
470 | template<typename, int> class JointCollectionTpl, | ||
471 | typename ConfigVectorIn1, | ||
472 | typename ConfigVectorIn2> | ||
473 | 7 | bool isSameConfiguration( | |
474 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
475 | const Eigen::MatrixBase<ConfigVectorIn1> & q1, | ||
476 | const Eigen::MatrixBase<ConfigVectorIn2> & q2, | ||
477 | const Scalar & prec) | ||
478 | { | ||
479 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
7 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
480 | q1.size(), model.nq, "The first configuration vector is not of the right size"); | ||
481 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
7 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
482 | q2.size(), model.nq, "The second configuration vector is not of the right size"); | ||
483 |
2/6✓ Branch 1 taken 7 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 7 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
7 | PINOCCHIO_CHECK_INPUT_ARGUMENT( |
484 | (check_expression_if_real<Scalar, true>(prec >= 0)), "The precision should be positive"); | ||
485 | |||
486 | typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model; | ||
487 | typedef typename Model::JointIndex JointIndex; | ||
488 | |||
489 | 7 | bool result = true; | |
490 | typedef IsSameConfigurationStep<LieGroup_t, ConfigVectorIn1, ConfigVectorIn2, Scalar> Algo; | ||
491 |
1/2✓ Branch 3 taken 7 times.
✗ Branch 4 not taken.
|
7 | typename Algo::ArgsType args(result, q1.derived(), q2.derived(), prec); |
492 |
2/2✓ Branch 0 taken 89 times.
✓ Branch 1 taken 5 times.
|
94 | for (JointIndex i = 1; i < (JointIndex)model.njoints; ++i) |
493 | { | ||
494 |
2/4✓ Branch 1 taken 89 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 89 times.
✗ Branch 6 not taken.
|
89 | Algo::run(model.joints[i], args); |
495 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 87 times.
|
89 | if (!result) |
496 | 2 | return false; | |
497 | } | ||
498 | |||
499 | 5 | return true; | |
500 | } | ||
501 | |||
502 | template< | ||
503 | typename LieGroup_t, | ||
504 | typename Scalar, | ||
505 | int Options, | ||
506 | template<typename, int> class JointCollectionTpl, | ||
507 | typename ConfigVector, | ||
508 | typename JacobianMatrix> | ||
509 | 1 | void integrateCoeffWiseJacobian( | |
510 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
511 | const Eigen::MatrixBase<ConfigVector> & q, | ||
512 | const Eigen::MatrixBase<JacobianMatrix> & jacobian) | ||
513 | { | ||
514 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
1 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
515 | q.size(), model.nq, "The configuration vector is not of the right size"); | ||
516 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
1 | PINOCCHIO_CHECK_ARGUMENT_SIZE(jacobian.rows(), model.nq); |
517 |
1/24✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
|
1 | PINOCCHIO_CHECK_ARGUMENT_SIZE( |
518 | jacobian.cols(), model.nv, "The jacobian does not have the right dimension"); | ||
519 | |||
520 | typedef IntegrateCoeffWiseJacobianStep<LieGroup_t, ConfigVector, JacobianMatrix> Algo; | ||
521 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | typename Algo::ArgsType args(q.derived(), PINOCCHIO_EIGEN_CONST_CAST(JacobianMatrix, jacobian)); |
522 |
2/2✓ Branch 0 taken 27 times.
✓ Branch 1 taken 1 times.
|
28 | for (JointIndex i = 1; i < (JointIndex)model.njoints; ++i) |
523 | { | ||
524 |
2/4✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
|
27 | Algo::run(model.joints[i], args); |
525 | } | ||
526 | 1 | } | |
527 | |||
528 | // ----------------- API that allocates memory ---------------------------- // | ||
529 | |||
530 | template< | ||
531 | typename LieGroup_t, | ||
532 | typename Scalar, | ||
533 | int Options, | ||
534 | template<typename, int> class JointCollectionTpl, | ||
535 | typename ConfigVectorType, | ||
536 | typename TangentVectorType> | ||
537 | 4288 | typename PINOCCHIO_EIGEN_PLAIN_TYPE(ConfigVectorType) integrate( | |
538 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
539 | const Eigen::MatrixBase<ConfigVectorType> & q, | ||
540 | const Eigen::MatrixBase<TangentVectorType> & v) | ||
541 | { | ||
542 | typedef typename PINOCCHIO_EIGEN_PLAIN_TYPE(ConfigVectorType) ReturnType; | ||
543 | 4288 | ReturnType res(model.nq); | |
544 | integrate< | ||
545 | LieGroup_t, Scalar, Options, JointCollectionTpl, ConfigVectorType, TangentVectorType, | ||
546 |
1/2✓ Branch 3 taken 4055 times.
✗ Branch 4 not taken.
|
4288 | ReturnType>(model, q.derived(), v.derived(), res); |
547 | 4288 | return res; | |
548 | } | ||
549 | |||
550 | template< | ||
551 | typename LieGroup_t, | ||
552 | typename Scalar, | ||
553 | int Options, | ||
554 | template<typename, int> class JointCollectionTpl, | ||
555 | typename ConfigVectorIn1, | ||
556 | typename ConfigVectorIn2> | ||
557 | 6 | typename PINOCCHIO_EIGEN_PLAIN_TYPE(ConfigVectorIn1) interpolate( | |
558 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
559 | const Eigen::MatrixBase<ConfigVectorIn1> & q0, | ||
560 | const Eigen::MatrixBase<ConfigVectorIn2> & q1, | ||
561 | const Scalar & u) | ||
562 | { | ||
563 | typedef typename PINOCCHIO_EIGEN_PLAIN_TYPE(ConfigVectorIn1) ReturnType; | ||
564 | 6 | ReturnType res(model.nq); | |
565 | interpolate< | ||
566 | LieGroup_t, Scalar, Options, JointCollectionTpl, ConfigVectorIn1, ConfigVectorIn2, | ||
567 |
1/2✓ Branch 3 taken 6 times.
✗ Branch 4 not taken.
|
6 | ReturnType>(model, q0.derived(), q1.derived(), u, res); |
568 | 6 | return res; | |
569 | } | ||
570 | |||
571 | template< | ||
572 | typename LieGroup_t, | ||
573 | typename Scalar, | ||
574 | int Options, | ||
575 | template<typename, int> class JointCollectionTpl, | ||
576 | typename ConfigVectorIn1, | ||
577 | typename ConfigVectorIn2> | ||
578 | 373 | typename PINOCCHIO_EIGEN_PLAIN_TYPE(ConfigVectorIn1) difference( | |
579 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
580 | const Eigen::MatrixBase<ConfigVectorIn1> & q0, | ||
581 | const Eigen::MatrixBase<ConfigVectorIn2> & q1) | ||
582 | { | ||
583 | typedef typename PINOCCHIO_EIGEN_PLAIN_TYPE(ConfigVectorIn1) ReturnType; | ||
584 | 373 | ReturnType res(model.nv); | |
585 | difference< | ||
586 | LieGroup_t, Scalar, Options, JointCollectionTpl, ConfigVectorIn1, ConfigVectorIn2, | ||
587 |
1/2✓ Branch 3 taken 373 times.
✗ Branch 4 not taken.
|
373 | ReturnType>(model, q0.derived(), q1.derived(), res); |
588 | 373 | return res; | |
589 | } | ||
590 | |||
591 | template< | ||
592 | typename LieGroup_t, | ||
593 | typename Scalar, | ||
594 | int Options, | ||
595 | template<typename, int> class JointCollectionTpl, | ||
596 | typename ConfigVectorIn1, | ||
597 | typename ConfigVectorIn2> | ||
598 | 3 | typename PINOCCHIO_EIGEN_PLAIN_TYPE(ConfigVectorIn1) squaredDistance( | |
599 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
600 | const Eigen::MatrixBase<ConfigVectorIn1> & q0, | ||
601 | const Eigen::MatrixBase<ConfigVectorIn2> & q1) | ||
602 | { | ||
603 | typedef typename PINOCCHIO_EIGEN_PLAIN_TYPE(ConfigVectorIn1) ReturnType; | ||
604 |
1/2✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
|
3 | ReturnType distances(ReturnType::Zero(model.njoints - 1)); |
605 | squaredDistance< | ||
606 | LieGroup_t, Scalar, Options, JointCollectionTpl, ConfigVectorIn1, ConfigVectorIn2, | ||
607 |
1/2✓ Branch 3 taken 3 times.
✗ Branch 4 not taken.
|
3 | ReturnType>(model, q0.derived(), q1.derived(), distances); |
608 | 3 | return distances; | |
609 | } | ||
610 | |||
611 | template< | ||
612 | typename LieGroup_t, | ||
613 | typename Scalar, | ||
614 | int Options, | ||
615 | template<typename, int> class JointCollectionTpl, | ||
616 | typename ConfigVectorIn1, | ||
617 | typename ConfigVectorIn2> | ||
618 | typename PINOCCHIO_EIGEN_PLAIN_TYPE_NO_PARENS( | ||
619 | (typename ModelTpl<Scalar, Options, JointCollectionTpl>::ConfigVectorType)) | ||
620 | 2524 | randomConfiguration( | |
621 | const ModelTpl<Scalar, Options, JointCollectionTpl> & model, | ||
622 | const Eigen::MatrixBase<ConfigVectorIn1> & lowerLimits, | ||
623 | const Eigen::MatrixBase<ConfigVectorIn2> & upperLimits) | ||
624 | { | ||
625 | typedef typename PINOCCHIO_EIGEN_PLAIN_TYPE_NO_PARENS( | ||
626 | (typename ModelTpl<Scalar, Options, JointCollectionTpl>::ConfigVectorType)) ReturnType; | ||
627 | 2524 | ReturnType q(model.nq); | |
628 | randomConfiguration< | ||
629 | LieGroup_t, Scalar, Options, JointCollectionTpl, ConfigVectorIn1, ConfigVectorIn2, | ||
630 |
1/2✓ Branch 3 taken 2498 times.
✗ Branch 4 not taken.
|
2524 | ReturnType>(model, lowerLimits.derived(), upperLimits.derived(), q); |
631 | 2524 | return q; | |
632 | } | ||
633 | |||
634 | template< | ||
635 | typename LieGroup_t, | ||
636 | typename Scalar, | ||
637 | int Options, | ||
638 | template<typename, int> class JointCollectionTpl> | ||
639 | typename PINOCCHIO_EIGEN_PLAIN_TYPE_NO_PARENS( | ||
640 | (typename ModelTpl<Scalar, Options, JointCollectionTpl>::ConfigVectorType)) | ||
641 | 2412 | randomConfiguration(const ModelTpl<Scalar, Options, JointCollectionTpl> & model) | |
642 | { | ||
643 | typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model; | ||
644 | typedef typename Model::ConfigVectorType ConfigVectorType; | ||
645 | return randomConfiguration< | ||
646 | LieGroup_t, Scalar, Options, JointCollectionTpl, ConfigVectorType, ConfigVectorType>( | ||
647 | 2412 | model, model.lowerPositionLimit, model.upperPositionLimit); | |
648 | } | ||
649 | |||
650 | template< | ||
651 | typename LieGroup_t, | ||
652 | typename Scalar, | ||
653 | int Options, | ||
654 | template<typename, int> class JointCollectionTpl> | ||
655 | Eigen::Matrix<Scalar, Eigen::Dynamic, 1, Options> | ||
656 | 61 | neutral(const ModelTpl<Scalar, Options, JointCollectionTpl> & model) | |
657 | { | ||
658 | typedef Eigen::Matrix<Scalar, Eigen::Dynamic, 1, Options> ReturnType; | ||
659 | 61 | ReturnType q(model.nq); | |
660 |
1/2✓ Branch 1 taken 61 times.
✗ Branch 2 not taken.
|
61 | neutral<LieGroup_t, Scalar, Options, JointCollectionTpl, ReturnType>(model, q); |
661 | 61 | return q; | |
662 | } | ||
663 | |||
664 | } // namespace pinocchio | ||
665 | |||
666 | #endif // ifndef __pinocchio_algorithm_joint_configuration_hxx__ | ||
667 |