types.reachability.CBFResult
types.reachability.CBFResult()Control Barrier Function (CBF) result.
Safety filter for control ensuring forward invariance of safe set.
Fields
safe_control : ControlVector Safety-filtered control u_safe barrier_value : float B(x) at current state barrier_derivative : float dB/dt or ΔB under current dynamics constraint_active : bool True if safety constraint is active nominal_control : ControlVector Original desired control u_nom modification_magnitude : float ||u_safe - u_nom|| control modification
Examples
>>> # Define barrier function (distance to obstacle)
>>> obstacle_center = np.array([5, 5])
>>> obstacle_radius = 2.0
>>> B = lambda x: np.linalg.norm(x - obstacle_center)**2 - obstacle_radius**2
>>>
>>> # Create CBF controller
>>> cbf = ControlBarrierFunction(barrier=B, system=robot, gamma=1.0)
>>>
>>> # Filter control at each step
>>> x = np.array([4, 3])
>>> u_desired = np.array([1, 1]) # Nominal control (move toward obstacle)
>>>
>>> result: CBFResult = cbf.filter_control(x, u_desired)
>>>
>>> u_safe = result['safe_control']
>>> print(f"Barrier value: {result['barrier_value']:.3f}")
>>>
>>> if result['constraint_active']:
... print("Safety filter active!")
... print(f"Control modified by: {result['modification_magnitude']:.3f}")
... else:
... print("Nominal control is safe")
>>>
>>> # Apply safe control
>>> x_next = robot.step(x, u_safe)