A Clearpath Jackal navigates an unknown environment with BubbleCBF, mapping the SDF online (right).
Satisfying safety constraints for systems with second-order dynamics is challenging because a position constraint may require infeasible deceleration. Higher-order control barrier functions (CBFs) provide an approach for expressing safety conditions for such systems but feasibility depends on the system dynamics and available control authority. We develop a constructive approach for designing feasible safety constraints for second-order control-affine systems. Starting from a signed distance function (SDF), we construct collision-free spheres, i.e., bubbles, in position space, and use their quadratic geometry and overlap to construct a velocity-dependent safety constraint. The associated safe set is represented as a union of intersections and enforced through a quadratic-program safety filter. Under mild assumptions on the dynamics, bubble overlap, and design parameters, we prove that the quadratic-program-based controller is well defined, continuous in the system state, and renders the set forward invariant. We also derive sufficient conditions for feasibility under bounded inputs. We demonstrate that our BubbleCBF, applied to a differential-drive robot, achieves safe autonomous navigation in unknown environments.
Using an SDF directly as a CBF is common, but for second-order systems the resulting higher-order CBF constraint may become infeasible even if the SDF is C², because the robot can approach an obstacle too fast for any admissible input to stop it.
SDF-CBF baseline
Overshoots the turn and gets stuck.
BubbleCBF
Stays inside the bubbles and makes the turn.
Each bubble is a ball sized by an SDF query at its center. Their union is lifted to a velocity-dependent safe set, and a QP safety filter limits outward motion near bubble boundaries so the robot can always stop in time.
LiDAR → online SDF → bubble cover → BubbleCBF safety filter.
The nominal controller collides above 1 m/s, and SDF-CBF deadlocks at 5 m/s. BubbleCBF never collides or deadlocks.
| Speed (m/s) | Method | Success (%) ↑ | Collision (%) ↓ | Deadlock (%) ↓ | Timeout (%) ↓ |
|---|---|---|---|---|---|
| 5.0 | Nominal | 38 | 62 | 0 | 0 |
| BubbleCBF | 100 | 0 | 0 | 0 | |
| SDF-CBF | 81 | 0 | 19 | 0 | |
| 2.5 | Nominal | 84 | 16 | 0 | 0 |
| BubbleCBF | 96 | 0 | 0 | 4 | |
| SDF-CBF | 87 | 0 | 13 | 0 | |
| 1.0 | Nominal | 95 | 5 | 0 | 0 |
| BubbleCBF | 100 | 0 | 0 | 0 | |
| SDF-CBF | 98 | 0 | 2 | 0 |
100 trials per method and speed.
Exploring an unknown cluttered arena (2× speed).
Bubble cover with executed trajectory (green) and reference Bézier path (white).
| Metric | BubbleCBF | Nominal | SDF-CBF |
|---|---|---|---|
| Success (%) ↑ | 100.0 | 16.7 | 50.0 |
| Collision (%) ↓ | 0.0 | 83.3 | 0.0 |
| Deadlock (%) ↓ | 0.0 | 0.0 | 50.0 |
| Covered area (m²) ↑ | 8.42 ± 0.89 | 7.86 ± 1.75 | 8.75 ± 0.80 |
| Obstacle distance (m) ↑ | 0.720 ± 0.030 | 0.714 ± 0.052 | 0.687 ± 0.028 |
Six two-minute trials per method.
Navigating a large unknown lobby (4× speed).
Online map, bubble cover, and trajectory.
| Success (%) ↑ | Collision (%) ↓ | Deadlock (%) ↓ | Covered area (m²) ↑ | Obstacle distance (m) ↑ |
|---|---|---|---|---|
| 100.0 | 0.0 | 0.0 | 126.99 ± 43.13 | 1.247 ± 0.31 |