# 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` |