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)reset
(time_start)Resets controller for use in multi-episode simulation.