This paper was converted on www.awesomepapers.org from LaTeX by an anonymous user.
Want to know more? Visit the Converter page.

\coltauthor\Name

Leonard Jung \Email[email protected]
\NameAlexander Estornell \Email[email protected]
\NameMichael Everett \Email[email protected]
\addrNortheastern University, Boston, MA 02215, USA \LinesNumbered

Contingency Constrained Planning with MPPI within MPPI

Abstract

For safety, autonomous systems must be able to consider sudden changes and enact contingency plans appropriately. State-of-the-art methods currently find trajectories that balance between nominal and contingency behavior, or plan for a singular contingency plan; however, this does not guarantee that the resulting plan is safe for all time. To address this research gap, this paper presents Contingency-MPPI, a data-driven optimization-based strategy that embeds contingency planning inside a nominal planner. By learning to approximate the optimal contingency-constrained control sequence with adaptive importance sampling, the proposed method’s sampling efficiency is further improved with initializations from a lightweight path planner and trajectory optimizer. Finally, we present simulated and hardware experiments demonstrating our algorithm generating nominal and contingency plans in real time on a mobile robot.
Experiment Video Video will be added soon

keywords:
Contingency planning, model-predictive control, data-driven optimization, robotics
Distribution Statement A. Approved for public release: distribution unlimited\urlhttps://github.com/neu-autonomy/Contingency-MPPI

1 Introduction

Autonomous systems in real environments need to be able to handle sudden major changes in the operating conditions. For example, a car driving on the highway may need to swerve to safety if a collision occurs ahead, or a humanoid robot may need to grab hold of a railing if its foot slips on the stairs. Since there may be only a fraction of a second to recognize and respond to such events, this paper aims to develop an approach for always ensuring a contingency plan is available and can be immediately executed, if necessary.

A key challenge in this problem is to ensure a contingency plan always exists, without impacting the nominal plan too much. In standard approaches, where the nominal planner does not account for contingencies, the system could enter states from which no contingency plan exists; this may be tolerable if the failure event never occurs while the system is in one of those states but could lead to major safety failures in the worst case. [9683388] considered these backup plans by adding weighted terms to the cost function, which encourage staying out of these contingency-free areas, but does not have any guarantee. Alternatively, the methods of [alsterda2021contingency] and [9729171] explicitly plan alternative trajectories through a branching scheme and optimize both a nominal and set of contingency trajectories simultaneously. However, again, these methods must balance between the nominal trajectory cost and the tree of backup plans. [9729171, li2023marc, 10400882] all addressed risk-aware contingency planning with stochastic interactions with other agents; thus, these algorithms aim to minimize risk and cost over a tree of possible future scenarios, again only providing a balance between aggressive and safe behavior. [tordesillas2019faster] solved a contingency constrained problem by planning both an optimistic plan and a contingency plan that branches off to stay in known-free space. However, for more complicated safety requirements (e.g., a collection of safe regions that must remain reachable within a given time limit), the mixed integer programming problem proposed in that work becomes too expensive to solve in real time.

This leads to another important challenge: ensuring computational efficiency despite needing to generate both a nominal and a contingency plan from each state along the way. One approach would be to use exact reachability algorithms (e.g., 8263977; 9341499) to keep the planner out of contingency-free areas. However, computing the reachable sets is expensive, not strictly necessary, and would still require subsequently finding the contingency trajectories. Instead, this paper proposes to use an inexpensive contingency planner embedded inside the nominal planner. If the contingency planner finds a valid contingency plan, the nominal planner knows that state is acceptable, and the corresponding contingency plan is already available. Meanwhile, if the contingency planner fails to find a trajectory within a computation budget, the nominal planner can quickly (albeit conservatively) update its plans to avoid that state. To handle these discrete contingency events on top of generic nominal planning problems, our method, Contingency-MPPI, builds on model-predictive path integral (MPPI) control.

