aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
multibody-free-fwd.hpp
Go to the documentation of this file.
1
2
#pragma once
3
4
#include "
aligator/modelling/dynamics/ode-abstract.hpp
"
5
6
#ifdef ALIGATOR_WITH_PINOCCHIO
7
#include "
aligator/modelling/spaces/multibody.hpp
"
8
#include <pinocchio/multibody/data.hpp>
9
10
namespace
aligator
{
11
namespace
dynamics
{
12
template
<
typename
Scalar>
struct
MultibodyFreeFwdDataTpl
;
13
22
template
<
typename
_Scalar>
23
struct
MultibodyFreeFwdDynamicsTpl
:
ODEAbstractTpl
<_Scalar> {
24
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
25
using
Scalar
= _Scalar;
26
ALIGATOR_DYNAMIC_TYPEDEFS
(
Scalar
);
27
using
Base
=
ODEAbstractTpl<Scalar>
;
28
using
BaseData
=
ContinuousDynamicsDataTpl<Scalar>
;
29
using
ContDataAbstract
=
ContinuousDynamicsDataTpl<Scalar>
;
30
using
Data
=
MultibodyFreeFwdDataTpl<Scalar>
;
31
using
Manifold
=
MultibodyPhaseSpace<Scalar>
;
32
using
PolyManifold
= xyz::polymorphic<Manifold>;
33
34
using
Base::nu_
;
35
36
Manifold
space_
;
37
MatrixXs
actuation_matrix_
;
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);
43
MultibodyFreeFwdDynamicsTpl
(
const
Manifold
&state);
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
64
private
:
65
Eigen::FullPivLU<MatrixXs> lu_decomp_;
66
Eigen::Index act_matrix_rank;
67
};
68
69
template
<
typename
Scalar>
70
struct
MultibodyFreeFwdDataTpl
:
ContinuousDynamicsDataTpl
<Scalar> {
71
using
Base
=
ContinuousDynamicsDataTpl<Scalar>
;
72
using
VectorXs
=
typename
math_types<Scalar>::VectorXs
;
73
using
MatrixXs
=
typename
math_types<Scalar>::MatrixXs
;
74
using
PinDataType
= pinocchio::DataTpl<Scalar>;
75
VectorXs
tau_
;
76
MatrixXs
dtau_dx_
;
77
MatrixXs
dtau_du_
;
78
PinDataType
pin_data_
;
79
MultibodyFreeFwdDataTpl
(
const
MultibodyFreeFwdDynamicsTpl<Scalar>
*cont_dyn);
80
};
81
82
#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
83
extern
template
struct
MultibodyFreeFwdDynamicsTpl<context::Scalar>
;
84
extern
template
struct
MultibodyFreeFwdDataTpl<context::Scalar>
;
85
#endif
86
87
}
// namespace dynamics
88
}
// namespace aligator
89
#endif
multibody.hpp
aligator::dynamics
Namespace for modelling system dynamics.
Definition
centroidal-fwd.hpp:10
aligator
Main package namespace.
Definition
action-model-wrap.hpp:14
ode-abstract.hpp
Defines a class representing ODEs.
aligator::MultibodyPhaseSpace
The tangent bundle of a multibody configuration group.
Definition
multibody.hpp:118
aligator::MultibodyPhaseSpace::getModel
const ModelType & getModel() const
Definition
multibody.hpp:122
aligator::dynamics::ContinuousDynamicsDataTpl
Data struct for ContinuousDynamicsAbstractTpl.
Definition
continuous-dynamics-abstract.hpp:64
aligator::dynamics::ContinuousDynamicsDataTpl< Scalar >::ContinuousDynamicsDataTpl
ContinuousDynamicsDataTpl(const int ndx, const int nu)
aligator::dynamics::MultibodyFreeFwdDataTpl
Definition
multibody-free-fwd.hpp:70
aligator::dynamics::MultibodyFreeFwdDataTpl::pin_data_
PinDataType pin_data_
Definition
multibody-free-fwd.hpp:78
aligator::dynamics::MultibodyFreeFwdDataTpl::dtau_dx_
MatrixXs dtau_dx_
Definition
multibody-free-fwd.hpp:76
aligator::dynamics::MultibodyFreeFwdDataTpl::MultibodyFreeFwdDataTpl
MultibodyFreeFwdDataTpl(const MultibodyFreeFwdDynamicsTpl< Scalar > *cont_dyn)
aligator::dynamics::MultibodyFreeFwdDataTpl::tau_
VectorXs tau_
Definition
multibody-free-fwd.hpp:75
aligator::dynamics::MultibodyFreeFwdDataTpl::Base
ContinuousDynamicsDataTpl< Scalar > Base
Definition
multibody-free-fwd.hpp:71
aligator::dynamics::MultibodyFreeFwdDataTpl::dtau_du_
MatrixXs dtau_du_
Definition
multibody-free-fwd.hpp:77
aligator::dynamics::MultibodyFreeFwdDataTpl::PinDataType
pinocchio::DataTpl< Scalar > PinDataType
Definition
multibody-free-fwd.hpp:74
aligator::dynamics::MultibodyFreeFwdDataTpl::MatrixXs
typename math_types< Scalar >::MatrixXs MatrixXs
Definition
multibody-free-fwd.hpp:73
aligator::dynamics::MultibodyFreeFwdDataTpl::VectorXs
typename math_types< Scalar >::VectorXs VectorXs
Definition
multibody-free-fwd.hpp:72
aligator::dynamics::MultibodyFreeFwdDynamicsTpl
Free-space multibody forward dynamics, using Pinocchio.
Definition
multibody-free-fwd.hpp:23
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::ntau
int ntau() const
Definition
multibody-free-fwd.hpp:40
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::forward
virtual void forward(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
Evaluate the ODE vector field: this returns the value of .
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::ContDataAbstract
ContinuousDynamicsDataTpl< Scalar > ContDataAbstract
Definition
multibody-free-fwd.hpp:29
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::ALIGATOR_DYNAMIC_TYPEDEFS
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::PolyManifold
xyz::polymorphic< Manifold > PolyManifold
Definition
multibody-free-fwd.hpp:32
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::Base
ODEAbstractTpl< Scalar > Base
Definition
multibody-free-fwd.hpp:27
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::MultibodyFreeFwdDynamicsTpl
MultibodyFreeFwdDynamicsTpl(const Manifold &state)
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::space
const Manifold & space() const
Definition
multibody-free-fwd.hpp:39
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::Manifold
MultibodyPhaseSpace< Scalar > Manifold
Definition
multibody-free-fwd.hpp:31
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::Data
MultibodyFreeFwdDataTpl< Scalar > Data
Definition
multibody-free-fwd.hpp:30
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::dForward
virtual void dForward(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
Evaluate the vector field Jacobians.
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::BaseData
ContinuousDynamicsDataTpl< Scalar > BaseData
Definition
multibody-free-fwd.hpp:28
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::MultibodyFreeFwdDynamicsTpl
MultibodyFreeFwdDynamicsTpl(const Manifold &state, const MatrixXs &actuation)
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::createData
shared_ptr< ContDataAbstract > createData() const
Create a data holder instance.
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::Scalar
_Scalar Scalar
Definition
multibody-free-fwd.hpp:25
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::space_
Manifold space_
Definition
multibody-free-fwd.hpp:36
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::isUnderactuated
bool isUnderactuated() const
Determine whether the system is underactuated.
Definition
multibody-free-fwd.hpp:50
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::getActuationMatrixRank
Eigen::Index getActuationMatrixRank() const
Definition
multibody-free-fwd.hpp:55
aligator::dynamics::MultibodyFreeFwdDynamicsTpl::actuation_matrix_
MatrixXs actuation_matrix_
Definition
multibody-free-fwd.hpp:37
aligator::dynamics::ODEAbstractTpl
Base class for ODE dynamics .
Definition
ode-abstract.hpp:14
aligator::dynamics::ODEAbstractTpl< Scalar >::nu_
const int nu_
aligator::math_types
Typedefs for math (Eigen vectors, matrices) depending on scalar type.
Definition
math.hpp:123
include
aligator
modelling
dynamics
multibody-free-fwd.hpp
Generated by
1.17.0