types.reachability.CLFResult

types.reachability.CLFResult()

Control Lyapunov Function (CLF) result.

Stabilizing control with guaranteed convergence.

Fields

stabilizing_control : ControlVector Control ensuring V̇ < 0 lyapunov_value : float V(x) at current state lyapunov_derivative : float V̇(x, u) under current control stability_margin : float How much V̇ < 0 (larger = faster convergence) convergence_rate : float Exponential rate α in V̇ ≤ -αV feasible : bool CLF condition feasible

Examples

>>> # Quadratic Lyapunov function
>>> P = np.array([[2, 0], [0, 1]])
>>> V = lambda x: x.T @ P @ x
>>>
>>> # Create CLF controller
>>> clf = ControlLyapunovFunction(lyapunov=V, system=pendulum, alpha=0.5)
>>>
>>> # Compute stabilizing control
>>> x = np.array([0.5, 0.1])
>>>
>>> result: CLFResult = clf.compute_control(x)
>>>
>>> if result['feasible']:
...     u = result['stabilizing_control']
...     print(f"V(x) = {result['lyapunov_value']:.3f}")
...     print(f"V̇(x,u) = {result['lyapunov_derivative']:.3f}")
...     print(f"Convergence rate: {result['convergence_rate']:.2f}")
... else:
...     print("CLF condition infeasible")