To summarize, this paper’s contributions include: (i) a planning algorithm that embeds contingency planning inside a nominal planner to ensure that a contingency plan exists from every state along the nominal plan, (ii) extensions of this planner using lightweight optimization problems to improve the sample-efficiency via better initial guesses, and (iii) demonstrations of the proposed method in simulated environments and on a mobile robot hardware platform to highlight the real-time implementation.

2 Problem Formulation

Refer to caption
Figure 1: At each step along the nominal plan, a contingency plan must exist to reach a safe state within a time horizon.

Denote a general nonlinear discrete-time system 𝐱t+1=f(𝐱t,𝐮t)\mathbf{x}_{t+1}=f(\mathbf{x}_{t},\mathbf{u}_{t}) with state, 𝐱tnx\mathbf{x}_{t}\in\mathbb{R}^{n_{x}}, and control, 𝐮tnu\mathbf{u}_{t}\in\mathbb{R}^{n_{u}} at time tt. To indicate a trajectory, we use colon notation (e.g., 𝐱0:T={𝐱0,𝐱1,,𝐱T}\mathbf{x}_{0:T}=\{\mathbf{x}_{0},\mathbf{x}_{1},\ldots,\mathbf{x}_{T}\}) and TT-step dynamics 𝐱t+T=f(𝐱t,𝐮0:T)\mathbf{x}_{t+T}=f(\mathbf{x}_{t},\mathbf{u}_{0:T}). Additionally \bmUnuT\bm{U}\in\mathbb{R}^{n_{u}T} and \bmXnxT\bm{X}\in\mathbb{R}^{n_{x}T} indicate the state and control trajectory reshaped into a vector, and 𝚺nuT×nuT\mathbf{\Sigma}\in\mathbb{R}^{n_{u}T\times n_{u}T} represents the covariance matrix of the reshaped control trajectory.

The contingency-constrained planning problem is to find a nominal trajectory, 𝐮0:T\mathbf{u}_{0:T}, to minimize cost J\textnomJ_{\text{nom}}, along with contingency trajectories {𝐮0:Tc0,,𝐮0:TcT}\{\mathbf{u}^{0}_{0:T_{c}},\ \allowbreak\ldots,\ \allowbreak\mathbf{u}^{T}_{0:T_{c}}\} that drive the system into a safe set, 𝒮\mathcal{S}, within TcT_{c} steps, from each state along the nominal trajectory:

min𝐮0:T,{𝐮0:Tc0,,𝐮0:TcT}\displaystyle\min_{\mathbf{u}_{0:T},\{\mathbf{u}^{0}_{0:T_{c}},\ldots,\mathbf{u}^{T}_{0:T_{c}}\}} Jnom(𝐱0,𝐮0:T)\displaystyle J_{\text{nom}}(\mathbf{x}_{0},\mathbf{u}_{0:T}) (1a)
s.t. 𝐱t+1=f(𝐱t,𝐮t)\displaystyle\mathbf{x}_{t+1}=f(\mathbf{x}_{t},\mathbf{u}_{t}) t[0,,T]\displaystyle\forall{t\in[0,\ldots,T]}\,\, (1b)
τTcs.t.f(𝐱i,𝐮0:τi)𝒮\displaystyle\exists\tau\leq T_{c}\ \textrm{s.t.}\ f(\mathbf{x}_{i},\mathbf{u}^{i}_{0:\tau})\in\mathcal{S} i[0,,T].\displaystyle\forall{i\in[0,\ldots,T]}. (1c)

Other common costs/constraints (e.g., obstacle avoidance, control limits), can be added as desired.

3 Contingency-MPPI

Ignoring the contingency constraint Eq. 1c, MPPI is a powerful method for solving Eq. 1 when the dynamics or costs are non-convex. This section shows how to extend MPPI to handle Eq. 1c as well, by nesting another sampling process into MPPI. First, we review the vanilla MPPI algorithm in Section 3.1, then describe our Nested-MPPI in Section 3.2. To increase sampling efficiency, a path-finding and trajectory optimization step (Section 3.3) is used to seed Nested-MPPI (LABEL:sec:backend) with ancillary controllers. This approach is summarized in Fig. 2.

