← Back to Autonomy
Vol. I · No. 01 · An Interactive Monograph ○ ○ ○ Robotics & Autonomy
A Field Guide to

Path Planning

from grids & graphs to sampling, curves, and optimal trajectories
How does a robot, a car, or a vacuum cleaner decide where to go, and which way to get there? This is the problem of path planning. We will explore the principal families of algorithms, with interactive figures you can touch, drag, and watch in motion.
Figures & simulations · interactive Runs entirely in your browser No dependencies
Ch. I

What is a Path?

and why finding one is harder than it looks

Imagine a small robot standing in the corner of a room. It wants to reach a charging dock at the opposite corner. Between them lies a jumble of chairs, table legs, a sleeping cat, and a rug it must not slide onto. The robot needs to choose a sequence of motions (a path) that is safe, feasible, and (ideally) short.

Formally, path planning asks: given a map of the world, a starting configuration qstart, and a goal qgoal, find a continuous sequence of configurations connecting them that avoids obstacles and respects the vehicle's motion constraints.

That word (configuration) is the first subtlety. For a point robot, configuration is just (x, y). For a car, it is (x, y, θ) because orientation matters: a car cannot slide sideways. For a robot arm, it is the vector of every joint angle. The space of all configurations is called the configuration space (or C-space), and the planning problem really lives in there, not in the physical room.

Figure 1.1 · The Problem
start goal
A short, collision-free path threads through a messy world. Planners differ in how they find such a path.

Three Questions Every Planner Answers

1. Is there a path at all? (completeness)  ·  2. How good is the path we found? (optimality)  ·  3. How fast can we find it? (complexity). Every algorithm makes a different trade among these three.

A recurring distinction: global planners look at the whole map and produce a complete path; local planners react to what is immediately around the robot. A practical autonomous system almost always uses both: a global planner chooses the overall route, a local planner adapts it in real time as the world changes or new obstacles appear.

Ch. II

A Family Tree of Planners

how the main approaches relate to one another

The algorithms we study fall naturally into three great families, distinguished by how they represent the free space. Everything that follows in this guide is a variation on one of these ideas.

The Three Families

with the methods from our reading list, organized by approach

① Graph / Grid Search

Discretize the world into cells or a graph, then search.

  • Dijkstra
  • A (A-star)
  • D & D Lite
  • Potential Field method
  • Grid-based coverage
  • Particle Swarm Optimization

Best for: structured, known, bounded environments.

② Sampling-Based

Sprinkle random samples through configuration space & connect them.

  • Probabilistic Roadmap (PRM)
  • Rapidly-Exploring Random Trees (RRT)
  • RRT (asymptotically optimal)
  • RRT + Reeds–Shepp
  • LQR-RRT
  • State-lattice planning
  • biased polar sampling
  • lane sampling

Best for: high-dimensional, complex spaces (manipulators, cars).

③ Curves, Controls & Trajectories

Compute smooth curves or time-parametrized trajectories directly.

  • Dynamic Window Approach (DWA)
  • Quintic polynomial trajectories
  • Reeds–Shepp paths
  • LQR-based path planning
  • Optimal trajectories in a Frenet frame

Best for: producing executable motions respecting dynamics.

These families are not rivals; they are layers. A self-driving car, for instance, may use a graph search over a road network for routing (family ①), sample trajectories in a Frenet frame along that route (family ③), then use a reactive local planner like DWA to avoid a dog that just ran into the street (family ③ again, but local). Let us meet each family in turn.

Ch. III

Grids, Graphs & the Shortest Path

Dijkstra, A, and the art of directed search

Slice the world into a grid of square cells. Mark each cell as free or blocked. Now the robot lives on a graph: each free cell is a node, neighbors are connected by edges. Suddenly, path planning becomes a problem from a textbook: the shortest path in a graph. This is the oldest and still most widely used approach.

Dijkstra (1959): the patient explorer

Dijkstra's algorithm expands outward from the start like a wavefront, always choosing next the unvisited cell with the smallest cumulative cost. It is guaranteed to find the shortest path and is beautifully simple. Its weakness is that it is uninformed: it will happily expand cells in the wrong direction because it does not know where the goal is.

A (1968): the clever cousin

