14#include <boost/fusion/container/vector.hpp> 16#include <pinocchio/fwd.hpp> 17#include <pinocchio/context.hpp> 18#include <pinocchio/config.hpp> 19#include <pinocchio/macros.hpp> 20#include <pinocchio/unsupported.hpp> 22#include "pinocchio/utils/check.hpp" 24#include "pinocchio/math.hpp" 26#include "pinocchio/spatial.hpp" 28#include "pinocchio/multibody.hpp" 29#include "pinocchio/multibody/joint.hpp" 31#include "pinocchio/constraints.hpp" 32#include "pinocchio/algorithm/proximal.hpp" 33#include "pinocchio/algorithm/check-model.hpp" 34#include "pinocchio/algorithm/frames.hpp" 35#include "pinocchio/algorithm/rnea-derivatives.hpp" 36#include "pinocchio/algorithm/frames-derivatives.hpp" 37#include "pinocchio/algorithm/kinematics-derivatives.hpp" 38#include "pinocchio/algorithm/constraint-cholesky.hpp" 47 template<
typename,
int>
class JointCollectionTpl,
48 class ConstraintModelAllocator,
49 class ConstraintDataAllocator,
56 PINOCCHIO_UNSUPPORTED_MESSAGE(
"The API will change towards more flexibility")
57 inline
void computeConstraintDynamicsDerivatives(
58 const ModelTpl<Scalar, Options, JointCollectionTpl> & model,
59 DataTpl<Scalar, Options, JointCollectionTpl> & data,
60 const std::vector<RigidConstraintModelTpl<Scalar, Options>, ConstraintModelAllocator> &
62 std::vector<RigidConstraintDataTpl<Scalar, Options>, ConstraintDataAllocator> & contact_data,
63 const ProximalSettingsTpl<Scalar> & settings,
64 const Eigen::MatrixBase<MatrixType1> & ddq_partial_dq,
65 const Eigen::MatrixBase<MatrixType2> & ddq_partial_dv,
66 const Eigen::MatrixBase<MatrixType3> & ddq_partial_dtau,
67 const Eigen::MatrixBase<MatrixType4> & lambda_partial_dq,
68 const Eigen::MatrixBase<MatrixType5> & lambda_partial_dv,
69 const Eigen::MatrixBase<MatrixType6> & lambda_partial_dtau);
74 template<typename,
int> class JointCollectionTpl,
75 class ConstraintModelAllocator,
76 class ConstraintDataAllocator,
83 PINOCCHIO_UNSUPPORTED_MESSAGE(
"The API will change towards more flexibility")
84 inline
void computeConstraintDynamicsDerivatives(
85 const ModelTpl<Scalar, Options, JointCollectionTpl> & model,
86 DataTpl<Scalar, Options, JointCollectionTpl> & data,
87 const std::vector<RigidConstraintModelTpl<Scalar, Options>, ConstraintModelAllocator> &
89 std::vector<RigidConstraintDataTpl<Scalar, Options>, ConstraintDataAllocator> & contact_data,
90 const Eigen::MatrixBase<MatrixType1> & ddq_partial_dq,
91 const Eigen::MatrixBase<MatrixType2> & ddq_partial_dv,
92 const Eigen::MatrixBase<MatrixType3> & ddq_partial_dtau,
93 const Eigen::MatrixBase<MatrixType4> & lambda_partial_dq,
94 const Eigen::MatrixBase<MatrixType5> & lambda_partial_dv,
95 const Eigen::MatrixBase<MatrixType6> & lambda_partial_dtau)
97 ProximalSettingsTpl<Scalar> settings;
98 computeConstraintDynamicsDerivatives(
99 model, data, contact_models, contact_data, settings, ddq_partial_dq.const_cast_derived(),
100 ddq_partial_dv.const_cast_derived(), ddq_partial_dtau.const_cast_derived(),
101 lambda_partial_dq.const_cast_derived(), lambda_partial_dv.const_cast_derived(),
102 lambda_partial_dtau.const_cast_derived());
108 template<
typename,
int>
class JointCollectionTpl,
109 class ConstraintModelAllocator,
110 class ConstraintDataAllocator>
111 PINOCCHIO_UNSUPPORTED_MESSAGE(
"The API will change towards more flexibility")
112 inline
void computeConstraintDynamicsDerivatives(
113 const ModelTpl<Scalar, Options, JointCollectionTpl> & model,
114 DataTpl<Scalar, Options, JointCollectionTpl> & data,
115 const std::vector<RigidConstraintModelTpl<Scalar, Options>, ConstraintModelAllocator> &
117 std::vector<RigidConstraintDataTpl<Scalar, Options>, ConstraintDataAllocator> & contact_data,
118 const ProximalSettingsTpl<Scalar> & settings)
120 computeConstraintDynamicsDerivatives(
121 model, data, contact_models, contact_data, settings, data.ddq_dq, data.ddq_dv, data.ddq_dtau,
122 data.dlambda_dq, data.dlambda_dv, data.dlambda_dtau);
128 template<
typename,
int>
class JointCollectionTpl,
129 class ConstraintModelAllocator,
130 class ConstraintDataAllocator>
131 PINOCCHIO_UNSUPPORTED_MESSAGE(
"The API will change towards more flexibility")
132 inline
void computeConstraintDynamicsDerivatives(
133 const ModelTpl<Scalar, Options, JointCollectionTpl> & model,
134 DataTpl<Scalar, Options, JointCollectionTpl> & data,
135 const std::vector<RigidConstraintModelTpl<Scalar, Options>, ConstraintModelAllocator> &
137 std::vector<RigidConstraintDataTpl<Scalar, Options>, ConstraintDataAllocator> & contact_data)
139 ProximalSettingsTpl<Scalar> settings;
140 computeConstraintDynamicsDerivatives(model, data, contact_models, contact_data, settings);
146#include "pinocchio/src/algorithm/constrained-dynamics-derivatives.hxx" Main pinocchio namespace.