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.