aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
kinodynamics-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
8
#include <Eigen/LU>
9
#include "
aligator/modelling/spaces/multibody.hpp
"
10
#include <pinocchio/multibody/model.hpp>
11
#include <pinocchio/multibody/data.hpp>
12
13
namespace
aligator
{
14
namespace
dynamics
{
15
template
<
typename
Scalar>
struct
KinodynamicsFwdDataTpl
;
16
31
template
<
typename
_Scalar>
32
struct
KinodynamicsFwdDynamicsTpl
:
ODEAbstractTpl
<_Scalar> {
33
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
34
using
Scalar
= _Scalar;
35
ALIGATOR_DYNAMIC_TYPEDEFS
(
Scalar
);
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>;
43
44
using
Base::nu_
;
45
46
Manifold
space_
;
47
Model
pin_model_
;
48
double
mass_
;
49
Vector3s
gravity_
;
50
int
force_size_
;
51
52
std::vector<bool>
contact_states_
;
53
std::vector<pinocchio::FrameIndex>
contact_ids_
;
54
55
const
Manifold
&
space
()
const
{
return
space_
; }
56
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);
62
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
;
67
68
shared_ptr<ContDataAbstract>
createData
()
const
;
69
};
70
71
template
<
typename
Scalar>
72
struct
KinodynamicsFwdDataTpl
:
ContinuousDynamicsDataTpl
<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>;
81
82
PinData
pin_data_
;
83
Matrix6Xs
dh_dq_
;
84
Matrix6Xs
dhdot_dq_
;
85
Matrix6Xs
dhdot_dv_
;
86
Matrix6Xs
dhdot_da_
;
87
Matrix6Xs
temp1_
;
88
Matrix3Xs
temp2_
;
89
Matrix6Xs
fJf_
;
90
VectorXs
v0_
;
91
VectorXs
a0_
;
92
93
Vector6s
cforces_
;
94
Matrix3s
Jtemp_
;
95
Matrix6s
Agu_inv_
;
96
Eigen::PartialPivLU<Eigen::Matrix<Scalar, 6, 6>>
PivLU_
;
97
98
KinodynamicsFwdDataTpl
(
const
KinodynamicsFwdDynamicsTpl<Scalar>
*model);
99
};
100
101
#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
102
extern
template
struct
KinodynamicsFwdDynamicsTpl<context::Scalar>
;
103
extern
template
struct
KinodynamicsFwdDataTpl<context::Scalar>
;
104
#endif
105
106
}
// namespace dynamics
107
}
// namespace aligator
108
109
#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::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::KinodynamicsFwdDataTpl
Definition
kinodynamics-fwd.hpp:72
aligator::dynamics::KinodynamicsFwdDataTpl::fJf_
Matrix6Xs fJf_
Definition
kinodynamics-fwd.hpp:89
aligator::dynamics::KinodynamicsFwdDataTpl::Jtemp_
Matrix3s Jtemp_
Definition
kinodynamics-fwd.hpp:94
aligator::dynamics::KinodynamicsFwdDataTpl::cforces_
Vector6s cforces_
Definition
kinodynamics-fwd.hpp:93
aligator::dynamics::KinodynamicsFwdDataTpl::Matrix6Xs
typename math_types< Scalar >::Matrix6Xs Matrix6Xs
Definition
kinodynamics-fwd.hpp:76
aligator::dynamics::KinodynamicsFwdDataTpl::temp1_
Matrix6Xs temp1_
Definition
kinodynamics-fwd.hpp:87
aligator::dynamics::KinodynamicsFwdDataTpl::Agu_inv_
Matrix6s Agu_inv_
Definition
kinodynamics-fwd.hpp:95
aligator::dynamics::KinodynamicsFwdDataTpl::dh_dq_
Matrix6Xs dh_dq_
Definition
kinodynamics-fwd.hpp:83
aligator::dynamics::KinodynamicsFwdDataTpl::Vector6s
Eigen::Matrix< Scalar, 6, 1 > Vector6s
Definition
kinodynamics-fwd.hpp:80
aligator::dynamics::KinodynamicsFwdDataTpl::dhdot_da_
Matrix6Xs dhdot_da_
Definition
kinodynamics-fwd.hpp:86
aligator::dynamics::KinodynamicsFwdDataTpl::Matrix3s
Eigen::Matrix< Scalar, 3, 3 > Matrix3s
Definition
kinodynamics-fwd.hpp:78
aligator::dynamics::KinodynamicsFwdDataTpl::KinodynamicsFwdDataTpl
KinodynamicsFwdDataTpl(const KinodynamicsFwdDynamicsTpl< Scalar > *model)
aligator::dynamics::KinodynamicsFwdDataTpl::VectorXs
typename math_types< Scalar >::VectorXs VectorXs
Definition
kinodynamics-fwd.hpp:75
aligator::dynamics::KinodynamicsFwdDataTpl::PinData
pinocchio::DataTpl< Scalar > PinData
Definition
kinodynamics-fwd.hpp:74
aligator::dynamics::KinodynamicsFwdDataTpl::temp2_
Matrix3Xs temp2_
Definition
kinodynamics-fwd.hpp:88
aligator::dynamics::KinodynamicsFwdDataTpl::a0_
VectorXs a0_
Definition
kinodynamics-fwd.hpp:91
aligator::dynamics::KinodynamicsFwdDataTpl::PivLU_
Eigen::PartialPivLU< Eigen::Matrix< Scalar, 6, 6 > > PivLU_
Definition
kinodynamics-fwd.hpp:96
aligator::dynamics::KinodynamicsFwdDataTpl::v0_
VectorXs v0_
Definition
kinodynamics-fwd.hpp:90
aligator::dynamics::KinodynamicsFwdDataTpl::dhdot_dq_
Matrix6Xs dhdot_dq_
Definition
kinodynamics-fwd.hpp:84
aligator::dynamics::KinodynamicsFwdDataTpl::pin_data_
PinData pin_data_
Definition
kinodynamics-fwd.hpp:82
aligator::dynamics::KinodynamicsFwdDataTpl::dhdot_dv_
Matrix6Xs dhdot_dv_
Definition
kinodynamics-fwd.hpp:85
aligator::dynamics::KinodynamicsFwdDataTpl::Matrix3Xs
typename math_types< Scalar >::Matrix3Xs Matrix3Xs
Definition
kinodynamics-fwd.hpp:77
aligator::dynamics::KinodynamicsFwdDataTpl::Matrix6s
Eigen::Matrix< Scalar, 6, 6 > Matrix6s
Definition
kinodynamics-fwd.hpp:79
aligator::dynamics::KinodynamicsFwdDataTpl::Base
ContinuousDynamicsDataTpl< Scalar > Base
Definition
kinodynamics-fwd.hpp:73
aligator::dynamics::KinodynamicsFwdDynamicsTpl
Nonlinear centroidal and full kinematics forward dynamics.
Definition
kinodynamics-fwd.hpp:32
aligator::dynamics::KinodynamicsFwdDynamicsTpl::BaseData
ContinuousDynamicsDataTpl< Scalar > BaseData
Definition
kinodynamics-fwd.hpp:37
aligator::dynamics::KinodynamicsFwdDynamicsTpl::space
const Manifold & space() const
Definition
kinodynamics-fwd.hpp:55
aligator::dynamics::KinodynamicsFwdDynamicsTpl::dForward
void dForward(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
Evaluate the vector field Jacobians.
aligator::dynamics::KinodynamicsFwdDynamicsTpl::contact_ids_
std::vector< pinocchio::FrameIndex > contact_ids_
Definition
kinodynamics-fwd.hpp:53
aligator::dynamics::KinodynamicsFwdDynamicsTpl::KinodynamicsFwdDynamicsTpl
KinodynamicsFwdDynamicsTpl(const Manifold &state, const Model &model, const Vector3s &gravity, const std::vector< bool > &contact_states, const std::vector< pinocchio::FrameIndex > &contact_ids, const int force_size)
aligator::dynamics::KinodynamicsFwdDynamicsTpl::space_
Manifold space_
Definition
kinodynamics-fwd.hpp:46
aligator::dynamics::KinodynamicsFwdDynamicsTpl::Scalar
_Scalar Scalar
Definition
kinodynamics-fwd.hpp:34
aligator::dynamics::KinodynamicsFwdDynamicsTpl::Data
KinodynamicsFwdDataTpl< Scalar > Data
Definition
kinodynamics-fwd.hpp:39
aligator::dynamics::KinodynamicsFwdDynamicsTpl::Model
pinocchio::ModelTpl< Scalar > Model
Definition
kinodynamics-fwd.hpp:41
aligator::dynamics::KinodynamicsFwdDynamicsTpl::mass_
double mass_
Definition
kinodynamics-fwd.hpp:48
aligator::dynamics::KinodynamicsFwdDynamicsTpl::force_size_
int force_size_
Definition
kinodynamics-fwd.hpp:50
aligator::dynamics::KinodynamicsFwdDynamicsTpl::ALIGATOR_DYNAMIC_TYPEDEFS
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
aligator::dynamics::KinodynamicsFwdDynamicsTpl::ContDataAbstract
ContinuousDynamicsDataTpl< Scalar > ContDataAbstract
Definition
kinodynamics-fwd.hpp:38
aligator::dynamics::KinodynamicsFwdDynamicsTpl::Manifold
MultibodyPhaseSpace< Scalar > Manifold
Definition
kinodynamics-fwd.hpp:40
aligator::dynamics::KinodynamicsFwdDynamicsTpl::forward
void forward(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
Evaluate the ODE vector field: this returns the value of .
aligator::dynamics::KinodynamicsFwdDynamicsTpl::Matrix3s
Eigen::Matrix< Scalar, 3, 3 > Matrix3s
Definition
kinodynamics-fwd.hpp:42
aligator::dynamics::KinodynamicsFwdDynamicsTpl::createData
shared_ptr< ContDataAbstract > createData() const
Create a data holder instance.
aligator::dynamics::KinodynamicsFwdDynamicsTpl::pin_model_
Model pin_model_
Definition
kinodynamics-fwd.hpp:47
aligator::dynamics::KinodynamicsFwdDynamicsTpl::Base
ODEAbstractTpl< Scalar > Base
Definition
kinodynamics-fwd.hpp:36
aligator::dynamics::KinodynamicsFwdDynamicsTpl::gravity_
Vector3s gravity_
Definition
kinodynamics-fwd.hpp:49
aligator::dynamics::KinodynamicsFwdDynamicsTpl::contact_states_
std::vector< bool > contact_states_
Definition
kinodynamics-fwd.hpp:52
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
kinodynamics-fwd.hpp
Generated by
1.17.0