GCC Code Coverage Report


Directory: ./
File: include/pinocchio/multibody/data.hxx
Date: 2025-04-30 16:14:33
Exec Total Coverage
Lines: 282 282 100.0%
Branches: 468 898 52.1%

Line Branch Exec Source
1 //
2 // Copyright (c) 2015-2024 CNRS INRIA
3 // Copyright (c) 2015 Wandercraft, 86 rue de Paris 91400 Orsay, France.
4 //
5
6 #ifndef __pinocchio_multibody_data_hxx__
7 #define __pinocchio_multibody_data_hxx__
8
9 #include "pinocchio/spatial/fwd.hpp"
10 #include "pinocchio/multibody/model.hpp"
11 #include "pinocchio/utils/string-generator.hpp"
12 #include "pinocchio/multibody/liegroup/liegroup-algo.hpp"
13
14 /// @cond DEV
15
16 namespace pinocchio
17 {
18
19 template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
20 2321 DataTpl<Scalar, Options, JointCollectionTpl>::DataTpl(const Model & model)
21
1/2
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
2321 : joints(0)
22
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , a((std::size_t)model.njoints, Motion::Zero())
23
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , oa((std::size_t)model.njoints, Motion::Zero())
24
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , oa_drift((std::size_t)model.njoints, Motion::Zero())
25
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , oa_augmented((std::size_t)model.njoints, Motion::Zero())
26
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , a_gf((std::size_t)model.njoints, Motion::Zero())
27
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , oa_gf((std::size_t)model.njoints, Motion::Zero())
28
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , v((std::size_t)model.njoints, Motion::Zero())
29
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , ov((std::size_t)model.njoints, Motion::Zero())
30
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , f((std::size_t)model.njoints, Force::Zero())
31
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , of((std::size_t)model.njoints, Force::Zero())
32
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , of_augmented((std::size_t)model.njoints, Force::Zero())
33
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , h((std::size_t)model.njoints, Force::Zero())
34
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , oh((std::size_t)model.njoints, Force::Zero())
35
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , oMi((std::size_t)model.njoints, SE3::Identity())
36
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , liMi((std::size_t)model.njoints, SE3::Identity())
37
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , tau(VectorXs::Zero(model.nv))
38
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , nle(VectorXs::Zero(model.nv))
39
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , g(VectorXs::Zero(model.nv))
40
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , oMf((std::size_t)model.nframes, SE3::Identity())
41
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , Ycrb((std::size_t)model.njoints, Inertia::Zero())
42
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , dYcrb((std::size_t)model.njoints, Inertia::Zero())
43
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , M(MatrixXs::Zero(model.nv, model.nv))
44
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , Minv(MatrixXs::Zero(model.nv, model.nv))
45
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , C(MatrixXs::Zero(model.nv, model.nv))
46
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , dHdq(Matrix6x::Zero(6, model.nv))
47
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , dFdq(Matrix6x::Zero(6, model.nv))
48
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , dFdv(Matrix6x::Zero(6, model.nv))
49
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , dFda(Matrix6x::Zero(6, model.nv))
50
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , SDinv(Matrix6x::Zero(6, model.nv))
51
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , UDinv(Matrix6x::Zero(6, model.nv))
52
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , IS(MatrixXs::Zero(6, model.nv))
53
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , vxI((std::size_t)model.njoints, Inertia::Matrix6::Zero())
54
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , Ivx((std::size_t)model.njoints, Inertia::Matrix6::Zero())
55
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , B((std::size_t)model.njoints, Inertia::Matrix6::Zero())
56
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , oinertias((std::size_t)model.njoints, Inertia::Zero())
57
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , oYcrb((std::size_t)model.njoints, Inertia::Zero())
58
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , doYcrb((std::size_t)model.njoints, Inertia::Matrix6::Zero())
59
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , ddq(VectorXs::Zero(model.nv))
60
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , Yaba((std::size_t)model.njoints, Inertia::Matrix6::Zero())
61
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , oYaba((std::size_t)model.njoints, Inertia::Matrix6::Zero())
62
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , oL((std::size_t)model.njoints, Inertia::Matrix6::Zero())
63
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , oK((std::size_t)model.njoints, Inertia::Matrix6::Zero())
64
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , u(VectorXs::Zero(model.nv))
65
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , Ag(Matrix6x::Zero(6, model.nv))
66
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , dAg(Matrix6x::Zero(6, model.nv))
67
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 , hg(Force::Zero())
68
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 , dhg(Force::Zero())
69
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 , Ig(Inertia::Zero())
70
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , Fcrb((std::size_t)model.njoints, Matrix6x::Zero(6, model.nv))
71
1/2
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
2321 , lastChild((std::size_t)model.njoints, -1)
72
1/2
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
2321 , nvSubtree((std::size_t)model.njoints, -1)
73
1/2
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
2321 , start_idx_v_fromRow((std::size_t)model.nvExtended, -1)
74
1/2
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
2321 , end_idx_v_fromRow((std::size_t)model.nvExtended, -1)
75
1/2
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
2321 , idx_vExtended_to_idx_v_fromRow((std::size_t)model.nvExtended, -1)
76
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , U(MatrixXs::Identity(model.nv, model.nv))
77
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , D(VectorXs::Zero(model.nv))
78
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , Dinv(VectorXs::Zero(model.nv))
79
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , tmp(VectorXs::Zero(model.nv))
80
1/2
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
2321 , parents_fromRow((std::size_t)model.nvExtended, -1)
81
1/2
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
2321 , mimic_parents_fromRow((std::size_t)model.nvExtended, -1)
82
1/2
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
2321 , non_mimic_parents_fromRow((std::size_t)model.nvExtended, -1)
83
1/2
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
2321 , supports_fromRow((std::size_t)model.nv)
84
1/2
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
2321 , nvSubtree_fromRow((std::size_t)model.nvExtended, -1)
85
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , J(Matrix6x::Zero(6, model.nvExtended))
86
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , dJ(Matrix6x::Zero(6, model.nvExtended))
87
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , ddJ(Matrix6x::Zero(6, model.nvExtended))
88
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , psid(Matrix6x::Zero(6, model.nv))
89
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , psidd(Matrix6x::Zero(6, model.nv))
90
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , dVdq(Matrix6x::Zero(6, model.nv))
91
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , dAdq(Matrix6x::Zero(6, model.nv))
92
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , dAdv(Matrix6x::Zero(6, model.nv))
93
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , dtau_dq(RowMatrixXs::Zero(model.nv, model.nv))
94
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , dtau_dv(RowMatrixXs::Zero(model.nv, model.nv))
95
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , ddq_dq(RowMatrixXs::Zero(model.nv, model.nv))
96
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , ddq_dv(RowMatrixXs::Zero(model.nv, model.nv))
97
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , ddq_dtau(RowMatrixXs::Zero(model.nv, model.nv))
98
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , iMf((std::size_t)model.njoints, SE3::Identity())
99
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , com((std::size_t)model.njoints, Vector3::Zero())
100
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , vcom((std::size_t)model.njoints, Vector3::Zero())
101
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , acom((std::size_t)model.njoints, Vector3::Zero())
102
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 17 times.
✗ Branch 6 not taken.
2321 , mass((std::size_t)model.njoints, (Scalar)(-1))
103
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , Jcom(Matrix3x::Zero(3, model.nv))
104
1/2
✓ Branch 1 taken 17 times.
✗ Branch 2 not taken.
2321 , kinetic_energy(Scalar(0))
105
1/2
✓ Branch 1 taken 17 times.
✗ Branch 2 not taken.
2321 , potential_energy(Scalar(0))
106
1/2
✓ Branch 1 taken 17 times.
✗ Branch 2 not taken.
2321 , mechanical_energy(Scalar(0))
107
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 , JMinvJt()
108
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 , llt_JMinvJt()
109
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 , lambda_c()
110
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 , lambda_c_prox()
111
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 , diff_lambda_c()
112
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , sDUiJt(MatrixXs::Zero(model.nv, model.nv))
113
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , torque_residual(VectorXs::Zero(model.nv))
114
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , dq_after(VectorXs::Zero(model.nv))
115
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 , impulse_c()
116
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , staticRegressor(Matrix3x::Zero(3, 4 * (model.njoints - 1)))
117
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , bodyRegressor(BodyRegressorType::Zero())
118
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , jointTorqueRegressor(MatrixXs::Zero(model.nv, 10 * (model.njoints - 1)))
119
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , kineticEnergyRegressor(RowVectorXs::Zero(10 * (model.njoints - 1)))
120
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
2321 , potentialEnergyRegressor(RowVectorXs::Zero(10 * (model.njoints - 1)))
121
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , KA((std::size_t)model.njoints, Matrix6x::Zero(6, 0))
122
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , LA((std::size_t)model.njoints, MatrixXs::Zero(0, 0))
123
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , lA((std::size_t)model.njoints, VectorXs::Zero(0))
124
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , lambdaA((std::size_t)model.njoints, VectorXs::Zero(0))
125
1/2
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
2321 , par_cons_ind((std::size_t)model.njoints, 0)
126
2/4
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 , a_bias((std::size_t)model.njoints, Motion::Zero())
127
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , KAS((std::size_t)model.njoints, MatrixXs::Zero(0, 0))
128
129 #if EIGEN_VERSION_AT_LEAST(3, 2, 90) && !EIGEN_VERSION_AT_LEAST(3, 2, 93)
130 , kinematic_hessians(
131 6,
132 std::max(1, model.nv),
133 std::max(1, model.nv)) // the minimum size should be 1 for compatibility reasons
134 , d2tau_dqdq(
135 std::max(1, model.nv),
136 std::max(1, model.nv),
137 std::max(1, model.nv)) // the minimum size should be 1 for compatibility reasons
138 , d2tau_dvdv(
139 std::max(1, model.nv),
140 std::max(1, model.nv),
141 std::max(1, model.nv)) // the minimum size should be 1 for compatibility reasons
142 , d2tau_dqdv(
143 std::max(1, model.nv),
144 std::max(1, model.nv),
145 std::max(1, model.nv)) // the minimum size should be 1 for compatibility reasons
146 , d2tau_dadq(
147 std::max(1, model.nv),
148 std::max(1, model.nv),
149 std::max(1, model.nv)) // the minimum size should be 1 for compatibility reasons
150 #else
151
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 , kinematic_hessians(6, model.nv, model.nv)
152
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 , d2tau_dqdq(model.nv, model.nv, model.nv)
153
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 , d2tau_dvdv(model.nv, model.nv, model.nv)
154
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 , d2tau_dqdv(model.nv, model.nv, model.nv)
155
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 , d2tau_dadq(model.nv, model.nv, model.nv)
156 #endif
157
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , extended_motion_propagator((std::size_t)model.njoints, Matrix6::Zero())
158
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , extended_motion_propagator2((std::size_t)model.njoints, Matrix6::Zero())
159
3/6
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2321 times.
✗ Branch 9 not taken.
2321 , spatial_inv_inertia((std::size_t)model.njoints, Matrix6::Zero())
160
1/2
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
2321 , accumulation_descendant((std::size_t)model.njoints, 0)
161
1/2
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
2321 , accumulation_ancestor((std::size_t)model.njoints, 0)
162
1/2
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
2321 , constraints_supported_dim((std::size_t)model.njoints, 0)
163
1/2
✓ Branch 2 taken 2321 times.
✗ Branch 3 not taken.
2321 , constraints_supported((std::size_t)model.njoints)
164
23/46
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2321 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 2321 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 2321 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 2321 times.
✗ Branch 14 not taken.
✓ Branch 17 taken 2321 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2321 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 2321 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 2321 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 2321 times.
✗ Branch 30 not taken.
✓ Branch 32 taken 2321 times.
✗ Branch 33 not taken.
✓ Branch 35 taken 2321 times.
✗ Branch 36 not taken.
✓ Branch 38 taken 2321 times.
✗ Branch 39 not taken.
✓ Branch 41 taken 2321 times.
✗ Branch 42 not taken.
✓ Branch 44 taken 2321 times.
✗ Branch 45 not taken.
✓ Branch 47 taken 2321 times.
✗ Branch 48 not taken.
✓ Branch 50 taken 2321 times.
✗ Branch 51 not taken.
✓ Branch 53 taken 2321 times.
✗ Branch 54 not taken.
✓ Branch 56 taken 2321 times.
✗ Branch 57 not taken.
✓ Branch 59 taken 2321 times.
✗ Branch 60 not taken.
✓ Branch 62 taken 2321 times.
✗ Branch 63 not taken.
✓ Branch 65 taken 2321 times.
✗ Branch 66 not taken.
✓ Branch 69 taken 2321 times.
✗ Branch 70 not taken.
16247 , constraints_on_joint((std::size_t)model.njoints)
165 {
166 typedef typename Model::JointIndex JointIndex;
167
168 /* Create data structure associated to the joints */
169
2/2
✓ Branch 0 taken 62563 times.
✓ Branch 1 taken 2321 times.
64884 for (JointIndex i = 0; i < (JointIndex)(model.njoints); ++i)
170
2/4
✓ Branch 2 taken 62563 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 62563 times.
✗ Branch 6 not taken.
62563 joints.push_back(CreateJointData<Scalar, Options, JointCollectionTpl>::run(model.joints[i]));
171
172 /* Init for CRBA */
173
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 M.setZero();
174
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 Minv.setZero();
175
2/2
✓ Branch 0 taken 62563 times.
✓ Branch 1 taken 2321 times.
64884 for (JointIndex i = 0; i < (JointIndex)(model.njoints); ++i)
176 {
177
1/2
✓ Branch 2 taken 62563 times.
✗ Branch 3 not taken.
62563 Fcrb[i].resize(6, model.nv);
178 }
179
180
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 computeLastChild(model);
181
182 /* Init for Cholesky */
183
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 computeParents_fromRow(model);
184
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 computeSupports_fromRow(model);
185
186 /* Init universe states relatively to itself */
187
2/4
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2321 times.
✗ Branch 6 not taken.
2321 a_gf[0] = -model.gravity;
188
189
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 kinematic_hessians.setZero();
190
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 d2tau_dqdq.setZero();
191
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 d2tau_dvdv.setZero();
192
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 d2tau_dqdv.setZero();
193
1/2
✓ Branch 1 taken 2321 times.
✗ Branch 2 not taken.
2321 d2tau_dadq.setZero();
194 2321 }
195
196 template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
197 2321 inline void DataTpl<Scalar, Options, JointCollectionTpl>::computeLastChild(const Model & model)
198 {
199 typedef typename Model::Index Index;
200
201
1/2
✓ Branch 3 taken 2321 times.
✗ Branch 4 not taken.
2321 std::fill(lastChild.begin(), lastChild.end(), -1);
202
2/2
✓ Branch 0 taken 62563 times.
✓ Branch 1 taken 2321 times.
64884 for (int i = model.njoints - 1; i >= 0; --i)
203 {
204
2/2
✓ Branch 1 taken 9001 times.
✓ Branch 2 taken 53562 times.
62563 if (lastChild[(Index)i] == -1)
205 9001 lastChild[(Index)i] = i;
206 62563 const Index & parent = model.parents[(Index)i];
207
208 62563 lastChild[parent] = std::max<int>(lastChild[(Index)i], lastChild[parent]);
209
210 // Build a "correct" representation of mimic nvSubtree by using nvExtended, which will cover
211 // its children nv, and allow for a simple check
212
3/4
✓ Branch 0 taken 62563 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1666 times.
✓ Branch 4 taken 60897 times.
62563 if (boost::get<JointModelMimicTpl<Scalar, Options, JointCollectionTpl>>(
213 62563 &model.joints[size_t(i)]))
214 1666 nvSubtree[(Index)i] = 0;
215 else
216 {
217 int nv_;
218
3/4
✓ Branch 0 taken 60897 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 2049 times.
✓ Branch 4 taken 58848 times.
60897 if (boost::get<JointModelMimicTpl<Scalar, Options, JointCollectionTpl>>(
219 60897 &model.joints[(Index)lastChild[(Index)i]]))
220 2049 nv_ = model.joints[(Index)lastChild[(Index)i]].nvExtended();
221 else
222 58848 nv_ = model.joints[(Index)lastChild[(Index)i]].nv();
223 60897 nvSubtree[(Index)i] =
224 60897 model.joints[(Index)lastChild[(Index)i]].idx_v() + nv_ - model.joints[(Index)i].idx_v();
225 }
226 }
227 // fill mimic data
228
2/2
✓ Branch 5 taken 1666 times.
✓ Branch 6 taken 2321 times.
3987 for (const JointIndex mimicking_id : model.mimicking_joints)
229 {
230 1666 const auto & mimicking_sub = model.subtrees[mimicking_id];
231 1666 size_t j = 1;
232
2/2
✓ Branch 1 taken 1440 times.
✓ Branch 2 taken 226 times.
1666 for (; j < mimicking_sub.size(); j++)
233 {
234
1/2
✓ Branch 2 taken 1440 times.
✗ Branch 3 not taken.
1440 if (model.nvs[mimicking_sub[j]] != 0)
235 1440 break;
236 }
237
2/2
✓ Branch 1 taken 226 times.
✓ Branch 2 taken 1440 times.
1666 if (mimicking_sub.size() == 1)
238
1/2
✓ Branch 1 taken 226 times.
✗ Branch 2 not taken.
226 mimic_subtree_joint.push_back(0);
239 else
240
1/2
✓ Branch 2 taken 1440 times.
✗ Branch 3 not taken.
1440 mimic_subtree_joint.push_back(mimicking_sub[j]);
241 }
242 2321 }
243
244 template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
245 inline void
246 2321 DataTpl<Scalar, Options, JointCollectionTpl>::computeParents_fromRow(const Model & model)
247 {
248 typedef typename Model::Index Index;
249
250
2/2
✓ Branch 0 taken 60242 times.
✓ Branch 1 taken 2321 times.
62563 for (Index joint = 1; joint < (Index)(model.njoints); joint++)
251 {
252 60242 const Index & parent = model.parents[joint];
253 60242 const int idx_vj = model.joints[joint].idx_v();
254 60242 const int nvExtended_j = model.joints[joint].nvExtended();
255 60242 const int idx_vExtended_j = model.joints[joint].idx_vExtended();
256
257
2/4
✓ Branch 0 taken 60242 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 60242 times.
✗ Branch 3 not taken.
60242 assert(idx_vExtended_j >= 0 && idx_vExtended_j < model.nvExtended);
258
2/4
✓ Branch 0 taken 60242 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 60242 times.
✗ Branch 3 not taken.
60242 assert(idx_vj >= 0 && idx_vj < model.nv);
259
260
2/2
✓ Branch 0 taken 57934 times.
✓ Branch 1 taken 2308 times.
60242 if (parent > 0)
261 57934 parents_fromRow[(Index)idx_vExtended_j] =
262 57934 model.joints[parent].idx_vExtended() + model.joints[parent].nvExtended() - 1;
263 else
264 2308 parents_fromRow[(Index)idx_vExtended_j] = -1;
265
266 60242 JointIndex first_non_mimic_parent_id = parent;
267 60242 while (first_non_mimic_parent_id > 0
268
7/8
✓ Branch 0 taken 59374 times.
✓ Branch 1 taken 2308 times.
✓ Branch 2 taken 59374 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1440 times.
✓ Branch 6 taken 57934 times.
✓ Branch 7 taken 1440 times.
✓ Branch 8 taken 60242 times.
121056 && boost::get<JointModelMimicTpl<Scalar, Options, JointCollectionTpl>>(
269 59374 &model.joints[first_non_mimic_parent_id]))
270 {
271 1440 first_non_mimic_parent_id = model.parents[first_non_mimic_parent_id];
272 }
273
274
2/2
✓ Branch 0 taken 57934 times.
✓ Branch 1 taken 2308 times.
60242 if (first_non_mimic_parent_id > 0)
275 57934 non_mimic_parents_fromRow[(Index)idx_vExtended_j] =
276 57934 model.joints[first_non_mimic_parent_id].idx_vExtended()
277 57934 + model.joints[first_non_mimic_parent_id].nvExtended() - 1;
278 else
279 2308 non_mimic_parents_fromRow[(Index)idx_vExtended_j] = -1;
280
281 60242 JointIndex first_mimic_parent_id = parent;
282 60242 while (first_mimic_parent_id > 0
283
7/8
✓ Branch 0 taken 236434 times.
✓ Branch 1 taken 54078 times.
✓ Branch 2 taken 236434 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 230270 times.
✓ Branch 6 taken 6164 times.
✓ Branch 7 taken 230270 times.
✓ Branch 8 taken 60242 times.
526946 && !boost::get<JointModelMimicTpl<Scalar, Options, JointCollectionTpl>>(
284 236434 &model.joints[first_mimic_parent_id]))
285 {
286 230270 first_mimic_parent_id = model.parents[first_mimic_parent_id];
287 }
288
289
2/2
✓ Branch 0 taken 6164 times.
✓ Branch 1 taken 54078 times.
60242 if (first_mimic_parent_id > 0)
290 6164 mimic_parents_fromRow[(Index)idx_vExtended_j] =
291 6164 model.joints[first_mimic_parent_id].idx_vExtended()
292 6164 + model.joints[first_mimic_parent_id].nvExtended() - 1;
293 else
294 54078 mimic_parents_fromRow[(Index)idx_vExtended_j] = -1;
295
296 60242 nvSubtree_fromRow[(Index)idx_vExtended_j] = nvSubtree[joint];
297 60242 start_idx_v_fromRow[(size_t)idx_vj] = idx_vj;
298 60242 end_idx_v_fromRow[(size_t)idx_vj] = idx_vj + nvExtended_j - 1;
299 60242 idx_vExtended_to_idx_v_fromRow[(size_t)idx_vExtended_j] = idx_vj;
300
301
2/2
✓ Branch 0 taken 11286 times.
✓ Branch 1 taken 60242 times.
71528 for (int row = 1; row < nvExtended_j; ++row)
302 {
303 11286 parents_fromRow[(size_t)(idx_vExtended_j + row)] = idx_vExtended_j + row - 1;
304 11286 mimic_parents_fromRow[(size_t)(idx_vExtended_j + row)] = idx_vExtended_j + row - 1;
305 11286 non_mimic_parents_fromRow[(size_t)(idx_vExtended_j + row)] = idx_vExtended_j + row - 1;
306 11286 nvSubtree_fromRow[(size_t)(idx_vExtended_j + row)] = nvSubtree[joint] - row;
307 11286 start_idx_v_fromRow[(size_t)(idx_vExtended_j + row)] =
308 start_idx_v_fromRow[(size_t)idx_vExtended_j];
309 11286 end_idx_v_fromRow[(size_t)(idx_vExtended_j + row)] =
310 end_idx_v_fromRow[(size_t)idx_vExtended_j];
311 11286 idx_vExtended_to_idx_v_fromRow[(size_t)(idx_vExtended_j + row)] =
312 11286 idx_vExtended_to_idx_v_fromRow[(size_t)idx_vExtended_j] + row;
313 }
314 }
315 2321 }
316
317 template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
318 inline void
319 2321 DataTpl<Scalar, Options, JointCollectionTpl>::computeSupports_fromRow(const Model & model)
320 {
321 typedef typename Model::JointIndex JointIndex;
322
323
2/2
✓ Branch 0 taken 60242 times.
✓ Branch 1 taken 2321 times.
62563 for (JointIndex joint_id = 1; joint_id < (JointIndex)(model.njoints); joint_id++)
324 {
325
1/2
✓ Branch 2 taken 60242 times.
✗ Branch 3 not taken.
60242 const int nvj = nv(model.joints[joint_id]);
326
1/2
✓ Branch 2 taken 60242 times.
✗ Branch 3 not taken.
60242 const int idx_vj = idx_v(model.joints[joint_id]);
327
328
2/4
✓ Branch 0 taken 60242 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 60242 times.
✗ Branch 3 not taken.
60242 assert(idx_vj >= 0 && idx_vj < model.nv);
329
330 60242 const int parent_fromRow = parents_fromRow[(size_t)idx_vj];
331
332
2/2
✓ Branch 0 taken 57931 times.
✓ Branch 1 taken 2311 times.
60242 if (parent_fromRow >= 0)
333
1/2
✓ Branch 3 taken 57931 times.
✗ Branch 4 not taken.
57931 supports_fromRow[(size_t)idx_vj] = supports_fromRow[(size_t)parent_fromRow];
334
335
1/2
✓ Branch 2 taken 60242 times.
✗ Branch 3 not taken.
60242 supports_fromRow[(size_t)idx_vj].push_back(idx_vj);
336
337
2/2
✓ Branch 0 taken 11286 times.
✓ Branch 1 taken 60242 times.
71528 for (int row = 1; row < nvj; ++row)
338 {
339
1/2
✓ Branch 3 taken 11286 times.
✗ Branch 4 not taken.
11286 supports_fromRow[(size_t)(idx_vj + row)] = supports_fromRow[(size_t)(idx_vj + row - 1)];
340
1/2
✓ Branch 2 taken 11286 times.
✗ Branch 3 not taken.
11286 supports_fromRow[(size_t)(idx_vj + row)].push_back(idx_vj + row);
341 }
342 }
343 2321 }
344
345 template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
346 11 bool operator==(
347 const DataTpl<Scalar, Options, JointCollectionTpl> & data1,
348 const DataTpl<Scalar, Options, JointCollectionTpl> & data2)
349 {
350 11 bool value =
351
2/4
✓ Branch 2 taken 11 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 11 times.
✗ Branch 6 not taken.
22 data1.joints == data2.joints && data1.a == data2.a && data1.oa == data2.oa
352
2/4
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
11 && data1.oa_drift == data2.oa_drift && data1.oa_augmented == data2.oa_augmented
353
3/6
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 11 times.
✗ Branch 8 not taken.
11 && data1.a_gf == data2.a_gf && data1.oa_gf == data2.oa_gf && data1.v == data2.v
354
3/6
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 11 times.
✗ Branch 8 not taken.
11 && data1.ov == data2.ov && data1.f == data2.f && data1.of == data2.of
355
3/6
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 11 times.
✗ Branch 8 not taken.
11 && data1.of_augmented == data2.of_augmented && data1.h == data2.h && data1.oh == data2.oh
356
4/6
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
11 && data1.oMi == data2.oMi && data1.liMi == data2.liMi && data1.tau == data2.tau
357
3/6
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
10 && data1.nle == data2.nle && data1.g == data2.g && data1.oMf == data2.oMf
358
3/6
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
10 && data1.Ycrb == data2.Ycrb && data1.dYcrb == data2.dYcrb && data1.M == data2.M
359
3/6
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
10 && data1.Minv == data2.Minv && data1.C == data2.C && data1.dHdq == data2.dHdq
360
3/6
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
10 && data1.dFdq == data2.dFdq && data1.dFdv == data2.dFdv && data1.dFda == data2.dFda
361
3/6
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
10 && data1.SDinv == data2.SDinv && data1.UDinv == data2.UDinv && data1.IS == data2.IS
362
3/6
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
10 && data1.vxI == data2.vxI && data1.Ivx == data2.Ivx && data1.oinertias == data2.oinertias
363
3/6
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
10 && data1.oYcrb == data2.oYcrb && data1.doYcrb == data2.doYcrb && data1.ddq == data2.ddq
364
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 && data1.Yaba == data2.Yaba && data1.oYaba == data2.oYaba
365
3/6
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
10 && data1.oYaba_contact == data2.oYaba_contact && data1.oL == data2.oL && data1.oK == data2.oK
366
3/6
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
10 && data1.u == data2.u && data1.Ag == data2.Ag && data1.dAg == data2.dAg
367
3/6
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
10 && data1.hg == data2.hg && data1.dhg == data2.dhg && data1.Ig == data2.Ig
368
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 && data1.Fcrb == data2.Fcrb && data1.lastChild == data2.lastChild
369
1/2
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
10 && data1.nvSubtree == data2.nvSubtree
370
1/2
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
10 && data1.start_idx_v_fromRow == data2.start_idx_v_fromRow
371
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 && data1.end_idx_v_fromRow == data2.end_idx_v_fromRow && data1.U == data2.U
372
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 && data1.D == data2.D && data1.Dinv == data2.Dinv
373
1/2
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
10 && data1.parents_fromRow == data2.parents_fromRow
374
1/2
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
10 && data1.mimic_parents_fromRow == data2.mimic_parents_fromRow
375
1/2
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
10 && data1.non_mimic_parents_fromRow == data2.non_mimic_parents_fromRow
376
1/2
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
10 && data1.idx_vExtended_to_idx_v_fromRow == data2.idx_vExtended_to_idx_v_fromRow
377
1/2
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
10 && data1.mimic_subtree_joint == data2.mimic_subtree_joint
378
1/2
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
10 && data1.supports_fromRow == data2.supports_fromRow
379
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 && data1.nvSubtree_fromRow == data2.nvSubtree_fromRow && data1.J == data2.J
380
3/6
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
10 && data1.dJ == data2.dJ && data1.ddJ == data2.ddJ && data1.psid == data2.psid
381
3/6
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
10 && data1.psidd == data2.psidd && data1.dVdq == data2.dVdq && data1.dAdq == data2.dAdq
382
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 && data1.dAdv == data2.dAdv && data1.dtau_dq == data2.dtau_dq
383
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 && data1.dtau_dv == data2.dtau_dv && data1.ddq_dq == data2.ddq_dq
384
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 && data1.ddq_dv == data2.ddq_dv && data1.dvc_dq == data2.dvc_dq
385
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 && data1.dac_dq == data2.dac_dq && data1.dac_dv == data2.dac_dv
386
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 && data1.dac_da == data2.dac_da && data1.osim == data2.osim
387
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 && data1.dlambda_dq == data2.dlambda_dq && data1.dlambda_dv == data2.dlambda_dv
388
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 && data1.dlambda_dtau == data2.dlambda_dtau && data1.dlambda_dx_prox == data2.dlambda_dx_prox
389
3/6
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
10 && data1.drhs_prox == data2.drhs_prox && data1.iMf == data2.iMf && data1.com == data2.com
390
3/6
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
10 && data1.vcom == data2.vcom && data1.acom == data2.acom && data1.mass == data2.mass
391
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
10 && data1.Jcom == data2.Jcom && data1.kinetic_energy == data2.kinetic_energy
392
1/2
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
10 && data1.potential_energy == data2.potential_energy
393
2/4
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
10 && data1.mechanical_energy == data2.mechanical_energy && data1.JMinvJt == data2.JMinvJt
394
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 && data1.lambda_c == data2.lambda_c && data1.lambda_c_prox == data2.lambda_c_prox
395
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 && data1.diff_lambda_c == data2.diff_lambda_c && data1.sDUiJt == data2.sDUiJt
396
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 && data1.torque_residual == data2.torque_residual && data1.dq_after == data2.dq_after
397
2/4
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
10 && data1.impulse_c == data2.impulse_c && data1.staticRegressor == data2.staticRegressor
398
1/2
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
10 && data1.bodyRegressor == data2.bodyRegressor
399
1/2
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
10 && data1.jointTorqueRegressor == data2.jointTorqueRegressor
400 // && data1.contact_chol == data2.contact_chol
401
2/4
✓ Branch 0 taken 11 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
22 && data1.primal_dual_contact_solution == data2.primal_dual_contact_solution;
402
403 // operator== for Eigen::Tensor provides an Expression which might be not evaluated as a boolean
404
2/6
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
22 value &= Tensor<bool, 0>((data1.kinematic_hessians == data2.kinematic_hessians).all())(0)
405
6/14
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 11 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 11 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 11 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 11 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
22 && Tensor<bool, 0>((data1.d2tau_dqdq == data2.d2tau_dqdq).all())(0)
406
6/14
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 11 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 11 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 11 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 11 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
22 && Tensor<bool, 0>((data1.d2tau_dvdv == data2.d2tau_dvdv).all())(0)
407
6/14
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 11 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 11 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 11 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 11 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
22 && Tensor<bool, 0>((data1.d2tau_dqdv == data2.d2tau_dqdv).all())(0)
408
10/22
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 11 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 11 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 11 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 11 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 11 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 11 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 11 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 11 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
33 && Tensor<bool, 0>((data1.d2tau_dadq == data2.d2tau_dadq).all())(0);
409
410 11 return value;
411 }
412
413 template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
414 1 bool operator!=(
415 const DataTpl<Scalar, Options, JointCollectionTpl> & data1,
416 const DataTpl<Scalar, Options, JointCollectionTpl> & data2)
417 {
418 1 return !(data1 == data2);
419 }
420
421 } // namespace pinocchio
422
423 /// @endcond
424
425 #endif // ifndef __pinocchio_multibody_data_hxx__
426