rcognita.systems.Sys3WRobot

class rcognita.systems.Sys3WRobot(*args, **kwargs)

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 \angle \newline \dot y_с & = v \sin \angle \newline \dot \angle & = \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]
\(\angle\) : 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, \angle, 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__(*args, **kwargs)
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 time 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

  • action_bounds (: 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_dynamic_controller (: 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__(*args, **kwargs)

param sys_type

Type of system by description:

compute_closed_loop_rhs(time, state_full)

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

compute_dynamics(time, state, action[, disturb])

Description of the system internal dynamics.

out(state[, time, action])

System output.

receive_action(action)

Receive exogeneous control action to be fed into the system.

reset()