---
kind: concept
slug: hamilton-jacobi-reachability
title: Hamilton-Jacobi reachability
summary: >-
  A value function over the robot state that tells whether the robot can be kept out of a failure set under bounded disturbances. Its gradient can drive a safety filter. Trade-offs: ground truth comes from a grid solver, and a learned value is only calibrated on its validation distribution.
tags: [safety, control, value-function]
papers: ["2412.09989"]
related: [safety-filter, control-barrier-function, conformal-prediction]
status: draft
updated_at: 2026-10-25
---

## Overview

Hamilton-Jacobi (HJ) reachability is a robust optimal control formulation. It
assigns each state a value that summarises whether the system can avoid a
failure set when the model error is treated as an adversarial disturbance
[arxiv:2412.09989 §IV-A]. The paper under study uses it for a quadruped with
a simple planar model: a 3-state Dubins car whose modelling error enters as a
disturbance bounded in position and heading [arxiv:2412.09989 §V-A.1].

The invariant that the paper's filter relies on: where the value is above a
calibrated level, the nominal command can pass through unchanged; below that
level, the command is changed as little as possible so the gradient-based
constraint holds [arxiv:2412.09989 §V-B.2]. The failure set itself depends
on the environment (obstacles, friction, payload), which is why the paper
conditions the value on a LiDAR scan [arxiv:2412.09989 §III] [arxiv:2412.09989 §V].

## Variants

Only one paper in this wiki covers the concept so far. Other variants (for
example, grid-based solvers used directly at run time) are not covered here.

### Learned, observation-conditioned value network with a QP filter

The value is approximated by a network that takes the relative state, the
disturbance bound and a 100-ray LiDAR scan. It is an MLP with sine
activations, chosen for good spatial gradients [arxiv:2412.09989 §V-A.3].
Training is supervised regression on both value and spatial gradient, with
ground truth from a reachability solver over 1,000 random environments and a
2 s horizon [arxiv:2412.09989 §V-A.2].

The learned output is calibrated with a split-conformal argument. The
calibration level δ is chosen so that, with probability at least 1 − β, the
fraction of samples where the network overestimates the value by more than δ
stays at or below ε [arxiv:2412.09989 §V-A.4] [arxiv:2412.09989 app. A].

At run time, the disturbance bound is estimated from a sliding window of
prediction errors divided by the horizon [arxiv:2412.09989 §V-B.1]. The
filter is a least-restrictive QP over the nominal twist (forward speed and
yaw rate), with a worst-case margin from the disturbance bound and a slack
variable with weight 10^3 [arxiv:2412.09989 §V-B.2]. Card:
[One Filter to Deploy Them All](/papers/2412.09989).

The paper describes the filter as wrapping any planner that outputs twists
and any low-level tracker. For an end-to-end policy, it runs the policy while
the value is above δ and falls back to a planner and tracker otherwise
[arxiv:2412.09989 §V-B.2].

## When to use which

| Situation | Use | Why |
|---|---|---|
| Planner outputs twists, environment and controller are not known in advance | Learned value network with QP filter | The paper says the filter needs neither the controller nor the environment in advance [arxiv:2412.09989 §III]. |
| Slippery floor or unmodelled payload, and a LiDAR scan is available | Learned value network with QP filter | In the author-reported hardware test on a slippery course, the filtered controller succeeded 8/10 times against 2/10 for ABS [arxiv:2412.09989 tab. IV]. |
| Average speed matters more than collisions | Check the trade-off first | With the filter, average speed drops, for example from 2.10 to 1.22 m/s for ABS-Agile in the hard simulation setting [arxiv:2412.09989 tab. III]. |
| Disturbance bound is not respected in practice | Re-check before deploying | The calibration holds on the validation distribution and the authors say it does not carry over under distribution shift [arxiv:2412.09989 §VIII]. |
| Robot is crowded or cluttered | Expect conservative behaviour | The authors say the worst-case model makes the filter conservative and can stall in clutter [arxiv:2412.09989 §VIII] [arxiv:2412.09989 §VII]. |

All results come from the authors' own experiments, with 100 simulation
trials per row and 10 hardware trials per row [arxiv:2412.09989 §VI-D]
[arxiv:2412.09989 §VII]. No second paper in the wiki reproduces them.

## Implementation sketch

Python-flavoured sketch of one control step. The value and gradient come from
the learned network; δ is the calibrated level.

```pseudocode
# Value and spatial gradient from the learned network  [arxiv:2412.09989 §V-A.3]
# Input:  relative state x, LiDAR scan, disturbance bound d
# Output: value V and gradient dV

def filter_step(x, scan, d, u_nom, delta):
    # Pass the nominal twist through above the calibrated level
    # [arxiv:2412.09989 eq. 15]
    V, dV = value_net_with_gradient(x, d, scan)
    if V > delta:
        return u_nom
    # Otherwise the closest twist to the nominal one that keeps the
    # worst-case margin, with a slack weighted 10^3  [arxiv:2412.09989 eq. 16]
    return qp_closest_safe_twist(u_nom, dV, d, slack_weight=1e3)
```

Check the paper's own equations before porting. The value is compared with δ
in raw network units there, and the released code differs (see the
contradictions below).

## Contradictions

- **Switching threshold.** The paper's equations switch to the QP when the
  uncalibrated output is at most δ = 0.49 m [arxiv:2412.09989 §V-B.2]. The
  released hardware config adds a calibration offset and switches at 0.35 on the
  calibrated value, which the card converts to about 0.85 in raw units. The
  card's Paper vs code section records this. The two sources give different
  behaviour, so an implementation should follow one and say so.
- **Disturbance window.** The paper uses a 2 s window [arxiv:2412.09989 §V-B.1].
  The released config uses 10 s. The paper names slow reaction to a change as
  a failure mode [arxiv:2412.09989 §VIII].
- **Bound formula.** The paper's bound is |mean| plus or minus b standard
  deviations on a window of position disturbance norms [arxiv:2412.09989 §V-B.1].
  The released code drops the absolute value and works per dimension.
- **Calibration grid.** The paper tabulates ε = 10^-3 with δ = 0.99 m
  [arxiv:2412.09989 tab. II]. The released calibration grid covers only ε from
  10^-2 to 10^-1. The paper's table is the only source for ε = 10^-3.
- **Network depth and loss scale.** The paper says four hidden layers of 512
  units and a loss summed over gradient components [arxiv:2412.09989 §V-A.3].
  The card records that the released code uses a different layer count and an
  element-averaged loss.

## Papers

- [Quadruped safety filter driven by a learned reachability value (arXiv:2412.09989)](/papers/2412.09989): learned HJ value network conditioned on LiDAR, with a calibrated level and a QP safety filter for a Unitree Go1.
