aligator  0.15.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
centroidal-acceleration.hpp
Go to the documentation of this file.
1#pragma once
2
5
6namespace aligator {
7
8template <typename Scalar> struct CentroidalAccelerationDataTpl;
9
20
21template <typename _Scalar>
23
24public:
25 using Scalar = _Scalar;
28 using BaseData = typename Base::Data;
31
32 CentroidalAccelerationResidualTpl(const int ndx, const int nu,
33 const double mass, const Vector3s &gravity,
34 const ContactMap &contact_map,
35 const int force_size)
36 : Base(ndx, nu, 3)
37 , contact_map_(contact_map)
38 , nk_(size_t(nu) / size_t(force_size))
39 , mass_(mass)
40 , gravity_(gravity)
41 , force_size_(force_size) {
42 if (contact_map.size_ != nk_) {
43 ALIGATOR_DOMAIN_ERROR(
44 fmt::format("Contact ids and nk should be the same: now "
45 "({} and {}).",
46 contact_map.size_, nk_));
47 }
48 }
49
50 void evaluate(const ConstVectorRef &, const ConstVectorRef &u,
51 BaseData &data) const;
52
53 void computeJacobians(const ConstVectorRef &, const ConstVectorRef &,
54 BaseData &data) const;
55
56 shared_ptr<BaseData> createData() const {
57 return std::make_shared<Data>(this);
58 }
59
61
62protected:
63 size_t nk_;
64 double mass_;
65 Vector3s gravity_;
67};
68
69template <typename Scalar>
77
78} // namespace aligator
79
80#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
81#include "aligator/modelling/centroidal/centroidal-acceleration.txx"
82#endif
Base definitions for ternary functions.
Main package namespace.
CentroidalAccelerationDataTpl(const CentroidalAccelerationResidualTpl< Scalar > *model)
This residual returns the linear acceleration of a centroidal model with state , computed from the ex...
CentroidalAccelerationDataTpl< Scalar > Data
CentroidalAccelerationResidualTpl(const int ndx, const int nu, const double mass, const Vector3s &gravity, const ContactMap &contact_map, const int force_size)
shared_ptr< BaseData > createData() const
Instantiate a Data object.
void computeJacobians(const ConstVectorRef &, const ConstVectorRef &, BaseData &data) const
void evaluate(const ConstVectorRef &, const ConstVectorRef &u, BaseData &data) const
Contact map for centroidal costs and dynamics.
StageFunctionDataTpl(const int ndx, const int nu, const int nr)
const int nu
Control dimension.
StageFunctionDataTpl< Scalar > Data
StageFunctionTpl(const int ndx, const int nu, const int nr)