Skip to content

Local Planning

Local planners turn the coarse global plan into short, collision-free trajectories, reacting to obstacles the global map is too slow or too coarse to capture. Every AirStack local planner serves the same seam — the NavigateTask action at /{robot_name}/tasks/navigate in, trajectories to the trajectory controller out — so the controllers, safety monitor, takeoff/landing pipeline and GCS are planner-agnostic, and swapping planners is one include line in a stack's entry launch file.

AirStack's default local planner is MIGHTY, and the DROAN reactive planner is available as an alternative. Both ship as modules:

Planner Module Stacks World model Sensor input Compute
MIGHTY (mighty_bridge + mighty_node) — Hermite-spline planner over convex safe corridors (MIT ACL, RA-L 2026) asm_mighty full_default (default), lite_default, lite_offload_global sliding voxel map with explicit unknown space (acl-mapping) 3D lidar cloud (sensors/ouster/point_cloud) CPU
DROAN GL (droan_gl) — GPU disparity-space reactive planner (OpenGL shaders) asm_droan full_droan, full_macvo disparity graph, held on the GPU stereo disparity image GPU
DROAN Local Planner (droan_local_planner) — the CPU implementation asm_droan full_droan_cpu disparity_expansion → disparity_graph → disparity_graph_cost_map nodes stereo disparity (or depth) image CPU

Choosing: MIGHTY holds a persistent map with tunable clearance margins and takes the full 360° lidar, so it is the choice where clutter is dense and clearance matters. DROAN keeps no map and needs only a stereo/depth camera, so it suits depth-camera-only vehicles and minimal compute budgets; its accumulated collision votes cannot be erased by looking again, which can turn cluttered pockets into hover states. The judged side-by-side evaluation behind the default is in the asm_mighty README.

The trajectory controller's look-ahead point couples planner and controller: DROAN plans forward from it and appends trajectory_segment_to_add segments; MIGHTY replans anchored on the vehicle and publishes receding-horizon trajectory_override trajectories. Both are the trajectory group (§5) interchange.

Specialized maneuvers are handled by the Takeoff Landing Planner, and DROAN's candidate trajectories come from the trunk Trajectory Library.