Data types#

Define data structures and types

diffilqrax.typs.symmetrise_tensor(x)[source]#

Symmetrise tensor

Return type:

Array

diffilqrax.typs.symmetrise_matrix(x)[source]#

Symmetrise matrix

Return type:

Array

class diffilqrax.typs.ModelDims(n, m, horizon, dt)[source]#

Bases: NamedTuple

Model dimensions

n: int#

Alias for field number 0

m: int#

Alias for field number 1

horizon: int#

Alias for field number 2

dt: float#

Alias for field number 3

class diffilqrax.typs.Gains(K, k)[source]#

Bases: NamedTuple

Linear input gains

K: Array | ndarray | bool | number | bool | int | float | complex#

Alias for field number 0

k: Array | ndarray | bool | number | bool | int | float | complex#

Alias for field number 1

class diffilqrax.typs.CostToGo(V, v)[source]#

Bases: NamedTuple

Cost-to-go

V: Array | ndarray | bool | number | bool | int | float | complex#

Alias for field number 0

v: Array | ndarray | bool | number | bool | int | float | complex#

Alias for field number 1

class diffilqrax.typs.System(cost, costf, dynamics, dims, lin_dyn=None, lin_cost=None, quad_cost=None)[source]#

Bases: object

iLQR System

Variables:
  • cost (Callable) – Running cost l(t, x, u, params).

  • costf (Callable) – Final state cost lf(xf, params).

  • dynamics (Callable) – Dynamical update f(t, x, u, params).

  • dims (ModelDims) – iLQR evaluate time horizon, dt, state and input dimension.

class diffilqrax.typs.LQR(A, B, a, Q, q, R, r, S, Qf, qf)[source]#

Bases: NamedTuple

LQR params

Variables:
  • A (Array) – Dynamics matrix.

  • B (Array) – Input matrix.

  • a (Array) – Offset vector.

  • Q (Array) – State cost matrix.

  • q (Array) – State cost vector.

  • R (Array) – Input cost matrix.

  • r (Array) – Input cost vector.

  • S (Array) – Cross term matrix.

  • Qf (Array) – Final state cost matrix.

  • qf (Array) – Final state cost vector.

A: Array#

Alias for field number 0

B: Array#

Alias for field number 1

a: Array#

Alias for field number 2

Q: Array#

Alias for field number 3

q: Array#

Alias for field number 4

R: Array#

Alias for field number 5

r: Array#

Alias for field number 6

S: Array#

Alias for field number 7

Qf: Array#

Alias for field number 8

qf: Array#

Alias for field number 9

class diffilqrax.typs.LQRParams(x0, lqr)[source]#

Bases: NamedTuple

Contains initial states and LQR parameters

x0: Array | ndarray | bool | number | bool | int | float | complex#

Alias for field number 0

lqr: Union[LQR, Tuple[Array | ndarray | bool | number | bool | int | float | complex]]#

Alias for field number 1

class diffilqrax.typs.iLQRParams(x0, theta)[source]#

Bases: NamedTuple

Non-linear parameter struct

x0: Array | ndarray | bool | number | bool | int | float | complex#

Alias for field number 0

theta: Any#

Alias for field number 1

class diffilqrax.typs.Theta(Uh, Wh, sigma, Q)[source]#

Bases: NamedTuple

RNN parameters

Uh: Array#

Alias for field number 0

Wh: Array#

Alias for field number 1

sigma: Array | ndarray | bool | number | bool | int | float | complex#

Alias for field number 2

Q: Array#

Alias for field number 3

class diffilqrax.typs.Thetax0(Uh, Wh, sigma, Q, x0)[source]#

Bases: NamedTuple

RNN parameters and initial state

Uh: Array#

Alias for field number 0

Wh: Array#

Alias for field number 1

sigma: Array | ndarray | bool | number | bool | int | float | complex#

Alias for field number 2

Q: Array#

Alias for field number 3

x0: Array#

Alias for field number 4

class diffilqrax.typs.PendulumParams(m, l, g)[source]#

Bases: NamedTuple

Pendulum parameters

m: float#

Alias for field number 0

l: float#

Alias for field number 1

g: float#

Alias for field number 2

class diffilqrax.typs.ParallelSystem(model, parallel_dynamics=None, parallel_dynamics_feedback=None)[source]#

Bases: NamedTuple

ilqr system for the parallel solvers (diffilqrax.parallel_ilqr.pilqr_solver()).

Variables:
  • model (System) – iLQR problem with non-linear cost, costf, dynamics, dims.

  • parallel_dynamics_feedback (parallel_dynamics,) – Deprecated and unused: pilqr_solver either rolls out the non-linear dynamics or uses multiple shooting (rollout), so no linearised integrators are needed.

model: System#

Alias for field number 0

parallel_dynamics: Optional[Callable]#

Alias for field number 1

parallel_dynamics_feedback: Optional[Callable]#

Alias for field number 2