Motion Planning
Motion Planning is the problem of finding a sequence of valid configurations that moves a robot from a start state to a goal state while avoiding obstacles. It’s one of the core challenges in robotics, bridging perception (knowing where obstacles are) and control (executing movements).
The Planning Problem
Section titled “The Planning Problem”Given:
- Start configuration: Where the robot begins (joint angles, position)
- Goal configuration: Where the robot needs to go
- Obstacles: Objects the robot must not collide with
- Robot model: Geometry and kinematics of the robot
Find:
- A collision-free path from start to goal
- Optionally: the shortest or smoothest path
Configuration Space (C-Space)
Section titled “Configuration Space (C-Space)”Instead of planning in physical space, we plan in configuration space — the space of all possible robot configurations.
Physical Space (3D) Configuration Space ┌───────────┐ ┌───────────────────┐ │ Robot │ │ │ │ ◯──◯ │ ───────► │ q = (θ₁, θ₂) │ │ / │ │ │ │ Base │ │ Dimension = DOF │ └───────────┘ └───────────────────┘- A 6-DOF robot arm has a 6D configuration space
- Obstacles in physical space become C-space obstacles
- The planning problem becomes: find a path through free C-space
Algorithm Categories
Section titled “Algorithm Categories”Sampling-Based Planners
Section titled “Sampling-Based Planners”Build a graph by randomly sampling configurations and connecting them.
RRT (Rapidly-exploring Random Tree)
1. Start with tree rooted at start configuration2. Sample random configuration q_rand3. Find nearest node q_near in tree4. Extend toward q_rand by small step → q_new5. If path to q_new is collision-free, add to tree6. Repeat until goal is reachedPRM (Probabilistic Roadmap)
1. Sample N random configurations2. Connect nearby configurations if path is collision-free3. Query: find path from start to goal through roadmap| Planner | Best For | Limitations |
|---|---|---|
| RRT | Single-query problems | Non-optimal paths |
| RRT* | Optimal paths | Slower convergence |
| PRM | Multi-query (same environment) | Preprocessing time |
Search-Based Planners
Section titled “Search-Based Planners”Discretize the space and search for optimal path.
A* — Optimal search with heuristic
f(n) = g(n) + h(n)- g(n) = cost from start to n
- h(n) = heuristic estimate to goal
Dijkstra’s — A* with h(n) = 0 (uniform cost search)
Optimization-Based Planners
Section titled “Optimization-Based Planners”Formulate path as optimization problem.
CHOMP — Covariant Hamiltonian Optimization TrajOpt — Sequential convex optimization cuMotion — NVIDIA’s GPU-accelerated motion planning
NVIDIA cuMotion
Section titled “NVIDIA cuMotion”NVIDIA’s Isaac platform includes cuMotion for GPU-accelerated motion planning. It integrates as a MoveIt 2 plugin, using the cuRobo backend for parallel trajectory optimization:
# MoveIt 2 configuration for cuMotion pluginplanning_plugin: cumotion/CumotionPlannerrequest_adapters: - default_planner_request_adapters/AddTimeOptimalParameterization - default_planner_request_adapters/FixWorkspaceBoundsplanning_scene_monitor_options: publish_planning_scene: trueKey advantages:
- Plans 1000s of trajectories in parallel on GPU
- Real-time replanning for dynamic environments
- Integrates with Isaac ROS 4.x and MoveIt 2
Practical Considerations
Section titled “Practical Considerations”Collision Checking
Section titled “Collision Checking”The most expensive operation. Approaches:
- Geometric primitives — Fast but approximate
- Mesh-based — Accurate but slower
- Signed Distance Fields (SDF) — Fast queries, precomputed
- GPU-accelerated — nvblox, cuCollision
Smoothing
Section titled “Smoothing”Raw paths are often jerky. Post-processing:
- Shortcutting (remove unnecessary waypoints)
- Spline fitting
- Time-optimal trajectory generation
Dynamic Environments
Section titled “Dynamic Environments”When obstacles move:
- Replan frequently (MPC-style)
- Use local planners for reactive avoidance
- Predict obstacle motion
Motion Planning Stack
Section titled “Motion Planning Stack”┌─────────────────────────────────────────┐│ Task Planner ││ "Pick up object A, place at B" │├─────────────────────────────────────────┤│ Motion Planner (Global) ││ Find collision-free path to goal pose │├─────────────────────────────────────────┤│ Trajectory Optimizer ││ Smooth path, respect velocity limits │├─────────────────────────────────────────┤│ Local Planner / Controller ││ Execute trajectory, react to errors │└─────────────────────────────────────────┘Common Tools
Section titled “Common Tools”| Tool | Type | Notes |
|---|---|---|
| MoveIt 2 | ROS 2 framework | Most popular, multiple backends |
| OMPL | Library | Sampling-based planners |
| cuMotion | NVIDIA | GPU-accelerated |
| Drake | Framework | Optimization-based |
| Tesseract | Library | Industrial focused |
Related Terms
Section titled “Related Terms”- Kinematics — Robot motion geometry
- SLAM — Building maps for planning
- PID Control — Executing planned trajectories
- ROS 2 — MoveIt 2 integration
Sources
Section titled “Sources”- MoveIt 2 Documentation — Motion planning framework and installation
- OMPL Library — Sampling-based planning algorithms
- NVIDIA Isaac Sim cuMotion — GPU-accelerated motion planning
- Drake — Optimization-based planning from Toyota Research Institute
- Tesseract — Industrial motion planning framework