We address the problem of efficiently organizing search over very large trees, which arises in many applications such as autonomous driving, aerial vehicles, and so on; here, we are motivated by high speed off-road autonomy, where real-time planning is essential. Classical approaches use graphs of motion primitives and exploit dominance to mitigate the curse of dimensionality and prune expansions efficiently. However, for complex dynamics, repeatedly solving two-point boundary-value problems makes graph construction too slow for fast kinodynamic planning. By default, running A* search without any pruning (Fig. 1 (a)) results in a tree that grows exponentially with the number of vertices. Hybrid A* (HA*)[1] addressed this challenge by searching over a tree of motion primitives and introducing approximate pruning using a grid-based dominance check (Fig. 1 (b)), where vertices with worse cost to come are pruned.
To overcome this, we propose Incremental Generalized Hybrid A* (IGHA*), an anytime tree-search framework that dynamically adapts the search resolution on the fly. IGHA* provably matches or outperforms HA*, and has been tested in both simulation and in the real world on a small scale off-road platform (Fig. 3 (a),(b)). Fig. 3 shows a sneak peek of the results we show later.
Incremental Generalized Hybrid A* breaks the the coupling between approximate dominance and participation in the search process that exists in HA*. This enables vertices to be reused, resurrected, or injected from earlier searches based on domain knowledge or resolution changes. Within our framework, it is not necessary to always increase the resolution. In our work, we create a simple instance of IGHA* that reduces resolution after detecting that it has escaped a bottleneck, and introduce a hyperparameter (hysteresis) that controls how many confirmations of escaping a bottleneck are needed to trigger the resolution decrease.
Consider the scenario where the resolution is too low for HA* to find a solution for either the Single-Bottleneck (SB) scenario (Fig. 5 (a-d)), or the Multi-Bottleneck (MB) scenario (Fig. 5 (e-h)). IGHA* variants like IGHA*-∞ (wait for infinite confirmations) only increase resolution and spend more expansions after escaping a bottleneck (Fig. 5 (b)) when a lower resolution could suffice (Fig. 5 (c)) -- which is what IGHA*-0 (wait for 0 confirmations) does (Fig. 5 (d)). However, variants like IGHA*-0 can prematurely switch back in situations where staying at the higher resolution is necessary and spend extra expansions (Fig. 5 (h)) by comparison to IGHA*-∞ (Fig. 5 (f)). In both scenarios, an intermediate value for the hysteresis hyperparameter can provide intermediate behavior; doing better than IGHA*-∞ in SB (Fig. 5 (b)) and better than IGHA*-0 in MB (Fig. 5 (f)).
Zooming out, in contrast to HA*M, since IGHA* can both increase and decrease the resolution, it allows for much faster solutions (Fig. 4 (a),(b)).
We ablate over the hysteresis hyperparameter using 2D environments (shown in Fig. 5) and show that lower values of the hysteresis hyperparameter generally work better for the Single-Bottleneck scenario (Fig. 6 (a)), and higher values work better for the Multi-Bottleneck scenario (Fig. 6 (b)), with intermediate values providing intermediate behavior. Rank here refers to the percentage of times (darker = higher) a planner achieved a rank for first-path; lower ranks (left) = fewer expansions to find the first solution.
In HA*, the resolution parameter affects performance. While IGHA* does not depend on this tuning, in this instance of IGHA*, we introduced a new hyperparameter (hysteresis). So did we just introduce another tuning parameter that also drastically affects overall performance? To show that this is in fact not the case, we ablate over the hysteresis hyperparameter for a 3DoF kinematic car (Fig. 7(a),(b), using maps from MovingAI[5] and BeamNG[6]). Fig. 7(c) shows that regardless of the hysteresis value, we see a significant speed-up compared to HA*M. The solid lines show the speed up in terms of expansions, whereas the dotted lines show the wall-clock speed-up for our C++/CUDA implementation where we take into consideration the time taken to switch between resolutions -- lower hysteresis values switch more often, leading to higher wall-clock penalty.
Using BeamNG[6] as our simulation environment, we evaluate IGHA* against HA*M, as well as state of the art sampling based planners for kinodynamic planning KPIECE[3] and SST[4]. We use same MPC(MPPI[2]) to track the planned path. As a sanity check for problem difficulty, we run just the MPC with a longer horizon (shown as "MPC" in the legends) -- if the problem setting was trivial, the MPC would perform similarly to the best planner.
We show that IGHA* outperforms HA*M, as well as the two state of the art sampling based planners, and show an anecdotal comparsion of all the methods in Fig. 8 (a) and (b) respectively. We also show representative videos for IGHA* vs HA*M in Fig. 8 (c),(d).
We also demonstrate the planner running real-time on an Nvidia Orin Nx (~4 Hz) on the HOUND platform[7] (Fig. 10 (a),(b)). Here, the planner is running in real-time while sharing compute with the perception system and the MPC that run on board the Jetson on the robot, while the robot operates at speeds ~2 m/s in real off-road environments.