A adds a single trick: a heuristic h(n) estimating the remaining distance from cell n to the goal. Instead of expanding by accumulated cost g(n) alone, it expands by f(n) = g(n) + h(n). When the heuristic is admissible (never overestimates the true remaining cost), A still finds the optimal path, but typically explores dramatically fewer cells.

f(n) = g(n) + h(n) TOTAL ESTIMATED COST  =  COST SO FAR  +  ESTIMATED COST-TO-GO

Setting h(n)=0 recovers Dijkstra exactly. Setting h(n)=Euclidean distance gives classic A on a grid. Setting h(n)= something that over-estimates breaks the optimality guarantee but often speeds things up further.

Fig. 3.1 · Interactive
Dijkstra vs. A, race across a grid
cells expanded: 0
start goal wall open / frontier expanded (closed) path
Try it. Click and drag on the grid to paint walls. Switch Mode to relocate the start or goal. Toggle between A and Dijkstra and hit Play, watch how A drives almost directly toward the goal, while Dijkstra fans out symmetrically in every direction. Cells expanded is the best single-number measure of an algorithm's efficiency on this problem.

Use cases

Routing on road networks (Google Maps, OSRM) · warehouse robots on a fixed floorplan · video-game NPCs · graph search on known, quasi-static maps. A is the default first choice when your world fits on a grid.

Practical notes

Memory grows as O(N) in the number of cells, a 1 cm resolution map of a house is fine; a 1 cm map of a city is not. For long horizons, use hierarchical A or JPS (Jump Point Search). Always inflate obstacles by the robot's radius before searching, or the path will clip corners.

When the map changes: D and D Lite

Classic A assumes the map is fixed. But real robots constantly discover new obstacles as they drive. Replanning from scratch with A every time a new obstacle appears is wasteful, most of the map did not change. The D family of algorithms (Stentz, 1994; Koenig & Likhachev, 2002) solves this by doing incremental search: they re-use as much of the previous search tree as possible and only recompute the parts affected by the change.

Figure 3.2 · incremental replanning
new wall! search tree reused
D Lite keeps the part of the search that is still valid (left, green) and repairs only the affected region when a new obstacle appears.
Figure 3.3 · why it matters
A⋆ replanning from scratch ∼100% of search cost D⋆ Lite incremental ∼10–20% Typical replan cost when a small obstacle appears on the planned path.
On a field robot that replans several times per second, D Lite can be the difference between real-time and not.

A practical rule of thumb

Use A when the map is static. Use D Lite when the map changes as you drive (outdoor robots, unknown environments). The ROS global_planner package, the classic NASA Mars rover autonomy stack, and most modern ground robots use variants of D Lite for this reason.
Ch. IV

The Potential Field Method

physics as a planner, attractive goals and repulsive obstacles

Suppose we replace algorithmic search with physics. Imagine the goal as a valley that pulls the robot toward itself, and every obstacle as a hill that pushes it away. The robot simply rolls downhill, following the gradient of the total potential. This idea, introduced by Oussama Khatib in 1986, is called the artificial potential field method.

U(q) = Uatt(q) + Urep(q)   →   F(q) = −∇U(q) TOTAL POTENTIAL = ATTRACTION TO GOAL + REPULSION FROM OBSTACLES  ·  FORCE = NEGATIVE GRADIENT

The attractive term is typically a quadratic well centered on the goal. The repulsive term is zero beyond some influence radius and grows rapidly as the robot nears an obstacle. At any position, the robot computes the local gradient and takes a small step against it. There is no search: the computation per step is essentially constant, which is why this method is attractive for real-time reactive control.

Fig. 4.1 · Interactive
A robot rolling down a potential landscape
robot goal (attractor) obstacles (repellers) trajectory
Try it. Drag the green robot, the red goal, or the orange obstacles anywhere. Change the visualization to see the force field (arrows) or the potential landscape (dark = low energy = attractive). Then press Launch, the robot follows the gradient. Try to trap the robot in a U-shape of obstacles. You will discover the method's famous weakness: local minima.

Why engineers still love it

Constant-time per step. Trivially parallelizable. Produces beautifully smooth motion. Naturally combines many constraints (goals, obstacles, lane centers) as a sum. Still the backbone of many industrial robot controllers and of swarm behaviors.

The local-minimum problem

