Motion Planning - Notes¶
Agenda - What's Planning? - Planning Architecture Pipeline - Applications - Tools and Frameworks - Motion Planning algorithms - Mission Planner - Behaviour Planner - Local Planner - Motion Planning Datasets \& Libraries - References
What's Planning?¶

Src: @Waymo
The motion planning problem is the task of navigating the ego vehicle to its destination in a safe and comfortable manner while following the rules of the road.
Planning Architecture Pipeline¶

Mission planning: which street to take to achieve a mission goal.Behavioral planning: when to change lanes and precedence at intersections and performs error recovery maneuvers.Motion planning: selects actions to avoid obstacles while making progress toward local goals
Planning multiple dimensions¶
- Location
- Orientation
- Direction of travel (DoT)
Applications¶
- Self-driving vehicles
- Robotics
- Drones
Tools and Frameworks¶
- networkx
- osmnx
- CVPR 2021: Forecasting for Motion Planning ...
State-of-the-art Motion Planning Approaches¶
- Global Planner
|
|- Long-Term Planner
|
|- Short-Term Planner
|
|- Local Planner
|
|- Control Stack
- Global planner (Long-term planner) : map + static obstacles
- Rule Based Planning (pipeline method)
- Predictive planning
- Imitation learning
- Reinforcement learning
- Parallel learning
- Trajectory planning
- Graph Based Planning
- Probabilistic Graph Based Planning
-
Optimization Based Planning
- Linear Programming
- NonLinear Programming
-
Local planner (Short-term planner): dynamic obstacles
- Reactive planning (trajectory roll-out planner)
Motion Planning Algorithms¶
Categories¶
- Grid-based search
- Interval-based search
- Geometric algorithms
- Artificial potential fields
- Sampling-based algorithms
- ...
A* (star) Search
OPEN<-{1}
past_cost[1]<-0, past_cost[node]<-infinity for node €{2,...,N}
while OPEN is not empty do
current first node in OPEN, remove from OPEN
add current to CLOSED
if current is in the goal set then
return SUCCESS and the path to current
end if
for each nbr of current not in CLOSED do
tentative_past_cost past_cost[current]+cost[current,nbr]
if tentative past cost < past cost[nbr] then
past_cost[nbr] tentative_past_cost
parent[nbr] current
put (or move) nbr in sorted list OPEN according to
est_total_cost[nbr] past_cost[nbr] + heuristic_cost_to_go(nbr)
end if
end for
end while
return FAILURE
Dijkstra
1 function Dijkstra(Graph, source):
2
3 for each vertex v in Graph.Vertices:
4 dist[v] ← INFINITY
5 prev[v] ← UNDEFINED
6 add v to Q
7 dist[source] ← 0
8
9 while Q is not empty:
10 u ← vertex in Q with min dist[u]
11 remove u from Q
12
13 for each neighbor v of u still in Q:
14 alt ← dist[u] + Graph.Edges(u, v)
15 if alt < dist[v]:
16 dist[v] ← alt
17 prev[v] ← u
18
19 return dist[], prev[]
Kruskal's algorithm ?
algorithm Kruskal(G) is
F:= ∅
for each v ∈ G.V do
MAKE-SET(v)
for each (u, v) in G.E ordered by weight(u, v), increasing do
if FIND-SET(u) ≠ FIND-SET(v) then
F:= F ∪ {(u, v)} ∪ {(v, u)}
UNION(FIND-SET(u), FIND-SET(v))
return F
Breadth First Search (BFS)

- D* (D-star): @TODO
- Depth-First Search (DFS) uses a last-in-first-out (LIFO) stack instead of a queue for the open set.
- Suboptimal A* search
- Rapidly-exploring random tree
- Probabilistic roadmap
Motion Planning Datasets & Libraries¶
Hello World!¶
@TODO
References¶
Wikipedia:
Courses: - Motion Planning Course- Self-Driving Cars Specialization of University of Toronto
DARPA Challenge: - Boss Autonomous Driving
MathWorks - MATLAB - Motion Planning with MATLAB
Academia: