rcognita.controllers.Controller3WRobotDisassembledCLF

class rcognita.controllers.Controller3WRobotDisassembledCLF(m, I, controller_gain=10, action_bounds=None, time_start=0, sampling_time=0.01, max_iters=200, optimizer_engine='SciPy')

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

controller_gain

Controller gain.

Type

: number

time_start

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, controller_gain=10, action_bounds=None, time_start=0, sampling_time=0.01, max_iters=200, optimizer_engine='SciPy')

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

Methods

__init__(m, I[, controller_gain, …])

Initialize self.

compute_LF(observation)

compute_action(observation)

Same as compute_action(), but without invoking the internal clock.

compute_action_sampled(time, observation)

See algorithm description in [1], [2].

reset(time_start)

Resets controller for use in multi-episode simulation.