Planning
Planning is the process of generating decisions and motion strategies based on perceived information.
During this stage, the robot considers the environment, obstacles, and task objectives, etc., to determine where to go, what to do, how to get there, and how to do it.
1. Goal Planning
-
Goal: Define the target position or mission objective
-
Input: User command / mission planner
-
Output: Target pose or goal state
-
Examples:
- Navigate to a specific location (x, y)
- Follow a predefined route
- Perform task-based goals (e.g., pick & place)
-
ROS 2 Example:
/goal_pose
2. Global Planning
-
Goal: Generate a collision-free path from current position to the goal
-
Input: Map + current pose + goal
-
Output: Global path
-
Common Algorithms:
- A* (A-star)
- Dijkstra
- Hybrid A* (Autoware)
-
ROS 2 Topics Example:
/plan
3. Local Planning
-
Goal: Generate real-time motion commands while avoiding obstacles
-
Input:
- Global path
- Sensor updates (dynamic obstacles)
-
Output: Short-term trajectory or velocity commands
-
Examples:
- Dynamic Window Approach (DWA)
- Model Predictive Control (MPC)
-
ROS 2 Topics Example:
/local_plan
/cmd_vel
4. Behavior Planning
-
Goal: Decide high-level actions based on context
-
Examples:
- Stop for obstacles
- Re-plan when path is blocked Switch between navigation modes
-
Use Cases:
- Autonomous driving (Autoware behavior planner)
- Service robot task switching
5. Practical Implementation (ROS 2)
- Planning modules subscribe to perception outputs:
/map
/perception/objects
/localization/pose - And publish commands for execution:
/plan
/cmd_vel - Common frameworks:
- Nav2 (Navigation2) → Mobile robot navigation
- Autoware → Autonomous driving planning stack
- Visualization:
- RViz2 → Path, trajectory, obstacles
- rqt_graph → Data flow between modules Planning converts perception results into actionable strategies.
Next Step: The planned trajectory and commands are sent to the Action module, where the robot executes the movement.