Background

Robots Must Plan Safely, in Real Time

Robots now share our roads, sidewalks, warehouses, and skies, and must replan safely as the world changes.

Waymo autonomous vehicle on a city street
Autonomous drivingrobotsguide.com
Serve Robotics sidewalk delivery robot in Atlanta
Sidewalk deliveryserverobotics.com
Amazon warehouse robot carrying a shelf
Warehouse logisticsqz.com
Drone flying a search-and-rescue mission
Search & rescueaerosociety.com
What we want from a planner
FastReplan in milliseconds
Dynamically feasiblePlans the robot can actually track
SafeAvoids every sensed obstacle
Recursively feasibleA certified fail-safe is always ready
Not overly conservativeNo avoidable fail-safes
Disturbance-awareRobust to a priori unknown disturbances

We introduce RTD-RAX

Reachability-based Trajectory Design (RTD): Safe Receding-Horizon Planning

1Sensecurrent obstacles
→
2Planfind a safe k* within τplan
→
3Executefollow it for τplan, then switch

Each plan lasts T s, with a fixed planning time τplan ∈ (0, T): while following the first τplan s, RTD plans the next segment. The rest, [τplan, T], is a failsafe maneuver: if no new plan is found in time, the trajectory terminates safely.

Offline For a family of simple trajectories indexed by a parameter kk, compute a forward reachable set (FRS): everywhere the robot could end up [1]

Online Rule out every kk whose FRS touches an obstacle, then pick the best remaining kk

k⋆=arg⁡min⁡k ∈ Ksafe  J(k)k^\star = \arg\min_{k \,\in\, K_{\text{safe}}} \; J(k) KsafeK_{\text{safe}}: parameters whose FRS avoids all obstacles · JJ: progress toward the goal

What RTD Gets Right, and What We Want to Improve

What RTD gets right
Fastonline it only solves a small optimization over k
Dynamically feasibleplans come from a family the robot can track
Safesensed obstacles become constraints on k
Recursively feasibleevery plan ends in a certified fail-safe
1Reachability is slowParameterized FRS tools can be intractable for complex, high-dimensional systems
→
2Simplified modelSo, the FRS is computed for a simple planning model, not the high-fidelity model
→
3Worst-case boundThe mismatch is treated as a bounded disturbance at its worst case
→
4Inflated FRSEvery reachable set is padded by that bound
Sampled tracking errors (blue) stay well below the worst-case bound (green) used to pad the FRS

Worst-case bound (green) vs. actual tracking errors (blue). Reproduced from Kousik et al. 2020.

Overly conservative Safe passage gets constrained away
Standard RTD in a narrow gap: the padded reachable set overlaps both obstacles, so the problem is infeasible

RTD does not find the safe passage.

Blind to runtime disturbances

Every FRS is pre-computed offline, so disturbances that show up at runtime (wind, slip, a push) cannot be accounted for.

What if we drop the padding, and check each plan online with a reachability method fast enough for real time?

RTD-RAX

RTD-RAX: Plan → Verify → Repair

RTD’s new job: propose a good plan fast from the FRS without the worst-case padding. High-performing plans are no longer thrown out, but unsafe ones may now be proposed

The verifier’s job: prove a proposed plan is safe with a reachability method tailored for real-time computation along specific trajectories with the true system dynamics.

And a bonus: because the check runs online, it can also account for disturbances measured at runtime. Standard RTD’s pre-computed reachable sets cannot account for such disturbances.

Certifying a Plan with Mixed-Monotone Reachability

Every trajectory, under every bounded disturbance, stays inside the box.

x(0)∈[x‾0,x‾0],  w(t)∈W(t)  ⟹  x(t)∈[x‾(t),x‾(t)]x(0) \in [\underline{x}_0, \overline{x}_0],\; w(t) \in W(t) \;\Longrightarrow\; x(t) \in [\underline{x}(t), \overline{x}(t)] mixed-monotone reachability [2], computed with immrax [3]

