| 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 |