In concave obstacle arrangements, repulsive and attractive forces can cancel at a point that is not the goal. The robot freezes. Cures include: random jitter to escape, combining with a grid search at a coarser scale, or using harmonic potentials (Laplace equation) which mathematically cannot have local minimaat the cost of solving a PDE.
§ III · supp.

Two Grid-Based Cousins

coverage planning & particle-swarm optimization

Grid-based coverage planning

What if the goal is not to reach a point, but to visit every cell? Lawn mowers, robot vacuums, pool cleaners, and minesweeping drones all need coverage paths, a path that sweeps the entire free space. The simplest approach is boustrophedon (ox-plow) decomposition: divide free space into rectangular strips and trace a back-and-forth pattern through each. More sophisticated methods use spanning trees over the grid or solve the Chinese-Postman problem on the adjacency graph.

Figure 4.2 · boustrophedon coverage
A back-and-forth sweep around an obstacle. Used by iRobot, Roomba, and most commercial floor-cleaning robots.

Particle Swarm Optimization (PSO)

PSO is not specifically a path planner, it is a general optimization metaheuristic, but one that is often used to search for good paths. Inspired by bird flocking, it maintains a population of candidate solutions ("particles") that move through a search space, attracted toward both their own best-known position and the swarm's best-known position.

For path planning, each particle represents a candidate path (a sequence of waypoints). The "fitness" combines path length, smoothness, and clearance from obstacles. The swarm collectively descends toward low-cost paths. PSO is stochastic, handles non-convex cost landscapes gracefully, and parallelizes well, but provides no optimality guarantees and tuning its hyperparameters is more art than science.

When to reach for PSO

When your cost function is messy (non-smooth, non-convex, includes many soft constraints like "stay near the lane center" + "minimize jerk" + "respect a speed profile"), classical planners struggle. PSO, and its cousin, the genetic algorithm, is a pragmatic choice when you need a good path and analytic structure is missing.
Ch. V

Sampling-Based Planning

PRM, RRT, RRT, when the world is too big for a grid

A grid over a 2D room has a few thousand cells. A grid over the 7-dimensional configuration space of a robotic arm would have trillions. This is the curse of dimensionality, and it is why grid search breaks down for manipulators, humanoids, and cars with orientation. In 1995, Lydia Kavraki introduced the Probabilistic Roadmap (PRM), and in 1998 Steven LaValle introduced Rapidly-Exploring Random Trees (RRT). These methods sidestep the dimensionality problem by sampling configurations randomly, checking only those for collision, and connecting them into a graph.

The magic of sampling-based planners is that they are probabilistically complete: if a path exists, the probability of finding one approaches 1 as the number of samples grows. They trade exactness for tractability, and the trade is almost always worth it.

Probabilistic Roadmap (PRM)

PRM is a multi-query planner: you build a reusable map once, then query it with many different start/goal pairs. The construction is two phases:

  1. Sampling phase. Sample N random configurations. Discard any that lie in obstacles. What remains are nodes of a graph.
  2. Connection phase. For each node, attempt to connect it (with a straight-line "local planner") to its k nearest neighbors. If the straight line is collision-free, add the edge.

To answer a query, connect the start and goal to the roadmap, then run A on the graph. Because the roadmap is reused, the per-query cost is small, ideal for environments where many paths must be planned in the same world (e.g. warehouse robotics, robot-arm pick-and-place).

Fig. 5.1 · Interactive
Building a probabilistic roadmap
0 nodes · 0 edges
start goal obstacles roadmap shortest path
Try it. Drag the start (green) or goal (red). Click Sample repeatedly to lay down random collision-free nodes. Connect stitches nearby nodes together. Find path runs A on the roadmap. Notice how the same roadmap answers any start-goal query in milliseconds: that is the point of PRM.

Rapidly-Exploring Random Trees (RRT)

RRT answers a single query. Starting from the start configuration, it grows a tree by repeatedly (1) sampling a random point qrand, (2) finding the nearest tree node qnear, and (3) extending from qnear toward qrand by a small step, provided the step is collision-free. The beauty of this simple rule is that the tree preferentially explores unexplored regions: hence "rapidly-exploring."