1
Start boxCurrent state ± ε: robot footprint, estimation error, margin
2
Disturbance boundsW(t) = [ŵ − δ, ŵ + δ] from an online estimate
3
Reachable tubeLower and upper bounds follow one ODE, integrated once over the whole plan, braking included

4

Collision check Position boxes Bj\mathcal{B}_j at each sample, plus swept hulls Sj\mathcal{S}_j between consecutive samples, must miss every obstacle

Bj∩Xobs=∅   and   Sj∩Xobs=∅    ∀j  ⟹  \mathcal{B}_j \cap X_{\text{obs}} = \varnothing \;\text{ and }\; \mathcal{S}_j \cap X_{\text{obs}} = \varnothing \;\; \forall j \;\Longrightarrow\; certified

When a Candidate Fails: Repair, Then Re-Certify

1Speed backoffSlow down so the maneuver is less aggressive
→
2Lateral pushSteer against the estimated disturbance
→
3Tighten constraintsAdd obstacle buffer, re-solve RTD

Guarantee (safe & recursively feasible). The robot only executes plans certified over their full horizon, braking included. At every moment it is either following a new certified plan or its last plan’s safe termination maneuver.

Repair is a heuristic — it may not find a safe plan. Every repaired candidate is re-certified before it runs, and the certified failsafe maneuver is always available if the planning window closes.

What the RAX layer buys Standard RTD failsafes as soon as a planning cycle comes up empty. Repair keeps looking — it extends the window in which a safe trajectory can still be found, so the robot keeps making progress instead of stopping. A failed repair costs progress, never safety.
Angled obstacle scenario: unsafe candidate tubes in pink are rejected, repaired tubes in green are certified and executed
Two repairs in Case 2: rejected (pink) → repaired (green)

Results

Case 1: A Narrow Gap

Setup for all cases: Turtlebot-scale ground robot · unicycle model (position, heading, speed) · RTD plans with a Dubins-car model and 2 parameters k = (yaw rate, speed)

Green ellipse: non-padded RTD reachable set · blue: online mixed-monotone tube.

Parameter space for RTD-RAX: a white region of safe parameters exists, with the chosen parameter marked in green
RTD-RAX parameter space: safe k exist (white); chosen k* in green. With padding, every k is unsafe.
Standard RTDPadding closes the gap → no feasible plan → fail-safe braking
RTD-RAXNon-padded FRS proposes going straight through → tube certifies it → goal reached

Same robot, same obstacles. Conservatism is reduced by where the safety is certified: offline or online.

Case 2: Catching and Repairing Unsafe Plans

Close-up of the two repairs: the unsafe candidate tube (pink) is rejected, the repaired tube (green) is certified and executed.

CatchWithout model error inflation, RTD proposes a plan that the verifier determines to be unsafe, so it is rejected before it runs.
RepairSmall adjustments (slow down, steer, tighten constraints) give a nearby plan, which is re-certified before it is used.
ResultTwo repairs over 10 planning steps; the robot reaches the goal and never executes an uncertified plan. While standard RTD can also find a safe trajectory for this scenario, it inefficiently avoids the obstacle and takes a longer route.

Note: the video is paused at each repair step so we can see the process. In the real run, verification and repair take only milliseconds, far too fast to follow.

Case 3: Disturbances Nobody Planned For

Setup6 m course, three offset gates; before each gate a disturbance patch (blue) pushes the robot toward an obstacle
Standard RTDThe offline FRS can’t see the patches: collides on planning cycle 3
RTD-RAXRejects & repairs 3 unsafe plans, reaches the goal in 19 cycles
+1.2 msRTD-RAX is only about 1.2 ms slower per planning cycle than standard RTD on average (9.4 vs. 10.6 ms, mean of 20 trials)

Conclusion

Takeaways

RTD-RAX builds upon what RTD already does wellFastDynamically feasibleSafeRecursively feasiblewhile making it:
Less conservative

