aligator  0.14.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
state-wrap.hpp
Go to the documentation of this file.
1#pragma once
2
5
6#include <crocoddyl/core/state-base.hpp>
7#include <boost/shared_ptr.hpp>
8
10
13template <typename _Scalar>
15 using Scalar = _Scalar;
17 using TangentVectorType = Eigen::Matrix<Scalar, Eigen::Dynamic, 1>;
18
19 using StateAbstract = crocoddyl::StateAbstractTpl<Scalar>;
20
21 shared_ptr<StateAbstract> croc_state;
22
23 explicit StateWrapperTpl(const shared_ptr<StateAbstract> &state)
24 : croc_state(state) {}
25
26 int nx() const { return (int)croc_state->get_nx(); }
27 int ndx() const { return (int)croc_state->get_ndx(); }
28
29 void neutral_impl(VectorRef out) const { out = croc_state->zero(); }
30 void rand_impl(VectorRef out) const { out = croc_state->rand(); }
31
32 void integrate_impl(const ConstVectorRef &x, const ConstVectorRef &v,
33 VectorRef out) const {
34 croc_state->integrate(x, v, out);
35 }
36
37 void Jintegrate_impl(const ConstVectorRef &x, const ConstVectorRef &v,
38 MatrixRef Jout, int arg) const {
39 croc_state->Jintegrate(x, v, Jout, Jout, convert_to_firstsecond(arg));
40 }
41
42 void difference_impl(const ConstVectorRef &x0, const ConstVectorRef &x1,
43 VectorRef out) const {
44 croc_state->diff(x0, x1, out);
45 }
46
47 void Jdifference_impl(const ConstVectorRef &x0, const ConstVectorRef &x1,
48 MatrixRef Jout, int arg) const {
49 croc_state->Jdiff(x0, x1, Jout, Jout, convert_to_firstsecond(arg));
50 }
51
52 void JintegrateTransport_impl(const ConstVectorRef &x,
53 const ConstVectorRef &v, MatrixRef Jout,
54 int arg) const {
55 croc_state->JintegrateTransport(x, v, Jout, convert_to_firstsecond(arg));
56 }
57
58 static crocoddyl::Jcomponent convert_to_firstsecond(int arg) {
59 if (arg == 0) {
60 return crocoddyl::first;
61 } else if (arg == 1) {
62 return crocoddyl::second;
63 } else {
64 return crocoddyl::both;
65 }
66 }
67};
68
69#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
70extern template struct StateWrapperTpl<context::Scalar>;
71#endif
72
73} // namespace aligator::compat::croc
Headers for the Crocoddyl compatibility module.
Base class for manifolds, to use in cost funcs, solvers...
Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > TangentVectorType
static crocoddyl::Jcomponent convert_to_firstsecond(int arg)
void rand_impl(VectorRef out) const
crocoddyl::StateAbstractTpl< Scalar > StateAbstract
void JintegrateTransport_impl(const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
void Jdifference_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, MatrixRef Jout, int arg) const
StateWrapperTpl(const shared_ptr< StateAbstract > &state)
void difference_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, VectorRef out) const
Implementation of the manifold retraction operation.
void Jintegrate_impl(const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
int nx() const
Get manifold representation dimension.
void integrate_impl(const ConstVectorRef &x, const ConstVectorRef &v, VectorRef out) const
Perform the manifold integration operation.
int ndx() const
Get manifold tangent space dimension.
void neutral_impl(VectorRef out) const