# rcognita.controllers.CtrlNominal3WRobot

class rcognita.controllers.CtrlNominal3WRobot(m, I, ctrl_gain=10, ctrl_bnds=[], t0=0, sampling_time=0.1)

  This is a class of nominal controllers for 3-wheel robots used for benchmarking of other controllers.

  The controller is sampled.

  For a 3-wheel robot with dynamical pushing force and steering torque (a.k.a. ENDI - extended non-holonomic double integrator) [1], we use here a controller designed by non-smooth backstepping (read more in [2], [3]).

  m, I

    Mass and moment of inertia around vertical axis of the robot.

    Type

      : numbers

  ctrl_gain

    Controller gain.

    Type

      : number

  t0

    Initial value of the controller’s internal clock.

    Type

      : number

  sampling_time

    Controller’s sampling time (in seconds).

    Type

      : number

  References

  1(1,2)

    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

  2(1,2)

    Matsumoto, R., Nakamura, H., Satoh, Y., and Kimura, S. (2015). Position control of two-wheeled mobile robot via semiconcave function backstepping. In 2015 IEEE Conference on Control Applications (CCA), 882–887

  3

    Osinenko, Pavel, Patrick Schmidt, and Stefan Streif. “Nonsmooth stabilization and its computational aspects.” arXiv preprint arXiv:2006.14013 (2020)

  __init__(m, I, ctrl_gain=10, ctrl_bnds=[], t0=0, sampling_time=0.1)

    Initialize self. See help(type(self)) for accurate signature.

  Methods

  `__init__`(m, I[, ctrl_gain, ctrl_bnds, t0, …]) | Initialize self.
  `compute_LF`(observation) |
  `compute_action`(t, observation) | See algorithm description in [1], [2].
  `compute_action_vanila`(observation) | Same as `compute_action()`, but without invoking the internal clock.
  `reset`(t0) | Resets controller for use in multi-episode simulation.