A non-padded FRS plus an online check recovers maneuvers standard RTD rejects, like the narrow gap.

Disturbance-aware

The first RTD-based planner certified safe under disturbances not known ahead of time.

Still real-time

About 1.2 ms added to a ~10 ms planning cycle, thanks to JIT-compiled mixed-monotone reachability.

RTD proposes, fast mixed-monotone reachability certifies,
and clever repairs turn rejected plans into continued mission progress

Thank You

RTD-RAX: Fast, Safe Trajectory Planning for Systems under Unknown Disturbances

Evanns Morales-Cuadrado · Long Kiu Chung · Shreyas Kousik · Samuel Coogan · Georgia Tech

QR code linking to evannsmc.github.io/ws_RTD Project site: code, docs, animations
Supported in part by the National Science Foundation under Awards #2333488 and #2219755 and by the Air Force Office of Scientific Research under Grant FA9550-23-1-0303. L. K. Chung was supported by NSF Award #2449160.

Backup

Backup. RTD — Planning Model & Trajectory Parameters

High-fidelity model (unicycle, state (x,y,h,v)(x, y, h, v)): x˙=vcos⁡h,y˙=vsin⁡h,h˙=ω,v˙=a \dot x = v\cos h, \quad \dot y = v\sin h, \quad \dot h = \omega, \quad \dot v = a inputs: yaw rate ω\omega, longitudinal acceleration aa.

Planning model (Dubins car on shared states z=(x,y,h)z = (x, y, h)): x˙=vdescos⁡h,y˙=vdessin⁡h,h˙=ωdes \dot x = v_{\text{des}}\cos h, \quad \dot y = v_{\text{des}}\sin h, \quad \dot h = \omega_{\text{des}}

  • Full 4-state dynamics are too expensive for the offline SOS reachable-set computation [1]
  • (ωdes,vdes)(\omega_{\text{des}}, v_{\text{des}}) are held constant over each plan, so one kk fixes one trajectory

Parameters k=(k1,k2)∈[−1,1]2k = (k_1, k_2) \in [-1, 1]^2 decode as ωdes=ωmax⁡ k1,vdes=vmax⁡2 (k2+1) \omega_{\text{des}} = \omega_{\max}\, k_1, \qquad v_{\text{des}} = \tfrac{v_{\max}}{2}\,(k_2 + 1)

Two-phase trajectory, horizon T=tplan+tstopT = t_{\text{plan}} + t_{\text{stop}}:

  • cruise for tplant_{\text{plan}}, then scale ω\omega and vv linearly to zero over tstopt_{\text{stop}}
  • the braking tail is part of every certified plan, so it is the fail-safe

Implementation values: tplan=0.5t_{\text{plan}} = 0.5 s · tstop=vdes/amax⁡t_{\text{stop}} = v_{\text{des}}/a_{\max} with amax⁡=2a_{\max} = 2 m/s² · ωmax⁡=1\omega_{\max} = 1 rad/s · FRS speed range 0.25–1.25 m/s · robot radius 0.175 m

Backup. RTD — Tracking Error & the Forward Reachable Set

Trajectory-tracking model. Tracking-error bound gg and any d∈Ld=L1([0,T],[−1,1]nZ)d \in L_d = L^1([0,T], [-1,1]^{n_Z}): z˙i(t)=fdes,i(t,z(t),k)+gi(t,k) di(t),i=1,…,nZ \dot z_i(t) = f_{\text{des},i}(t, z(t), k) + g_i(t, k)\, d_i(t), \qquad i = 1, \dots, n_Z Every high-fidelity trajectory tracking kk is matched by some d∈Ldd \in L_d [1, Lemma 16].

