smooth_feedback
Control and estimation on Lie groups
Loading...
Searching...
No Matches
Public Types | Public Attributes | Static Public Attributes | List of all members
smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE > Struct Template Reference

Optimal control problem definition. More...

#include <ocp.hpp>

Public Types

using X = _X
 State space. More...
 
using U = _U
 Input space. More...
 
using Solution = OCPSolution< X, U, Nq, Ncr, Nce >
 Solution type corresponding to this problem. More...
 

Public Attributes

Theta theta
 Objective function \( \theta : R \times X \times X \times R^{n_q} \rightarrow R \). More...
 
f
 System dynamics \( f : R \times X \times U \rightarrow Tangent<X> \). More...
 
g
 Integrals \( g : R \times X \times U \rightarrow R^{n_q} \). More...
 
CR cr
 Running constraint \( c_r : R \times X \times U \rightarrow R^{n_{cr}} \). More...
 
Eigen::Vector< double, Ncrcrl = Eigen::Vector<double, Ncr>::Zero()
 Running constraint lower bound \( c_{rl} \in R^{n_{cr}} \). More...
 
Eigen::Vector< double, Ncrcru = Eigen::Vector<double, Ncr>::Zero()
 Running constraint upper bound \( c_{ru} \in R^{n_{cr}} \). More...
 
CE ce
 End constraint \( c_e : R \times X \times X \times R^{n_q} \rightarrow R^{n_{ce}} \). More...
 
Eigen::Vector< double, Ncecel = Eigen::Vector<double, Nce>::Zero()
 End constraint lower bound \( c_{el} \in R^{n_{ce}} \). More...
 
Eigen::Vector< double, Nceceu = Eigen::Vector<double, Nce>::Zero()
 End constraint upper bound \( c_{eu} \in R^{n_{ce}} \). More...
 

Static Public Attributes

static constexpr int Nx = Dof<X>
 State space dimension. More...
 
static constexpr int Nu = Dof<U>
 Input space dimension. More...
 
static constexpr int Nq = std::invoke_result_t<G, double, X, U>::SizeAtCompileTime
 Number of integrals. More...
 
static constexpr int Ncr = std::invoke_result_t<CR, double, X, U>::SizeAtCompileTime
 Number of running constraints. More...
 
static constexpr int Nce = std::invoke_result_t<CE, double, X, X, Eigen::Matrix<double, Nq, 1>>::SizeAtCompileTime
 Number of end constraints. More...
 

Detailed Description

template<LieGroup _X, Manifold _U, typename Theta, typename F, typename G, typename CR, typename CE>
struct smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >

Optimal control problem definition.

Template Parameters
_Xstate space
_Uinput space

Problem is defined on the interval \( t \in [0, t_f] \).

\[ \begin{cases} \min & \theta(t_f, x_0, x_f, q) \\ \text{s.t.} & x(0) = x_0 \\ & x(t_f) = x_f \\ & \dot x(t) = f(t, x(t), u(t)) \\ & q = \int_{0}^{t_f} g(t, x(t), u(t)) \mathrm{d}t \\ & c_{rl} \leq c_r(t, x(t), u(t)) \leq c_{ru} \quad t \in [0, t_f] \\ & c_{el} \leq c_e(t_f, x_0, x_f, q) \leq c_{eu} \end{cases} \]

The optimal control problem depends on arbitrary functions \( \theta, f, g, c_r, c_e \). The type of those functions are template pararamters in this structure.

Note
To enable automatic differentiation \( \theta, f, g, c_r, c_e \) must be templated over the scalar type.

Definition at line 51 of file ocp.hpp.

Member Typedef Documentation

◆ Solution

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
using smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::Solution = OCPSolution<X, U, Nq, Ncr, Nce>

Solution type corresponding to this problem.

Definition at line 70 of file ocp.hpp.

◆ U

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
using smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::U = _U

Input space.

Definition at line 56 of file ocp.hpp.

◆ X

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
using smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::X = _X

State space.

Definition at line 54 of file ocp.hpp.

Member Data Documentation

◆ ce

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
CE smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::ce

End constraint \( c_e : R \times X \times X \times R^{n_q} \rightarrow R^{n_{ce}} \).

Definition at line 94 of file ocp.hpp.

◆ cel

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
Eigen::Vector<double, Nce> smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::cel = Eigen::Vector<double, Nce>::Zero()

End constraint lower bound \( c_{el} \in R^{n_{ce}} \).

Definition at line 96 of file ocp.hpp.

◆ ceu

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
Eigen::Vector<double, Nce> smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::ceu = Eigen::Vector<double, Nce>::Zero()

End constraint upper bound \( c_{eu} \in R^{n_{ce}} \).

Definition at line 98 of file ocp.hpp.

◆ cr

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
CR smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::cr

Running constraint \( c_r : R \times X \times U \rightarrow R^{n_{cr}} \).

Definition at line 87 of file ocp.hpp.

◆ crl

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
Eigen::Vector<double, Ncr> smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::crl = Eigen::Vector<double, Ncr>::Zero()

Running constraint lower bound \( c_{rl} \in R^{n_{cr}} \).

Definition at line 89 of file ocp.hpp.

◆ cru

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
Eigen::Vector<double, Ncr> smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::cru = Eigen::Vector<double, Ncr>::Zero()

Running constraint upper bound \( c_{ru} \in R^{n_{cr}} \).

Definition at line 91 of file ocp.hpp.

◆ f

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
F smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::f

System dynamics \( f : R \times X \times U \rightarrow Tangent<X> \).

Definition at line 82 of file ocp.hpp.

◆ g

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
G smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::g

Integrals \( g : R \times X \times U \rightarrow R^{n_q} \).

Definition at line 84 of file ocp.hpp.

◆ Nce

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
constexpr int smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::Nce = std::invoke_result_t<CE, double, X, X, Eigen::Matrix<double, Nq, 1>>::SizeAtCompileTime
staticconstexpr

Number of end constraints.

Definition at line 67 of file ocp.hpp.

◆ Ncr

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
constexpr int smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::Ncr = std::invoke_result_t<CR, double, X, U>::SizeAtCompileTime
staticconstexpr

Number of running constraints.

Definition at line 65 of file ocp.hpp.

◆ Nq

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
constexpr int smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::Nq = std::invoke_result_t<G, double, X, U>::SizeAtCompileTime
staticconstexpr

Number of integrals.

Definition at line 63 of file ocp.hpp.

◆ Nu

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
constexpr int smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::Nu = Dof<U>
staticconstexpr

Input space dimension.

Definition at line 61 of file ocp.hpp.

◆ Nx

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
constexpr int smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::Nx = Dof<X>
staticconstexpr

State space dimension.

Definition at line 59 of file ocp.hpp.

◆ theta

template<LieGroup _X, Manifold _U, typename Theta , typename F , typename G , typename CR , typename CE >
Theta smooth::feedback::OCP< _X, _U, Theta, F, G, CR, CE >::theta

Objective function \( \theta : R \times X \times X \times R^{n_q} \rightarrow R \).

Definition at line 79 of file ocp.hpp.


The documentation for this struct was generated from the following file: