Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
A tutorial to start with PDDL
What is PDDL?
PDDL (Planning Domain Description Language) is a standard encoding language for “classical” planning.
The components of PDDL files are:
- Requirements: defining levels of abstraction in the language, e.g., "STRIPS", temporal, probabilistic effects etc.
- Types: sets of the things of interest in the world,
- Objects: instances of types,
- Predicates: Facts about objects that can be true or false,
- Initial state of the world: before starting the planning process,
- Goal: properties of the world true in goal states and achieved after the planning process,
- Actions/Operators: ways of changing states of the world and going from the initial state to goal states.
How to Put the Pieces Together?
A planning task in PDDL is specified in two text files:
- A domain file for requirements, types, predicates and actions,
- A problem file for objects, initial state and goal specification.
Domain files are as follows:
(define (domain <domain name>) <PDDL code for requirements> <PDDL code for types> <PDDL code for predicates> <PDDL code for first action> [...] <PDDL code for last action> )
<domain name> is a string that identifies the planning domain.
Problem files are as follows:
(define (problem <problem name>) (:domain <domain name>) <PDDL code for objects> <PDDL code for initial state> <PDDL code for goal specification> )
<problem name> is the string that identifies the planning task, e.g. gripper with 4 balls to move.
` is the planning domain name corresponding to problem file.