FRS (over-approximated offline): XFRS={(z^,k^)∣∃ t∈[0,T], z0∈Z0, d∈Ld:z(0)=z0,  z(t)=z^} X_{\text{FRS}} = \bigl\{ (\hat z, \hat k) \mid \exists\, t \in [0,T],\, z_0 \in Z_0,\, d \in L_d : z(0) = z_0,\; z(t) = \hat z \bigr\}

Safe parameters for obstacles XobsX_{\text{obs}}: πK(X′)={k∣∃z∈X′:(z,k)∈XFRS},Ksafe=K∖πK(Xobs) \pi_K(X') = \{ k \mid \exists z \in X' : (z, k) \in X_{\text{FRS}} \}, \qquad K_{\text{safe}} = K \setminus \pi_K(X_{\text{obs}})

RTD-RAX: use the non-inflated FRS (g≡0g \equiv 0) only to propose k⋆k^\star; certification moves online.

Sampled lateral tracking-error trajectories enveloped by a polynomial worst-case bound
Worst-case envelope gx(t) (green) over sampled tracking errors (blue dashed). Reproduced from Kousik et al. 2020, Fig. 3a.

Backup. Mixed-Monotone Reachability: One Box Holds Every Trajectory

Every sampled trajectory, under every disturbance w ∈ [−1, 1], stays inside the box.

  • Instead of simulating every possible trajectory, track just a lower and upper bound on each state [2]
  • The bounds follow their own ODE, twice the size of the robot model, integrated once per candidate
  • Boxes are conservative, but much less than standard RTD, and fast: immrax builds and JIT-compiles the bound dynamics automatically [3]

x(0)∈[x‾0,x‾0],    w(t)∈[w‾,w‾]    ⟹    x(t)∈[x‾(t),x‾(t)]∀ t≥0x(0) \in [\underline{x}_0, \overline{x}_0],\;\; w(t) \in [\underline{w}, \overline{w}] \;\;\Longrightarrow\;\; x(t) \in [\underline{x}(t), \overline{x}(t)] \quad \forall\, t \ge 0 start anywhere in the box, suffer any bounded disturbance, and the true state is still inside the propagated box

Backup. Mixed Monotonicity — Inclusion Function & Embedding System

For x˙=f(x,u,w)\dot x = f(x, u, w), an inclusion function F=[F‾,F‾]\mathcal F = [\underline{\mathcal F}, \overline{\mathcal F}] satisfies, for all x∈[x‾,x‾]x \in [\underline x, \overline x], u∈[u‾,u‾]u \in [\underline u, \overline u], w∈[w‾,w‾]w \in [\underline w, \overline w]: f(x,u,w)∈F([x‾,x‾],[u‾,u‾],[w‾,w‾]) f(x, u, w) \in \mathcal F\bigl([\underline x, \overline x], [\underline u, \overline u], [\underline w, \overline w]\bigr)

Embedding system (2n2n states; x[i:y]x_{[i:y]} replaces the ii-th entry of xx with yiy_i): x‾˙i=F‾([x‾,x‾[i:x‾]],[u‾,u‾],[w‾,w‾])ix‾˙i=F‾([x‾[i:x‾],x‾],[u‾,u‾],[w‾,w‾])i \begin{aligned} \dot{\underline x}_i &= \underline{\mathcal F}\bigl([\underline x, \overline x_{[i:\underline x]}], [\underline u, \overline u], [\underline w, \overline w]\bigr)_i \\ \dot{\overline x}_i &= \overline{\mathcal F}\bigl([\underline x_{[i:\overline x]}, \overline x], [\underline u, \overline u], [\underline w, \overline w]\bigr)_i \end{aligned}

Monotone w.r.t. the southeast order (x,x′)⪯SE(y,y′)  ⟺  [y,y′]⊆[x,x′](x, x') \preceq_{\text{SE}} (y, y') \iff [y, y'] \subseteq [x, x'] [2].

Enclosure guarantee for all T≥0T \ge 0: ϕ(T;x0,u,w)∈[ ⁣[ΦE(T;[x‾0,x‾0],[u‾,u‾],[w‾,w‾])] ⁣] \phi(T; x_0, u, w) \in \bigl[\!\bigl[ \Phi^{\mathcal E}(T; [\underline x_0, \overline x_0], [\underline u, \overline u], [\underline w, \overline w]) \bigr]\!\bigr]

  • Exists for any vector field locally Lipschitz in state and disturbance [4, Thm. 1]
  • immrax derives F\mathcal F by JAX tracing + interval arithmetic and JIT-compiles E\mathcal E [3]

Backup. Certifying a Candidate Online

1Start boxCurrent state ± ε: robot footprint, estimation error, margin
→
2Disturbance boundsW(t) = [ŵ − δ, ŵ + δ] from an online estimate
→
3Reachable tubePropagate the bounds over the whole plan, braking included
→
4Collision checkPosition boxes + swept hulls between samples vs. obstacles
obstacle Bj Bj+1 Sj ← neither box touches the obstacle, but the swept hull does → reject schematic; sample spacing exaggerated position box at tj hull between samples planned path

Bj∩Xobs=∅   and   Sj∩Xobs=∅    ∀j  ⟹  \mathcal{B}_j \cap X_{\text{obs}} = \varnothing \;\text{ and }\; \mathcal{S}_j \cap X_{\text{obs}} = \varnothing \;\; \forall j \;\Longrightarrow\; certified

Backup. Verification — Uncertainty, Tube & Swept Hulls

Verification dynamics for candidate k⋆k^\star: x˙=f(x,uk⋆(t),w)\dot x = f(x, u_{k^\star}(t), w), full state xx.

Initial set: x(0)∈[x^0−ε,  x^0+ε]x(0) \in [\hat x_0 - \varepsilon,\; \hat x_0 + \varepsilon] (estimation error + footprint + margin)

Disturbance set: w(t)∈W(t)=[w^(t)−δ(t),  w^(t)+δ(t)]w(t) \in W(t) = [\hat w(t) - \delta(t),\; \hat w(t) + \delta(t)], where ∣wi−w^i∣≤δi|w_i - \hat w_i| \le \delta_i; δ\delta may also absorb model mismatch and delay. GP confidence bounds give a probabilistic certificate [5].

Tube: Rj=[x‾(tj),x‾(tj)]\mathcal R_j = [\underline x(t_j), \overline x(t_j)], position boxes Bj=[x‾pos(tj),x‾pos(tj)]\mathcal B_j = [\underline x_{\text{pos}}(t_j), \overline x_{\text{pos}}(t_j)]

Swept interval hull between samples: Sj=[min⁡(x‾pos(tj),x‾pos(tj+1)),  max⁡(x‾pos(tj),x‾pos(tj+1))] \mathcal S_j = \bigl[ \min(\underline x_{\text{pos}}(t_j), \underline x_{\text{pos}}(t_{j+1})),\; \max(\overline x_{\text{pos}}(t_j), \overline x_{\text{pos}}(t_{j+1})) \bigr] assumes Δt\Delta t small enough that inter-sample deviation is covered.

Implementation (immrax_verify.py)

  • Additive disturbance on (x˙,y˙,h˙,v˙)(\dot x, \dot y, \dot h, \dot v); interval radii carried in the embedding state
  • εpos=rrobot+εadd\varepsilon_{\text{pos}} = r_{\text{robot}} + \varepsilon_{\text{add}} with rrobot=0.175r_{\text{robot}} = 0.175 m; εh=εv=0.2 εpos\varepsilon_h = \varepsilon_v = 0.2\,\varepsilon_{\text{pos}}
  • εadd=0.01\varepsilon_{\text{add}} = 0.01 m (Cases 1, 3), 0.030.03 m (Case 2)
  • Natural inclusion (irx.natemb), RK45, Δt=0.01\Delta t = 0.01 s over the full TT
  • Check boxes first, then hulls; report the earliest collision time for repair
  • Case 2: fixed bound ∣w∣≤(0.017,0.060,0.043,0.017)|w| \le (0.017, 0.060, 0.043, 0.017) on (x˙,y˙,h˙,v˙)(\dot x, \dot y, \dot h, \dot v)
  • Case 3: symmetric bound from the patches along the candidate’s reference path

Backup. Repair Procedure & Safety Theorem

Repair order (each candidate re-verified before execution):

  1. Speed backoff: k2←k2−Δvk_2 \leftarrow k_2 - \Delta_v
  2. Lateral push: k1←k1±Δωk_1 \leftarrow k_1 \pm \Delta_\omega, trying the direction opposing the estimated lateral disturbance first
  3. Constraint tightening: obstacle buffer b←b+Δbb \leftarrow b + \Delta_b, re-solve the RTD program

Settings in the paper’s runs (docker/makefile)

  • Case 2: Δv=0.08\Delta_v = 0.08, Δb=0.01\Delta_b = 0.01 m, up to 2 rounds
  • Case 3: Δv=0.08\Delta_v = 0.08, Δb=0.015\Delta_b = 0.015 m, up to 4 rounds
  • Lateral push is implemented but disabled in both runs

Repair is a candidate-generation heuristic: not complete, not assumed convergent. Failure costs progress, never safety.

Theorem (safety & recursive feasibility). Let each executed candidate have horizon T=tplan+tstopT = t_{\text{plan}} + t_{\text{stop}} whose last tstopt_{\text{stop}} seconds are a fail-safe stop. If the initial candidate is certified over its full horizon, the system only switches to candidates certified over their full horizons, and it executes the current fail-safe whenever no new candidate is certified within tplant_{\text{plan}}, then RTD-RAX is safe and recursively feasible.

Proof sketch. Certification gives proj⁡pos(Rk(t))∩Xobs=∅\operatorname{proj}_{\text{pos}}(\mathcal R_k(t)) \cap X_{\text{obs}} = \varnothing for all t∈[0,T]t \in [0, T], covering both cruise and braking. At the next planning instant the system either switches to a newly certified candidate or continues the certified stop. Apply recursively. □\square

Backup. Future Work

Method

  • Tighter coupling between the RTD optimization and the online reachable tube, so replanning can take gradient steps instead of guess-and-check repair
  • Learned disturbance bounds in place of measured ones: Gaussian-process confidence bounds give a tube that holds with a prescribed probability [5]
  • Richer disturbance and uncertainty descriptions generally

Validation

  • Hardware: port the case studies to a ground robot, then a quadrotor, where the tube grows faster in higher dimensions
  • Head-to-head against robust and tube-based MPC under common models, disturbance assumptions, safety specifications, and compute budgets

RTD-RAX and robust/tube MPC split the work differently: MPC folds dynamics, uncertainty and constraints into one receding-horizon optimization, while RTD-RAX generates candidates from a precomputed FRS and verifies each one online.

References

[1]
S. Kousik, S. Vaskov, F. Bu, M. Johnson-Roberson and R. Vasudevan, “Bridging the gap between safety and real-time performance in receding-horizon trajectory design for mobile robots,” The International Journal of Robotics Research, 2020.
[2]
S. Coogan, “Mixed monotonicity for reachability and safety in dynamical systems,” 59th IEEE conference on decision and control (CDC), 2020.
[3]
A. Harapanahalli, S. Jafarpour and S. Coogan, “Immrax: A parallelizable and differentiable toolbox for interval analysis and mixed monotone reachability in JAX,” IFAC-PapersOnLine, 2024.
[4]
M. Abate, M. Dutreix and S. Coogan, “Tight decomposition functions for continuous-time mixed-monotone systems with disturbances,” IEEE Control Systems Letters, 2020.
[5]
M. E. Cao and S. Coogan, “Trajectory tracking runtime assurance for systems with partially unknown dynamics,” IEEE international conference on robotics and automation (ICRA), 2024.