GCC Code Coverage Report


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