- Core executable unit that performs a specific task
- Implements
GoapActioninterface and theActionRunnerinterface - Has preconditions (what must be true before it can run)
- Has effects (what becomes true after it runs)
- Contains inputs and outputs defined as
IoBindingobjects - Can consume tools via the
ToolConsumerinterface - Has a cost (computational expense) and value (benefit of execution)
- References transitions that define how action affects the system state
- Represents a named predicate that can be evaluated
- Can be TRUE, FALSE, or UNKNOWN (via
ConditionDetermination) - Has a cost associated with evaluation
- Can be combined using logical operators (AND, OR, NOT)
- Used to define preconditions for Actions and Goals
- Evaluated against the current world state via
ProcessContext
- Shared memory system for maintaining context
- Implements
Bindableinterface for variable binding - Stores objects in an ordered list accessible by name or type
- Can spawn independent child blackboards
- Can track condition values explicitly
- Acts as the repository for all data and objects in the system
- Used by the World State Determiner to derive current conditions
- Represents current state of the system as a map of conditions
- Key component in GOAP (Goal-Oriented Action Planning)
- Used to determine which actions are achievable
- Can generate variants with different condition values
- Foundation for planning algorithms
- Sequence of Actions to achieve a Goal
- Has associated cost and value metrics
- Created by Planners (like
AStarGoapPlanner) - Represents the path from current state to goal state
- Collection of available Actions and Goals
- Tracks known preconditions and effects
- Used by planners to construct valid plans
- The
WorldStateDeterminerreads theBlackboardto determine current conditions - The
AStarGoapPlanneruses A* algorithm to find optimal sequence of Actions - Each Action's preconditions are checked against
WorldState - The planner constructs a
Planwith lowest cost path to satisfy Goal conditions
- Actions read inputs from and write outputs to the
Blackboard - Actions can only execute when their preconditions are satisfied
- When executed, Actions update the
WorldStatethrough their effects - The system re-evaluates Conditions after each Action
Blackboardmaintains the actual objects and dataWorldStatemaintains boolean conditions derived fromBlackboard- Conditions provide the evaluation logic to determine truth values
- Plans are re-assessed after each Action executes
This architecture implements Goal-Oriented Action Planning (GOAP), allowing the system to dynamically determine sequences of actions to achieve goals based on current conditions.
To review key components visually:
- Open Graphviz online: https://dreampuf.github.io/GraphvizOnline
- Paste the content of
embabel_planning_system.dotin the left pane