aligator  0.6.1
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
multibody-constraint-fwd.hpp
Go to the documentation of this file.
1
2#pragma once
3
5
6#include <proxsuite-nlp/modelling/spaces/multibody.hpp>
7#include <pinocchio/multibody/data.hpp>
8
9#include <pinocchio/algorithm/proximal.hpp>
10
11namespace aligator {
12namespace dynamics {
13template <typename Scalar> struct MultibodyConstraintFwdDataTpl;
14
19template <typename _Scalar>
21 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
22 using Scalar = _Scalar;
24 using Base = ODEAbstractTpl<Scalar>;
25 using BaseData = ODEDataTpl<Scalar>;
26 using ContDataAbstract = ContinuousDynamicsDataTpl<Scalar>;
27 using Data = MultibodyConstraintFwdDataTpl<Scalar>;
28 using RigidConstraintModelVector = PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(
29 pinocchio::RigidConstraintModel);
31 PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(pinocchio::RigidConstraintData);
32 using ProxSettings = pinocchio::ProximalSettingsTpl<Scalar>;
33 using Manifold = proxsuite::nlp::MultibodyPhaseSpace<Scalar>;
34
35 using ManifoldPtr = shared_ptr<Manifold>;
40
41 const Manifold &space() const { return *space_; }
42 int ntau() const { return space_->getModel().nv; }
43
45 const ManifoldPtr &state, const MatrixXs &actuation,
46 const RigidConstraintModelVector &constraint_models,
47 const ProxSettings &prox_settings);
48
49 virtual void forward(const ConstVectorRef &x, const ConstVectorRef &u,
50 BaseData &data) const;
51 virtual void dForward(const ConstVectorRef &x, const ConstVectorRef &u,
52 BaseData &data) const;
53
54 shared_ptr<ContDataAbstract> createData() const;
55};
56
57template <typename Scalar>
58struct MultibodyConstraintFwdDataTpl : ODEDataTpl<Scalar> {
59 using Base = ODEDataTpl<Scalar>;
60 using VectorXs = typename math_types<Scalar>::VectorXs;
61 using MatrixXs = typename math_types<Scalar>::MatrixXs;
62 using PinDataType = pinocchio::DataTpl<Scalar>;
64 PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(pinocchio::RigidConstraintData);
65
70 pinocchio::ProximalSettingsTpl<Scalar> settings;
74 const MultibodyConstraintFwdDynamicsTpl<Scalar> &cont_dyn);
75};
76
77} // namespace dynamics
78} // namespace aligator
79
80#include "aligator/modelling/dynamics/multibody-constraint-fwd.hxx"
81
82#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
83#include "aligator/modelling/dynamics/multibody-constraint-fwd.txx"
84#endif
Main package namespace.
Defines a class representing ODEs.
pinocchio::ProximalSettingsTpl< Scalar > settings
PinDataType pin_data_
shared_ptr to the underlying pinocchio::DataTpl object.
PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(pinocchio::RigidConstraintData) RigidConstraintDataVector
MultibodyConstraintFwdDataTpl(const MultibodyConstraintFwdDynamicsTpl< Scalar > &cont_dyn)
Constraint multibody forward dynamics, using Pinocchio.
MultibodyConstraintFwdDynamicsTpl(const ManifoldPtr &state, const MatrixXs &actuation, const RigidConstraintModelVector &constraint_models, const ProxSettings &prox_settings)
shared_ptr< ContDataAbstract > createData() const
Create a data holder instance.
virtual void forward(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
Evaluate the ODE vector field: this returns the value of .
PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR( pinocchio::RigidConstraintModel) RigidConstraintModelVector
virtual void dForward(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
Evaluate the vector field Jacobians.
proxsuite::nlp::MultibodyPhaseSpace< Scalar > Manifold
PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(pinocchio::RigidConstraintData) RigidConstraintDataVector
Base class for ODE dynamics .