- Introduce a factored representation language called Planning Domain Definition Language (PDDL) that allows for compressive expressiveness of the planning domain (general application space such as logistics) and problem (the specific logistics task we face).
- Solve the planning problem by using domain-independent solvers that are able to reason over the PDDL expressed domain and problem. The domain independence is probably not the most efficient way to solve a planning problem but it is the most general and flexible way to do so and the associated tradeoff is worth making.
- The domain model written in a planning language and in the so called domain file.
- A problem definition that describes the initial state and the desired goal state using the domain model’s terminology; and produces as output a plan, that is, a sequence of actions that takes the agent from the initial state to the goal state.

PDDL Language Constructs
PDDL Domain File
PDDL expresses the four things we need to plan a sequence of actions. The set of all predicates and action schemas are defined in the domain file () as shown next.
Note that the specification via action schemas rather than via an enumeration of all possible actions for all possible states is compressive via the usage of variables.
For the famous Blocksworld domain shown below where a robotic arm must reason to stack blocks according what the goal is, we list the corresponding domain PDDL specification.

- Blocks are picked up and put down by the arm
- Blocks can be picked up only if they are clear, i.e., without any block on top
- The arm can pick up a block only if the arm is empty, i.e., if it is not holding another block, i.e., the arm can be pick up only one block at a time
- The arm can put down blocks on blocks or on the table
PDDL Tools
Use the PDDL VSCode extension as described here
to invoke this planning server and ensure you understand the ropes of using PDDL planners. The blocks word problem is a classic problem employed in the International Planning Competition (IPC) 2000. For non-trivial examples in robotics see Plansys2 - any AI engineer must know and understand the ROS2 platform.

