6#ifdef ALIGATOR_WITH_PINOCCHIO
10#include <pinocchio/multibody/model.hpp>
11#include <pinocchio/multibody/data.hpp>
15template <
typename Scalar>
struct KinodynamicsFwdDataTpl;
31template <
typename _Scalar>
33 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
36 using Base = ODEAbstractTpl<Scalar>;
37 using BaseData = ContinuousDynamicsDataTpl<Scalar>;
38 using ContDataAbstract = ContinuousDynamicsDataTpl<Scalar>;
39 using Data = KinodynamicsFwdDataTpl<Scalar>;
40 using Manifold = MultibodyPhaseSpace<Scalar>;
41 using Model = pinocchio::ModelTpl<Scalar>;
42 using Matrix3s = Eigen::Matrix<Scalar, 3, 3>;
52 std::vector<bool> contact_states_;
53 std::vector<pinocchio::FrameIndex> contact_ids_;
55 const Manifold &space()
const {
return space_; }
57 KinodynamicsFwdDynamicsTpl(
58 const Manifold &state,
const Model &model,
const Vector3s &gravity,
59 const std::vector<bool> &contact_states,
60 const std::vector<pinocchio::FrameIndex> &contact_ids,
61 const int force_size);
63 void forward(
const ConstVectorRef &x,
const ConstVectorRef &u,
64 BaseData &data)
const;
65 void dForward(
const ConstVectorRef &x,
const ConstVectorRef &u,
66 BaseData &data)
const;
68 shared_ptr<ContDataAbstract> createData()
const;
71template <
typename Scalar>
73 using Base = ContinuousDynamicsDataTpl<Scalar>;
74 using PinData = pinocchio::DataTpl<Scalar>;
75 using VectorXs =
typename math_types<Scalar>::VectorXs;
76 using Matrix6Xs =
typename math_types<Scalar>::Matrix6Xs;
77 using Matrix3Xs =
typename math_types<Scalar>::Matrix3Xs;
78 using Matrix3s = Eigen::Matrix<Scalar, 3, 3>;
79 using Matrix6s = Eigen::Matrix<Scalar, 6, 6>;
80 using Vector6s = Eigen::Matrix<Scalar, 6, 1>;
96 Eigen::PartialPivLU<Eigen::Matrix<Scalar, 6, 6>> PivLU_;
98 KinodynamicsFwdDataTpl(
const KinodynamicsFwdDynamicsTpl<Scalar> *model);
101#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
102extern template struct KinodynamicsFwdDynamicsTpl<context::Scalar>;
103extern template struct KinodynamicsFwdDataTpl<context::Scalar>;
#define ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
::aligator::context::Scalar Scalar
ManifoldAbstractTpl< Scalar > Manifold
pinocchio::DataTpl< Scalar, Options > PinData
Namespace for modelling system dynamics.
typename math_types< Scalar >::Vector3s Vector3s
Defines a class representing ODEs.
Data struct for ContinuousDynamicsAbstractTpl.
Base class for ODE dynamics .