RRT is almost embarrassingly well-suited to kinodynamic planning (where the robot has velocity/curvature constraints): instead of a straight line, the "extend" step can use any control input that respects the dynamics. This is why RRT is the workhorse of autonomous driving research, drone planning, and humanoid motion.

RRT: the optimal sibling

Vanilla RRT finds a path, but rarely the shortest one. RRT (Karaman & Frazzoli, 2011) adds a rewiring step: whenever a new node is added, the algorithm checks whether existing nearby nodes would have shorter paths if they were re-parented through the new node. This local improvement, done thousands of times, yields a tree that converges to the globally optimal path as samples grow. RRT is asymptotically optimal.

Fig. 5.2 · Interactive
A tree grows rapidly toward the unknown
0 nodes · no path
start goal region obstacles tree edges best path to goal
Try it. Drag start, goal, or obstacles. Press Grow to animate. Toggle RRT on and off, on the same scene, RRT will slowly straighten its solution path over time (it is asymptotically optimal), while plain RRT commits to the first path it finds. Goal bias is the probability, per iteration, that we sample the goal directly instead of a random point, a small bias accelerates convergence dramatically.

Variants for the real world

RRT with Reeds–Shepp paths. The straight-line "extend" step of vanilla RRT is illegal for a car, a car cannot turn on the spot. Replace the straight-line local planner with a Reeds–Shepp curve (the shortest path for a car that can go forward or backward with bounded turning radius) and the tree grows only executable motions. This is how most parking-lot planners work.

LQR-RRT. For systems with complicated dynamics (drones, self-balancing robots, spacecraft), even Reeds–Shepp is not enough. LQR-RRT linearizes the system around each tree node and computes an LQR controller as the local planner. The "distance" between nodes becomes the LQR cost-to-go, which respects the actual dynamics. Result: a tree where every edge is an executable closed-loop trajectory.

State lattices. Instead of sampling continuously, a state lattice pre-computes a small library of dynamically-feasible motion primitives (e.g. for a car: "go straight 5 m", "swerve 30° left and continue 5 m", ...). Plan by choosing a sequence of primitives. The lattice turns continuous motion planning back into graph search (so you can run A on it) while respecting dynamics.

Biased polar sampling & lane sampling. Pure uniform sampling is wasteful in structured environments. On a road, we know the vehicle should stay near the lane center: sample laterally offset candidate trajectories (lane sampling) or, in polar coordinates from the current pose (biased polar sampling), with a distribution tilted toward the expected direction of travel. Both are staples of the DARPA Urban Challenge vehicles and their descendants.

Why sampling wins in high dimensions

Consider a 7-DOF arm. A coarse grid with 10 cells per axis has 107 = 10 million cells, most of which are useless, inside walls or bodies. 1 000 well-chosen random samples capture the connectivity of the free space almost as well. Sampling-based planners exploit the fact that the essential topology of a space is usually lower-dimensional than the space itself.
Ch. VI

The Dynamic Window Approach

planning in velocity space instead of position

All the methods so far plan a path as a sequence of positions. The Dynamic Window Approach (Fox, Burgard & Thrun, 1997) turns the problem on its head: plan a sequence of velocities instead. At each control cycle (typically 10–20 Hz), DWA asks a remarkably concrete question:

Which pair (v, ω) of linear and angular velocity should I command for the next tick? THE DYNAMIC WINDOW IS THE SET OF (v, ω) PAIRS PHYSICALLY ACHIEVABLE IN ONE TICK

The dynamic window is the subset of velocity space the robot can actually reach in one control cycle, constrained by its current velocity and acceleration limits. DWA discretizes this window into a grid, simulates a short-horizon trajectory for each candidate (v, ω), rejects any that would collide, and scores the survivors by a weighted combination of:

The highest-scoring pair is commanded, and the whole procedure repeats next tick. This makes DWA a local reactive planner (myopic by design), but extremely fast and naturally respectful of the robot's actual dynamics. It pairs beautifully with a global planner that provides waypoints for the heading term.

Fig. 6.1 · Interactive
Arcs through velocity space, DWA in action
robot goal obstacles chosen arc trail
Try it. Drag the goal or the obstacles. The robot samples a fan of candidate arcs (each representing one (v, ω) pair it could command), scores them, and drives the best one for a tick before re-planning. Increase the clearance weight to see the robot become cautious; increase the speed weight and it cuts corners. Block its path with obstacles and watch it weave around.

Use cases

DWA is the default local planner in ROS Navigation stacks for differential-drive robots (TurtleBot, Fetch, PR2, many AGVs). It is especially well-matched to robots with significant inertia, carts, mobile manipulators, where curvature and acceleration limits truly matter.
Ch. VII

Smooth Curves & Executable Trajectories

quintic polynomials, Reeds–Shepp paths & LQR

The paths produced by A on a grid are jagged, sequences of 45° segments. A real vehicle cannot execute them without slamming on the brakes at each corner. Between the planner's output and the actuators, there is almost always a smoothing or trajectory generation stage that turns the geometric path into a time-parametrized trajectory respecting velocity, acceleration, and jerk limits.

Quintic polynomials: the smooth connector

To connect two states smoothly, we need continuity of position, velocity, and acceleration at both endpoints, six constraints total. A fifth-degree polynomial has exactly six coefficients, so it is the lowest-order polynomial that can satisfy all these boundary conditions. One per axis gives a smooth 2D (or 3D) trajectory:

x(t) = a5t5 + a4t4 + a3t3 + a2t2 + a1t + a0 A QUINTIC (5th-DEGREE) POLYNOMIAL, SIX COEFFICIENTS FIT SIX BOUNDARY CONDITIONS
Fig. 7.1 · Interactive
A quintic polynomial connecting two states
start state goal state quintic trajectory velocity vectors (draggable)
Try it. Drag the green/red position dots to set start and end positions. Drag the orange tip arrows to change the entry and exit velocities (direction & magnitude). The quintic automatically recomputes. Notice how the curve always leaves and arrives tangent to the velocity arrows, and is C2-continuous, no discontinuities in position, velocity, or acceleration.

Reeds–Shepp paths: the shortest route for a car

A car with minimum turning radius R cannot move sideways. What is the shortest path between two arbitrary poses (position + heading) under this constraint? Dubins (1957) solved it for forward-only motion: the answer is always a concatenation of straight segments and arcs of radius R, with exactly six possible patterns (LSL, RSR, LSR, RSL, LRL, RLR).

Reeds and Shepp (1990) extended this to allow reverse motion, which is essential for parking. They showed there are exactly 48 word patterns (later reduced to 46). Given any two poses, you enumerate all 46, pick the shortest feasible one, and you have an optimal path.

Fig. 7.2 · Dubins path
L – S – L (Dubins, forward only)
Forward only. Turn left, drive straight, turn left again.
Fig. 7.3 · Reeds–Shepp path
L – Rback – L – Rback (3-point turn)
Reeds–Shepp allows reversals (dashed). The classic parallel-parking wiggle is exactly such a path.
Fig. 7.4 · state lattice
five feasible motion primitives
A state lattice pre-computes a library of feasible motions. Chaining them gives kinodynamic paths via plain graph search.

LQR-based planning

The Linear-Quadratic Regulator is the optimal controller for a linear dynamical system with quadratic cost. Given dynamics ẋ = Ax + Bu and cost ∫(xTQx + uTRu)dt, the optimal control law is the famous linear feedback u = −Kx, where K is the solution of an algebraic Riccati equation.

For path planning, LQR provides a natural distance metric: the cost-to-go xTPx (where P is the Riccati solution) tells us how costly it is, in control effort, to drive the system from any state to a reference state. Coupling this with RRT (yielding LQR-RRT) gives a planner whose notion of "near" is based on actual dynamics, not Euclidean geometry, essential for systems where the two diverge wildly (e.g. a flying drone cannot easily get "straight down" quickly).

The three roles of LQR in planning

① As a local controller that tracks a precomputed trajectory.   ② As a distance metric for sampling-based planners (LQR-RRT).   ③ As a trajectory generator, solving a finite-horizon LQR problem produces an optimal trajectory for reaching the goal directly.
Ch. VIII

Optimal Trajectories in a Frenet Frame

why self-driving cars plan in curved coordinates

A car on a road is not really free to go anywhere. It should stay near the lane center, respect a target speed, and overtake only when safe. Reasoning about these rules in raw (x, y) coordinates is awkward, a tight curve on a road means an acceptable path in (x, y) looks nothing like the lane. The solution, introduced to autonomous driving by Werling et al. (2010), is to plan in a Frenet frame attached to the road itself.

Along the road's center-line, we define two coordinates:

s = distance along the lane     d = perpendicular offset from the center-line THE FRENET (or station-lateral) COORDINATES. THE ROAD IS "STRAIGHTENED OUT".

In this frame, a trajectory becomes two independent 1D problems: a longitudinal one s(t) governing speed, and a lateral one d(s) governing lane offset. We generate many candidate trajectories by sampling end-states (final offset, final speed, final time) and joining them with quintic polynomials. Each candidate is evaluated by a cost that penalises deviation from the lane center, harsh jerk, speed error, and proximity to other vehicles. The cheapest collision-free candidate wins, and it is re-planned a few times per second as the scene evolves.

Fig. 8.1 · Interactive
Frenet sampling along a curved road
ego car other vehicle chosen trajectory rejected candidates
Try it. Drag the obstacle vehicle (red) anywhere on the road. The ego car (green) samples a fan of lateral candidates in Frenet space at each tick, rejects those that collide, and drives the cheapest remaining one. This is exactly the structure of most modern highway self-driving stacks, Apollo, Autoware, and many production systems build on the Werling / Kammel formulation.

Why Frenet is so successful on roads

The Frenet decomposition matches the natural structure of driving: speed (longitudinal) and lane choice (lateral) are the two decisions a driver actually makes. Cost shaping becomes straightforward, you can literally write "stay within ±0.2 m of center, maintain 13 m/s" as a penalty, and the optimizer does the right thing.
Ch. IX

Comparison & Practical Selection

a working engineer's decision table

No single planner dominates. The right choice depends on the structure of your problem: dimensionality, static vs. dynamic, known vs. unknown, and what you mean by "optimal." The table below is a condensed decision aid.

Method Family Complete? Optimal? Dynamics? Typical domain
Dijkstra Grid search ✓ on discretized grid ✓ shortest in graph ignored road-network routing
A Grid search ✓ if heuristic admissible ignored games, indoor robots, GPS nav
D Lite Grid search (incremental) ignored field robots in unknown terrain
Potential Field Reactive / local ✗ (local minima) partial (smooth) real-time reactive control, swarms
Coverage (boustrophedon) Grid decomposition ✓ covers free space ✓ under length metric ignored floor cleaning, mowing, surveying
PSO Stochastic optimization ✗ (no guarantee) ✗ (heuristic) can include messy cost landscapes
PRM Sampling (multi-query) probabilistic probabilistic (PRM) extension needed robot arms, static worlds w/ many queries
RRT Sampling (single-query) probabilistic ✓ (kinodynamic variants) manipulators, first-solution problems
RRT Sampling (single-query) probabilistic asymptotically optimal ✓ with correct local planner when any-time improvement matters
RRT + Reeds–Shepp Sampling + curves probabilistic asymptotically optimal ✓ car kinematics parking, low-speed driving
LQR-RRT Sampling + control probabilistic asymptotically optimal ✓ arbitrary linearizable dynamics drones, spacecraft, balancing robots
State Lattice Discretized trajectories resolution-complete ✓ on lattice ✓ by construction on-road driving at medium speed
DWA Reactive / local ✗ (local) local-optimal only indoor diff-drive, mobile bases
Quintic polynomial Trajectory gen. , smooth by design ✓ up to jerk connecting waypoints, smoothing
Reeds–Shepp Closed-form curves ✓ analytical ✓ shortest for car ✓ car kinematics parking, short-range driving
LQR planning Optimal control ✓ (locally) ✓ quadratic cost ✓ linearized trajectory smoothing, reference tracking
Frenet trajectory opt. Sampling on curves ✓ within lane structure within sampling set ✓ dynamics-aware highway & urban driving

Where to use which, practical scenarios

① Self-driving on a highway

Frenet + quintic for trajectory, a behavior layer picking lane-change decisions, A or lane graphs for global routing. The Frenet formulation matches road structure perfectly.

② Parking a car

Hybrid A on a grid enriched with car orientation, using Reeds–Shepp as the heuristic and final connector. Shipped by almost every OEM.

③ Warehouse floor robot

A for global route on a known map, DWA or TEB for local avoidance of humans & pallets. The ROS nav stack default.

④ Mars rover

D Lite for efficient replanning as new terrain is discovered. Pioneered on NASA's Mars Exploration Rovers and refined for Curiosity & Perseverance.

⑤ Robotic arm pick-and-place

PRM or RRT-Connect in the arm's joint space. High dimensionality rules out grids; sampling dominates.

⑥ Drone racing / aggressive flight

LQR-RRT or trajectory optimization (e.g. minimum-snap polynomials) for dynamic feasibility; MPC to track.

⑦ Robot vacuum

Boustrophedon coverage with online re-decomposition as the map is explored. Add a local reactive controller for pet avoidance.

⑧ Video-game AI

A on a navigation mesh (nav-mesh). Hierarchical A for open-world maps. String-pulling for smooth post-processing.

· · · · ·

The one piece of advice that matters most

Layer. Real systems rarely use one planner. A global planner for strategy, a local planner for reaction, a trajectory generator for smoothness, and a controller to execute. Each layer should be the simplest tool that handles its sub-problem. When a single monolithic planner feels inadequate, the answer is usually not a fancier planner: it is to split the problem.
Refs.

References & Further Reading

the foundational papers and classic textbooks
  1. Dijkstra, E. W. (1959). A note on two problems in connexion with graphs. Numerische Mathematik, 1(1):269–271. the original shortest-path algorithm.
  2. Hart, P. E., Nilsson, N. J., Raphael, B. (1968). A formal basis for the heuristic determination of minimum cost paths. IEEE Trans. on Systems Science and Cybernetics. A.
  3. Stentz, A. (1994). Optimal and efficient path planning for partially-known environments. Proc. ICRA. D.
  4. Koenig, S., Likhachev, M. (2002). D Lite. Proc. AAAI. the incremental replanner used on Mars rovers.
  5. Khatib, O. (1986). Real-time obstacle avoidance for manipulators and mobile robots. Int. J. Robotics Research, 5(1):90–98. potential fields.
  6. Kavraki, L. E., Švestka, P., Latombe, J.-C., Overmars, M. H. (1996). Probabilistic roadmaps for path planning in high-dimensional configuration spaces. IEEE Trans. on Robotics & Automation. PRM.
  7. LaValle, S. M. (1998). Rapidly-exploring random trees: A new tool for path planning. TR 98-11, Computer Science, Iowa State University. RRT.
  8. Karaman, S., Frazzoli, E. (2011). Sampling-based algorithms for optimal motion planning. Int. J. Robotics Research, 30(7):846–894. RRT and PRM, with asymptotic optimality.
  9. Perez, A., Platt, R., Konidaris, G., Kaelbling, L., Lozano-Perez, T. (2012). LQR-RRT: Optimal sampling-based motion planning with automatically derived extension heuristics. Proc. ICRA.
  10. Fox, D., Burgard, W., Thrun, S. (1997). The dynamic window approach to collision avoidance. IEEE Robotics & Automation Magazine, 4(1):23–33.
  11. Dubins, L. E. (1957). On curves of minimal length with a constraint on average curvature and with prescribed initial and terminal positions and tangents. American J. of Mathematics, 79(3):497–516.
  12. Reeds, J., Shepp, L. (1990). Optimal paths for a car that goes both forwards and backwards. Pacific J. of Mathematics, 145(2):367–393.
  13. Werling, M., Ziegler, J., Kammel, S., Thrun, S. (2010). Optimal trajectory generation for dynamic street scenarios in a Frenét frame. Proc. ICRA.
  14. Pivtoraiko, M., Knepper, R. A., Kelly, A. (2009). Differentially constrained mobile robot motion planning in state lattices. J. of Field Robotics, 26(3):308–333.
  15. Kennedy, J., Eberhart, R. (1995). Particle swarm optimization. Proc. ICNN.
  16. LaValle, S. M. (2006). Planning Algorithms. Cambridge University Press. the canonical textbook; free online.
  17. Choset, H. et al. (2005). Principles of Robot Motion: Theory, Algorithms, and Implementations. MIT Press. covers coverage planning and much else.
  18. AtsushiSakai et al. PythonRobotics. github.com/AtsushiSakai/PythonRobotics. clean reference implementations of essentially every algorithm in this monograph; the family-tree image in our introduction is derived from this library's documentation.