aligator 0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Loading...
Searching...
No Matches
multibody-free-fwd.hpp
Go to the documentation of this file.
1
2#pragma once
3
5
6#ifdef ALIGATOR_WITH_PINOCCHIO
8#include <pinocchio/multibody/data.hpp>
9
10namespace aligator {
11namespace dynamics {
12template <typename Scalar> struct MultibodyFreeFwdDataTpl;
13
22template <typename _Scalar>
24 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
25 using Scalar = _Scalar;
32 using PolyManifold = xyz::polymorphic<Manifold>;
33
34 using Base::nu_;
35
38
39 const Manifold &space() const { return space_; }
40 int ntau() const { return space_.getModel().nv; }
41
42 MultibodyFreeFwdDynamicsTpl(const Manifold &state, const MatrixXs &actuation);
44
50 bool isUnderactuated() const {
51 long nv = space().getModel().nv;
52 return act_matrix_rank < nv;
53 }
54
55 Eigen::Index getActuationMatrixRank() const { return act_matrix_rank; }
56
57 virtual void forward(const ConstVectorRef &x, const ConstVectorRef &u,
58 BaseData &data) const;
59 virtual void dForward(const ConstVectorRef &x, const ConstVectorRef &u,
60 BaseData &data) const;
61
62 shared_ptr<ContDataAbstract> createData() const;
63
64private:
65 Eigen::FullPivLU<MatrixXs> lu_decomp_;
66 Eigen::Index act_matrix_rank;
67};
68
69template <typename Scalar>
81
82#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
84extern template struct MultibodyFreeFwdDataTpl<context::Scalar>;
85#endif
86
87} // namespace dynamics
88} // namespace aligator
89#endif
Namespace for modelling system dynamics.
Main package namespace.
Defines a class representing ODEs.
The tangent bundle of a multibody configuration group.
const ModelType & getModel() const
Data struct for ContinuousDynamicsAbstractTpl.
MultibodyFreeFwdDataTpl(const MultibodyFreeFwdDynamicsTpl< Scalar > *cont_dyn)
ContinuousDynamicsDataTpl< Scalar > Base
typename math_types< Scalar >::MatrixXs MatrixXs
typename math_types< Scalar >::VectorXs VectorXs
Free-space multibody forward dynamics, using Pinocchio.
virtual void forward(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
Evaluate the ODE vector field: this returns the value of .
ContinuousDynamicsDataTpl< Scalar > ContDataAbstract
virtual void dForward(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
Evaluate the vector field Jacobians.
ContinuousDynamicsDataTpl< Scalar > BaseData
MultibodyFreeFwdDynamicsTpl(const Manifold &state, const MatrixXs &actuation)
shared_ptr< ContDataAbstract > createData() const
Create a data holder instance.
bool isUnderactuated() const
Determine whether the system is underactuated.
Base class for ODE dynamics .
Typedefs for math (Eigen vectors, matrices) depending on scalar type.
Definition math.hpp:123