Skip to content

Commit 1b6c379

Browse files
author
ipuch
committed
tests(fix): joint-generic for ellipsoid
1 parent 009d154 commit 1b6c379

File tree

2 files changed

+38
-6
lines changed

2 files changed

+38
-6
lines changed

include/pinocchio/multibody/joint/joint-ellipsoid.hpp

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -245,13 +245,28 @@ namespace pinocchio
245245
c1c2 = c1 * c2;
246246
c1s2 = c1 * s2;
247247

248-
data.S.matrix() << c1c2, s2, Scalar(0),
249-
-c1s2, c2, Scalar(0),
250-
s1, Scalar(0), Scalar(1),
251-
c1 * (-radius_b * s0 * s1 + radius_c * c0 * c1 * s2), c1 * (radius_a - radius_c * c0 * c2), -radius_b * c1 * s0,
252-
-radius_a * s1 * s1 - radius_b * c0 * c1 + radius_c * c0 * c1 * c1 * c2, radius_b * s0 * s1 + radius_c * c0 * c1 * s2, radius_a * s1,
253-
c1 * (radius_a * s1 * s2 + radius_b * c1 * c2 * s0 - radius_c * s0), radius_a * c2 * s1 + radius_b * c1 * s0 * s2 + radius_c * c0 * s1, Scalar(0);
248+
Scalar S_11, S_21, S_31, S_12, S_22, S_32;
249+
// S_11 = c1 * (-radius_b * c0 * (c0 * s2 + c2 * s0 * s1) - radius_c * s0 * (- c0 * c2 * s1 + s0 * s2));
250+
S_11 = dndoty_dqdot0 * radius_b * (c0 *s2 + c2 * s0 * s1) + dndotz_dqdot0 * radius_c * (- c0 * c2 * s1 + s0 * s2);
251+
// S_21 = c1 * (radius_b * c0 * (- c0 * c2 + s0 * s1 * s2) - radius_c * s0 * (c0 * s1 * s2 + c2 * s0));
252+
S_21 = - dndoty_dqdot0 * radius_b * (- c0 * c2 + s0 * s1 * s2) + dndotz_dqdot0 * radius_c * (c0 * s1 * s2 + c2 * s0);
253+
// S_31 = c0 * c1 * c1 * s0 * (radius_b - radius_c);
254+
S_31 = c1 * (- dndoty_dqdot0 * radius_b * s0 + dndotz_dqdot0 * radius_c * c0);
255+
256+
//S_12 = radius_a * c1c2 * c1 + radius_b * s0 * s1 * (c0 * s2 + c2 * s0 * s1) - radius_c * c0 * s1 * (- c0 * c2 * s1 + s0 * s2);
257+
S_12 = dndotx_dqdot1 * radius_a * c1 * c2 + dndoty_dqdot1 * radius_b * (c0 * s2 + c2 * s0 * s1) + dndotz_dqdot1 * radius_c * (- c0 * c2 * s1 + s0 * s2);
258+
// S_22 = - radius_a * c1s2 * c1 - radius_b * s0 * s1 * (- c0 * c2 + s0 * s1 * s2) - radius_c * c0 * s1 * (c0 * s1 * s2 + c2 * s0);
259+
S_22 = - dndotx_dqdot1 * radius_a * c1 * s2 - dndoty_dqdot1 * radius_b * (- c0 * c2 + s0 * s1 * s2) + dndotz_dqdot1 * radius_c * (c0 * s1 * s2 + c2 * s0);
260+
//S_32 = c1 * s1 * (radius_a - radius_b * s0 * s0 - radius_c * c0 * c0);
261+
S_32 = dndotx_dqdot1 * radius_a * s1 - dndoty_dqdot1 * radius_b * c1 * s0 + dndotz_dqdot1 * radius_c * c0 * c1;
254262

263+
data.S.matrix() << S_11, S_12, Scalar(0),
264+
S_21, S_22, Scalar(0),
265+
S_31, S_32, Scalar(0),
266+
c1c2, s2, Scalar(0),
267+
-c1s2, c2, Scalar(0),
268+
s1, Scalar(0), Scalar(1);
269+
255270
// Velocity part
256271
data.v.toVector().noalias() = data.S.matrix() * data.joint_v;
257272

unittest/joint-generic.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,23 @@ struct init<pinocchio::JointModelHelicalTpl<Scalar, Options, axis>>
264264
}
265265
};
266266

267+
template<typename Scalar, int Options>
268+
struct init<pinocchio::JointModelEllipsoidTpl<Scalar, Options>>
269+
{
270+
typedef pinocchio::JointModelEllipsoidTpl<Scalar, Options> JointModel;
271+
272+
static JointModel run()
273+
{
274+
JointModel jmodel(Scalar(0.01),
275+
Scalar(0.02),
276+
Scalar(0.03)
277+
);
278+
279+
jmodel.setIndexes(0, 0, 0);
280+
return jmodel;
281+
}
282+
};
283+
267284
template<typename Scalar, int Options>
268285
struct init<pinocchio::JointModelHelicalUnalignedTpl<Scalar, Options>>
269286
{

0 commit comments

Comments
 (0)