aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
state-wrap.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
aligator/context.hpp
"
4
#include "
aligator/core/manifold-base.hpp
"
5
6
#include <crocoddyl/core/state-base.hpp>
7
#include <boost/shared_ptr.hpp>
8
9
namespace
aligator::compat::croc
{
10
13
template
<
typename
_Scalar>
14
struct
StateWrapperTpl
:
ManifoldAbstractTpl
<_Scalar> {
15
public
:
16
using
Scalar
= _Scalar;
17
ALIGATOR_DYNAMIC_TYPEDEFS
(
Scalar
);
18
using
TangentVectorType
= Eigen::Matrix<Scalar, Eigen::Dynamic, 1>;
19
using
Base
=
ManifoldAbstractTpl<Scalar>
;
20
using
Base::ndx
;
21
using
Base::nx
;
22
23
using
StateAbstract
= crocoddyl::StateAbstractTpl<Scalar>;
24
25
shared_ptr<StateAbstract>
croc_state
;
26
27
explicit
StateWrapperTpl
(
const
shared_ptr<StateAbstract> &state)
28
:
Base
(int(state->get_nx()), int(state->get_ndx()))
29
,
croc_state
(state) {}
30
31
static
crocoddyl::Jcomponent
convert_to_firstsecond
(
int
arg) {
32
if
(arg == 0) {
33
return
crocoddyl::first;
34
}
else
if
(arg == 1) {
35
return
crocoddyl::second;
36
}
else
{
37
return
crocoddyl::both;
38
}
39
}
40
41
protected
:
42
void
neutral_impl
(VectorRef out)
const
{ out =
croc_state
->zero(); }
43
44
void
rand_impl
(VectorRef out)
const
{ out =
croc_state
->rand(); }
45
46
void
integrate_impl
(
const
ConstVectorRef &x,
const
ConstVectorRef &v,
47
VectorRef out)
const
{
48
croc_state
->integrate(x, v, out);
49
}
50
51
void
Jintegrate_impl
(
const
ConstVectorRef &x,
const
ConstVectorRef &v,
52
MatrixRef Jout,
int
arg)
const
{
53
croc_state
->Jintegrate(x, v, Jout, Jout,
convert_to_firstsecond
(arg));
54
}
55
56
void
difference_impl
(
const
ConstVectorRef &x0,
const
ConstVectorRef &x1,
57
VectorRef out)
const
{
58
croc_state
->diff(x0, x1, out);
59
}
60
61
void
Jdifference_impl
(
const
ConstVectorRef &x0,
const
ConstVectorRef &x1,
62
MatrixRef Jout,
int
arg)
const
{
63
croc_state
->Jdiff(x0, x1, Jout, Jout,
convert_to_firstsecond
(arg));
64
}
65
66
void
JintegrateTransport_impl
(
const
ConstVectorRef &x,
67
const
ConstVectorRef &v, MatrixRef Jout,
68
int
arg)
const
{
69
croc_state
->JintegrateTransport(x, v, Jout,
convert_to_firstsecond
(arg));
70
}
71
};
72
73
#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
74
extern
template
struct
StateWrapperTpl<context::Scalar>;
75
#endif
76
77
}
// namespace aligator::compat::croc
context.hpp
manifold-base.hpp
aligator::compat::croc
Headers for the Crocoddyl compatibility module.
Definition
action-model-wrap.hpp:16
aligator::ManifoldAbstractTpl::ManifoldAbstractTpl
ManifoldAbstractTpl(int nx, int ndx)
Definition
manifold-base.hpp:18
aligator::ManifoldAbstractTpl< Scalar >::nx
int nx() const
Definition
manifold-base.hpp:25
aligator::ManifoldAbstractTpl< Scalar >::ndx
int ndx() const
Definition
manifold-base.hpp:27
aligator::compat::croc::StateWrapperTpl< Scalar >::TangentVectorType
Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > TangentVectorType
Definition
state-wrap.hpp:18
aligator::compat::croc::StateWrapperTpl::convert_to_firstsecond
static crocoddyl::Jcomponent convert_to_firstsecond(int arg)
Definition
state-wrap.hpp:31
aligator::compat::croc::StateWrapperTpl::rand_impl
void rand_impl(VectorRef out) const
Definition
state-wrap.hpp:44
aligator::compat::croc::StateWrapperTpl< Scalar >::StateAbstract
crocoddyl::StateAbstractTpl< Scalar > StateAbstract
Definition
state-wrap.hpp:23
aligator::compat::croc::StateWrapperTpl::JintegrateTransport_impl
void JintegrateTransport_impl(const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
Definition
state-wrap.hpp:66
aligator::compat::croc::StateWrapperTpl::Jdifference_impl
void Jdifference_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, MatrixRef Jout, int arg) const
Definition
state-wrap.hpp:61
aligator::compat::croc::StateWrapperTpl::ALIGATOR_DYNAMIC_TYPEDEFS
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
aligator::compat::croc::StateWrapperTpl::StateWrapperTpl
StateWrapperTpl(const shared_ptr< StateAbstract > &state)
Definition
state-wrap.hpp:27
aligator::compat::croc::StateWrapperTpl::difference_impl
void difference_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, VectorRef out) const
Implementation of the manifold retraction operation.
Definition
state-wrap.hpp:56
aligator::compat::croc::StateWrapperTpl< Scalar >::Base
ManifoldAbstractTpl< Scalar > Base
Definition
state-wrap.hpp:19
aligator::compat::croc::StateWrapperTpl< Scalar >::croc_state
shared_ptr< StateAbstract > croc_state
Definition
state-wrap.hpp:25
aligator::compat::croc::StateWrapperTpl::Jintegrate_impl
void Jintegrate_impl(const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
Definition
state-wrap.hpp:51
aligator::compat::croc::StateWrapperTpl::integrate_impl
void integrate_impl(const ConstVectorRef &x, const ConstVectorRef &v, VectorRef out) const
Perform the manifold integration operation.
Definition
state-wrap.hpp:46
aligator::compat::croc::StateWrapperTpl::neutral_impl
void neutral_impl(VectorRef out) const
Definition
state-wrap.hpp:42
aligator::compat::croc::StateWrapperTpl< Scalar >::Scalar
Scalar Scalar
Definition
state-wrap.hpp:16
include
aligator
compat
crocoddyl
state-wrap.hpp
Generated by
1.17.0