rcognita.systems.Sys3WRobot

class rcognita.systems.Sys3WRobot(sys_type, dim_state, dim_input, dim_output, dim_disturb, pars=[], ctrl_bnds=[], is_dyn_ctrl=0, is_disturb=0, pars_disturb=[])

System class: 3-wheel robot with dynamical actuators.

Three-wheel robot with dynamical pushing force and steering torque (a.k.a. ENDI - extended non-holonomic double integrator) [1]

\[\begin{array}{ll} \dot x_с & = v \cos \alpha \newline \dot y_с & = v \sin \alpha \newline \dot \alpha & = \omega \newline \dot v & = \left( \frac 1 m F + q_1 \right) \newline \dot \omega & = \left( \frac 1 I M + q_2 \right) \end{array}\]

Variables

\(x_с\) : state-coordinate [m]
\(y_с\) : observation-coordinate [m]
\(\alpha\) : turning angle [rad]
\(v\) : speed [m/s]
\(\omega\) : revolution speed [rad/s]
\(F\) : pushing force [N]
\(M\) : steering torque [Nm]
\(m\) : robot mass [kg]
\(I\) : robot moment of inertia around vertical axis [kg m2]
\(disturb\) : actuator disturbance (see disturbDyn()). Is zero if is_disturb = 0

\(state = [x_c, y_c, \alpha, v, \omega]\)

\(action = [F, M]\)

pars = \([m, I]\)

References

1

W. Abbasi, F. urRehman, and I. Shah. “Backstepping based nonlinear adaptive control for the extended nonholonomic double integrator”. In: Kybernetika 53.4 (2017), pp. 578–594

__init__(sys_type, dim_state, dim_input, dim_output, dim_disturb, pars=[], ctrl_bnds=[], is_dyn_ctrl=0, is_disturb=0, pars_disturb=[])
Parameters
  • sys_type (: string) –

    Type of system by description:

    diff_eqn : differential equation \(\mathcal D state = f(state, action, disturb)\)
    discr_fnc : difference equation \(state^+ = f(state, action, disturb)\)
    discr_prob : by probability distribution \(X^+ \sim P_X(state^+| state, action, disturb)\)

  • where

    \(state\) : state
    \(action\) : input
    \(disturb\) : disturbance

  • time variable t is commonly used by ODE solvers (The) –

  • you shouldn't have it explicitly referenced in the definition (and) –

  • your system is non-autonomous. (unless) –

  • the latter case (For) –

  • however

  • already have the input and disturbance at your disposal. (you) –

  • of the system are contained in pars attribute. (Parameters) –

  • dim_state (: integer) – System dimensions

  • dim_input (: integer) – System dimensions

  • dim_output (: integer) – System dimensions

  • dim_disturb (: integer) – System dimensions

  • pars (: list) – List of fixed parameters of the system

  • ctrl_bnds (: array of shape [dim_input, 2]) – Box control constraints. First element in each row is the lower bound, the second - the upper bound. If empty, control is unconstrained (default)

  • is_dyn_ctrl (: 0 or 1) – If 1, the controller (a.k.a. agent) is considered as a part of the full state vector

  • is_disturb (: 0 or 1) – If 0, no disturbance is fed into the system

  • pars_disturb (: list) – Parameters of the disturbance model

Methods

__init__(sys_type, dim_state, dim_input, …)

param sys_type

Type of system by description:

closed_loop_rhs(t, state_full)

Right-hand side of the closed-loop system description.

out(state[, action])

System output.

receive_action(action)

Receive exogeneous control action to be fed into the system.

Attributes

name