Refer to caption
Figure 2: Planning Pipeline. Our Contingency-MPPI first runs (1) TopoRPM to find multiple paths through the environment (Section 3.3.1), (2) NMPC to find control sequences for each path (Section 3.3.2), and (3) Nested-MPPI that utilizes these control sequences as modes (Section 3.2) to find a trajectory for the vehicle to track.

3.1 Background: Model Predictive Path Integral Control

To summarize MPPI following asmar2023model, consider the entire control trajectory as a single input \bmV𝒩(\boldsymbolU,\boldsymbolΣ)\bm{V}\sim\mathcal{N}(\boldsymbol{U},\boldsymbol{\Sigma}), sampled from distribution \mathbb{Q} with density

q(\boldsymbolV)=((2π)nuT|\boldsymbolΣ|)12e12(\boldsymbolV\boldsymbolU)T\boldsymbolΣ1(\boldsymbolV\boldsymbolU),q(\boldsymbol{V})=((2\pi)^{n_{u}T}|\boldsymbol{\Sigma}|)^{-\frac{1}{2}}e^{-\frac{1}{2}(\boldsymbol{V}-\boldsymbol{U})^{T}\boldsymbol{\Sigma}^{-}1(\boldsymbol{V}-\boldsymbol{U})}, (2)

where \bmU,\bmΣ\bm{U},\bm{\Sigma} are the mean and covariance of \mathbb{Q}. The objective of MPPI is to minimize the KL-divergence between this proposed distribution, \mathbb{Q}, and an (unknown) optimal control distribution \mathbb{Q}^{*}, defined with respect to a cost function of the form

𝒥(\boldsymbolX,\boldsymbolU)=𝔼[ϕ(\boldsymbolX)+c(\boldsymbolX)+λ2\boldsymbolUT\boldsymbolΣ1\boldsymbolU].\mathcal{J}(\boldsymbol{X},\boldsymbol{U})=\mathbb{E_{Q}}[\phi(\boldsymbol{X})+c(\boldsymbol{X})+\frac{\lambda}{2}\boldsymbol{U}^{T}\boldsymbol{\Sigma}^{-1}\boldsymbol{U}]. (3)

The optimal control distribution \mathbb{Q}^{*} has density q(\boldsymbolV)=1η(1λS(\boldsymbolV))p(\boldsymbolV)q^{*}(\boldsymbol{V})=\frac{1}{\eta}(-\frac{1}{\lambda}S(\boldsymbol{V}))p(\boldsymbol{V}), based on a state-dependent cost, S(\boldsymbolV)=ϕ(\boldsymbolX)+c(\boldsymbolX)S(\boldsymbol{V})=\phi(\boldsymbol{X})+c(\boldsymbol{X}) and a nominal control distribution, \mathbb{P}, with density

p(\boldsymbolV)=((2π)nuT|\boldsymbolΣ|)12e12(\boldsymbolV\boldsymbolU~)T\boldsymbolΣ1(\boldsymbolV\boldsymbolU~).p(\boldsymbol{V})=((2\pi)^{n_{u}T}|\boldsymbol{\Sigma}|)^{-\frac{1}{2}}e^{-\frac{1}{2}(\boldsymbol{V}-\tilde{\boldsymbol{U}})^{T}\boldsymbol{\Sigma}^{-}1(\boldsymbol{V}-\tilde{\boldsymbol{U}})}. (4)

Here, η\eta is a normalizing constant, λ\lambda is the inverse temperature, and \boldsymbolU~\tilde{\boldsymbol{U}} is the base control, which is usually either zero or a nominal distribution from iterations of adaptive importance sampling. Then, to find the optimal control trajectory we can minimize the KL-divergence between \mathbb{Q} and \mathbb{Q}^{*},

\boldsymbolU=argmin\boldsymbolU𝔻KL(||).\boldsymbol{U}^{*}=\arg\min_{\boldsymbol{U}}\mathbb{D}_{KL}(\mathbb{Q}^{*}||\mathbb{Q}). (5)

