aligator  0.15.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Loading...
Searching...
No Matches
kinodynamics-fwd.hpp
Go to the documentation of this file.
1
2#pragma once
3
5
6#ifdef ALIGATOR_WITH_PINOCCHIO
7
8#include <Eigen/LU>
10#include <pinocchio/multibody/model.hpp>
11#include <pinocchio/multibody/data.hpp>
12
13namespace aligator {
14namespace dynamics {
15template <typename Scalar> struct KinodynamicsFwdDataTpl;
16
31template <typename _Scalar>
33 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
34 using Scalar = _Scalar;
41 using Model = pinocchio::ModelTpl<Scalar>;
42 using Matrix3s = Eigen::Matrix<Scalar, 3, 3>;
43
44 using Base::nu_;
45
48 double mass_;
49 Vector3s gravity_;
51
52 std::vector<bool> contact_states_;
53 std::vector<pinocchio::FrameIndex> contact_ids_;
54
55 const Manifold &space() const { return space_; }
56
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
71template <typename Scalar>
100
101#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
103extern template struct KinodynamicsFwdDataTpl<context::Scalar>;
104#endif
105
106} // namespace dynamics
107} // namespace aligator
108
109#endif
Namespace for modelling system dynamics.
Main package namespace.
Defines a class representing ODEs.
The tangent bundle of a multibody configuration group.
Data struct for ContinuousDynamicsAbstractTpl.
typename math_types< Scalar >::Matrix6Xs Matrix6Xs
KinodynamicsFwdDataTpl(const KinodynamicsFwdDynamicsTpl< Scalar > *model)
typename math_types< Scalar >::VectorXs VectorXs
Eigen::PartialPivLU< Eigen::Matrix< Scalar, 6, 6 > > PivLU_
typename math_types< Scalar >::Matrix3Xs Matrix3Xs
ContinuousDynamicsDataTpl< Scalar > Base
Nonlinear centroidal and full kinematics forward dynamics.
ContinuousDynamicsDataTpl< Scalar > BaseData
void dForward(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
Evaluate the vector field Jacobians.
std::vector< pinocchio::FrameIndex > contact_ids_
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)
ContinuousDynamicsDataTpl< Scalar > ContDataAbstract
void forward(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
Evaluate the ODE vector field: this returns the value of .
shared_ptr< ContDataAbstract > createData() const
Create a data holder instance.
Base class for ODE dynamics .
Typedefs for math (Eigen vectors, matrices) depending on scalar type.
Definition math.hpp:122