Using adaptive importance sampling, the optimal control can be approximated by drawing NN samples from a distribution \boldsymbolU^\mathbb{Q}_{\hat{\boldsymbol{U}}} with proposed input \boldsymbolU^\hat{\boldsymbol{U}},

\boldsymbolU=𝔼[w(\boldsymbolV)\boldsymbolV],\displaystyle\boldsymbol{U}^{*}=\mathbb{E}_{\mathbb{Q}}[w(\boldsymbol{V})\boldsymbol{V}], (6)
w(\boldsymbolV)=1ηe1λ(S(\boldsymbolV)+λ(\boldsymbolU^\boldsymbolU~)TΣ1\boldsymbolV)\displaystyle w(\boldsymbol{V})=\frac{1}{\eta}e^{-\frac{1}{\lambda}(S(\boldsymbol{V})+\lambda(\hat{\boldsymbol{U}}-\tilde{\boldsymbol{U}})^{T}\Sigma^{-1}\boldsymbol{V})} (7)
η=e1λ(S(\boldsymbolV)+λ(\boldsymbolU^\boldsymbolU~)TΣ1\boldsymbolV)𝑑\boldsymbolV.\displaystyle\eta=\int e^{-\frac{1}{\lambda}(S(\boldsymbol{V})+\lambda(\hat{\boldsymbol{U}}-\tilde{\boldsymbol{U}})^{T}\Sigma^{-1}\boldsymbol{V})}d\boldsymbol{V}.\vspace{-1cm} (8)

(6) finds an (information-theoretic) optimal open-loop control sequence that can be implemented in a receding horizon by shifting one timestep ahead and re-running the algorithm. As in asmar2023model, we weigh the control cost by a factor γ=λ(1α)\gamma=\lambda(1-\alpha) and shift all sampled trajectory costs by the minimum sampled cost, for numerical stability.

3.1.1 Enforcing Hard Constraints in MPPI

While MPPI does not explicitly handle constraints, such as avoiding obstacles or the existence of a contingency plan, one can add terms to the objective with infinite cost when constraints are violated. For example, with a nominal cost S\textnom(\bmV)S_{\text{nom}}(\bm{V}) and NN constraints, the augmented cost is S(\boldsymbolV)=S\textnom(\bmV)+k=1NS\textconstraintk(\bmV)S(\boldsymbol{V})=S_{\text{nom}}(\bm{V})+\sum_{k=1}^{N}S_{\text{constraint}}^{k}(\bm{V}), where

S\textconstraintk(\bmV)={0,&\textifconstraintkissatisfied,\texto.w..S_{\text{constraint}}^{k}(\bm{V})=\cases{0},&\text{ifconstraintkissatisfied}\\ \infty,\text{o.w.}. (9)

When the constraints are satisfied, the trajectory cost (and its weight in importance sampling) depends only on the nominal cost, such as minimum time or distance to the goal. If the constraints are not satisfied, the trajectory has infinite cost and receives zero weight in importance sampling. Thus, only trajectories meeting all constraints are considered, and their weights depend solely on the nominal cost. If no trajectory satisfies all constraints in an iteration, all samples get zero weight, and the mean control trajectory remains unchanged for the next MPPI iteration. However, if any trajectory met the constraints in the previous step, the executed control trajectory will still be safe

3.2 Nested-MPPI

Refer to caption
Figure 3: Nested-MPPI computes reachability cost by sampling contingency trajectories (dashed lines) along nominal trajectory rollouts (solid lines). Nominal trajectories 0, 1, and 4 collided with an obstacle or did not find a valid contingency from every state, and thus have ++\infty cost.
{algorithm2e}

[H] \DontPrintSemicolon

Input: 𝐱0,\bmU,[\bmUa],\bmΣ\mathbf{x}_{0},\bm{U},[\bm{U}_{a}],\bm{\Sigma}

Output: Nominal & contingency control sequences

Parameters: K,T,LK,T,L (nominal); f,G,f,G, (system); c,ϕ,λ,αc,\phi,\lambda,\alpha (cost)

\BlankLine

\bmU\bmU\bm{U}^{\prime}\leftarrow\bm{U}; \bmΣ\bmΣ\bm{\Sigma}^{\prime}\leftarrow\bm{\Sigma}\For(\tcp*[f]AIS loop)l0l\leftarrow 0 \KwToL1L-1 \Fork0k\leftarrow 0 \KwToK1+\textcard([\bmUa])K-1+\text{card}([\bm{U}_{a}]) 𝐱k,0𝐱𝟎\mathbf{x}_{k,0}\leftarrow\mathbf{x_{0}}

\bmk𝒩(0,\bmΣ)\bm{\mathcal{E}}_{k}\sim\mathcal{N}(0,\bm{\Sigma^{\prime}})

\lIf

kK1k\leq K-1\bmU=\bmU+\bmk\bm{U}=\bm{U}^{\prime}+\bm{\mathcal{E}}_{k} \tcpAncillary Control \lElse\bmU=[\bmUa]k(K1)\bm{U}=[\bm{U}_{a}]_{k-(K-1)} \Fori0i\leftarrow 0 \KwToT1T-1 𝐱k,i+1=𝐱k,i+(f+G(𝐮))Δt\mathbf{x}_{k,i+1}=\mathbf{x}_{k,i}+\left(f+G\left(\mathbf{u}\right)\right)\Delta t \bmU\textreachk,S\textreach\textFindContingencyPlan(\bmXk)\bm{U}_{\text{reach}_{k}},S_{\text{reach}}\leftarrow\text{FindContingencyPlan}(\bm{X}_{k})\lIfS\textreach=0S_{\text{reach}}=0 \bmU\textcontingency\bmU\textreachk\bm{U}_{\text{contingency}}\leftarrow\bm{U}_{\text{reach}_{k}} SkS\textreach+c(\bmX)+ϕ(\bmX)+λ(1α)\bmUT\bmΣ1(\bmk+\bmU\bmU)S_{k}\leftarrow S_{\text{reach}}+c(\bm{X})+\phi(\bm{X})+\lambda(1-\alpha)\bm{U}^{\prime T}\bm{\Sigma}^{-1}(\bm{\mathcal{E}}_{k}+\bm{U}^{\prime}-\bm{U}) \lIfl<L1l<L-1 \bmU,\bmΣ\textAIS()\bm{U}^{\prime},\bm{\Sigma}^{\prime}\leftarrow\text{AIS}()

\BlankLine

ρmin(S)\rho\leftarrow\min(\textbf{S})ηk=1Kexp(1λ(Skρ))\eta\leftarrow\sum_{k=1}^{K}\exp\left(-\frac{1}{\lambda}(S_{k}-\rho)\right)

\For

k0k\leftarrow 0 \KwToK1K-1 \bmU+=1ηexp(1λ(Skρ))(\bmk+\bmU\bmU)\bm{U}\mathrel{+}=\frac{1}{\eta}\exp\left(-\frac{1}{\lambda}(S_{k}-\rho)\right)\left(\bm{\mathcal{E}}_{k}+\bm{U}^{\prime}-\bm{U}\right)

\Return

\bmU,\bmU\textcontingency\bm{U},\bm{U}_{\text{contingency}} Nested-MPPI

{algorithm2e}

[H] \DontPrintSemicolon

Input: \bmX\bm{X}: State sequence

Output: Contingency control sequence & score

Parameters: K\textc,T\textc,L\textc,T\textsK_{\text{c}},T_{\text{c}},L_{\text{c}},T_{\text{s}} (contingency); f,G,m\textelitef,G,m_{\text{elite}} (system/sampling); ε,λ,α\varepsilon,\lambda,\alpha (costs)

\BlankLine

\bmU\bm0\bm{U}^{\prime}\leftarrow\bm{0}

\For

i0i\leftarrow 0 \KwToT\texts1T_{\text{s}}-1 \Forl0l\leftarrow 0 \KwToL\textc1L_{\text{c}}-1 𝐱𝐱i\mathbf{x}\leftarrow\mathbf{x}_{i}\Fork0k\leftarrow 0 \KwToK\textc1K_{\text{c}}-1 \lIfl=0l=0\bmk\textU(\bmulb,\bmuub)\bm{\mathcal{E}}_{k}\sim\text{U}(\bm{u}_{lb},\bm{u}_{ub}) else \bmk𝒩(0,\bmΣ)\bm{\mathcal{E}}_{k}\sim\mathcal{N}(0,\bm{\Sigma}) \Fori0i\leftarrow 0 \KwToT1T-1 𝐱k,i+1=𝐱k,i+(f+G(𝐮i+\bmϵi,k))Δt\mathbf{x}_{k,i+1}=\mathbf{x}_{k,i}+(f+G(\mathbf{u}_{i}^{\prime}+\bm{\epsilon}_{i,k}^{\prime}))\Delta t Skminζ𝒮,𝐱\boldsymbolXs𝐱ζS_{k}\leftarrow\min_{\zeta\in\mathcal{S},\mathbf{x}\in\boldsymbol{X}^{s}}\|\mathbf{x}-\zeta\|\lIfl>0l>0Sk+=λ(1α)\bmUT\bmΣ1(\bmk+\bmU\bmU)S_{k}\mathrel{+}=\lambda(1-\alpha)\bm{U}^{\prime T}\bm{\Sigma}^{-1}(\bm{\mathcal{E}}_{k}+\bm{U}^{\prime}-\bm{U}) \lIfl=0l=0 \bmU\textbest\textselectBest(\bmU,m\textelite,S)\bm{U}_{\text}{best}\leftarrow\text{selectBest}(\bm{U},m_{\text}{elite},S) \bmU,\bmΣ\textMean(\bmU\textbest),\textCov(\bmU\textbest)\bm{U}^{\prime},\bm{\Sigma}^{\prime}\leftarrow\text{Mean}(\bm{U}_{\text}{best}),\text{Cov}(\bm{U}_{\text}{best})

\lElseIf

l<L\textc1l<L_{\text{c}}-1 \bmU,\bmΣ\textAIS()\bm{U}^{\prime},\bm{\Sigma}^{\prime}\leftarrow\text{AIS}() \lIfmin(ci)<ε\min(c_{i})<\varepsilonSi,\textreach0S_{i,\text{reach}}\leftarrow 0 else Si,\textreachS_{i,\text{reach}}\leftarrow\infty

\Return

\bmU0,i=0T\textsafe1Si,\textreach\bm{U}^{\prime}_{0},\sum_{i=0}^{T_{\text{safe}}-1}S_{i,\text{reach}} \textFindContingencyPlan\text{FindContingencyPlan}

This section introduces Nested-MPPI, which is summarized in Section 3.2. This algorithm is based on the MPPI in alsterda2021contingency and allows for ancillary controllers as proposed in trevisan2024biased. Our key innovation begins on Section 3.2, where a second level of MPPI executes in each state along each rollout of the nominal MPPI. This second level, described in Section 3.2, optimizes for a contingency plan (with a different cost function than the nominal plan) as a way of evaluating the reachability constraint, Eq. 1c.

To both find contingency trajectories and evaluate whether the reachability constraint (1c) is satisfied for any control sequence, we first roll out each control sequence \bmUi\bm{U}_{i} by passing it through the zero-noise nonlinear dynamics model to get the state sequence \boldsymbolXi\boldsymbol{X}_{i}. Then, at each state 𝐱t\mathbf{x}_{t} for t=0,,Ts1t=0,\dots,T_{s}-1, we run L\textcL_{\text{c}} rounds of adaptive importance sampling MPPI with NcN_{c} samples and TcT_{c} timesteps starting at 𝐱t\mathbf{x}_{t} to generate contingency state [\bmX0s,,\bmXL×Ncs][\bm{X}_{0}^{s},\dots,\bm{X}_{L\times N_{c}}^{s}] and control [\bmU0s,,\bmUL×Ncs][\bm{U}_{0}^{s},\dots,\bm{U}_{L\times N_{c}}^{s}] trajectories (lines 3.2-3.2 in Alg. 3.2). To encourage these contingency trajectories to reach safe states within TcT_{c} timesteps, we use state-dependent cost

c\textcontingency(\boldsymbolXs)=minζ𝒮,𝐱\boldsymbolXs𝐱ζ.c_{\text}{contingency}(\boldsymbol{X}^{s})=\min_{\zeta\in\mathcal{S},\mathbf{x}\in\boldsymbol{X}^{s}}\|\mathbf{x}-\zeta\|. (10)

Then, as seen in Figure 3, if any of the contingency trajectories successfully reaches a safe state within TcT_{c} timesteps, we mark that state 𝐱t\mathbf{x}_{t} along \bmXi\bm{X}_{i} as safe (green). If all states along \bmXi\bm{X}_{i} are marked as safe, then we mark \bmXi\bm{X}_{i} and its corresponding control \bmUi\bm{U}_{i} as safe; otherwise, we mark the trajectory as unsafe, and add ++\infty to its corresponding cost. In Section 3.2 Section 3.2, to initialize the proposed distribution for contingencies at each state, a number of sample control trajectories are drawn from a uniform distribution along control bounds 𝐮t,0:TcU(𝐮\textlb,𝐮\textub)\mathbf{u}_{t,0:T_{c}}\sim U(\mathbf{u}_{\text{lb}},\mathbf{u}_{\text}{ub}), and the cross-entropy method is used on the best mm trajectories to determine an initial mean and covariance.

3.3 Improving the Sampling Efficiency of Nested-MPPI: Frontend

Although Section 3.2 considers all costs and constraints from Eq. 1, the sampling process can result in many or even all trajectories with infinite costs (if the sampling distribution is far from the optimal distribution), which leads to uninformed updates to the distribution. To remedy this, one may simply sample more \boldsymbolU\boldsymbol{U} sequences; however, each additional sequence requires computing S\textreachS_{\text{reach}}, which requires an additional TsT_{s} MPPI computations. Thus, rather than simply increasing the number of samples, we propose to approximate locally optimal \boldsymbolU\boldsymbol{U} and consider them as a new sampling distribution(s) into Section 3.2, as described in LABEL:sec:backend. First, we find several different paths between the start and goal. For each path, we then perform a convex decomposition to find an under approximation of the safe space, and finally perform a nonlinear MPC to solve for a candidate control sequence.

3.3.1 Topo-PRM

To find several alternative paths through the workspace, we leverage Topo-PRM proposed in 9196996. As Topo-PRM finds a collection of topologically distinct paths through the environment, our planner can ”explore” the free-space and return multiple promising guiding paths. However as Topo-PRM does not consider safe zones, it may return paths that are not near safe zones, and thus no contingencies exist. Thus, we modify the algorithm to sample randomly from safe states pp fraction of the time to bias our roadmap to find paths that include safe states. To further bias the paths towards safe zones, denoting V\textmaxV_{\text}{max} as the maximum speed of our vehicle in the creation of our workspace occupancy grid, we add pseudo-obstacles by marking occupied voxels that are farther than r\textmax=V\textmaxTsΔtr_{\text}{max}=V_{\text}{max}T_{s}\Delta t away from any given safe zone.

3.3.2 Nonlinear MPC

To transform each path into an ancillary control trajectory, we first find the point EE that is r\textmaxr_{\text}{max} along the path, and then perform a convex decomposition using the approach from 7839930 of the free space along the path from our start point SS to EE. Next, we find MM knot points by discretizing M1M-1 points along the path from SS to EE. Denoting Ai𝐩<biA_{i}\mathbf{p}<b_{i} the polyhedral constraint in which point pip_{i} lies within, we solve the following nonlinear programming problem to recover a candidate ancillary control trajectory: