Homework Six: Planning
out 11/19, due 11/28 11/30
Introduction
This exercise asks you to extend a simple blocks world model to add the ability to paint blocks using wither a sprayer or a paint brush and paint. After defining the domain in PDDL, you will use the blackbox planner to solve a set of problems expressed in PDDL.
PDDL
The Planning Domain Definition Language (PDDL) is a language for defining planning domains and problems. It was initially developed to support the 1998 and 2000 International Planning Competitions (IPC). It was first developed by a group of researchers lead by Drew McDermott and has evolved with each IPC. read the description of PDDL 1.2 and a subsequent paper by Mcdermott on the 1998 IPC.
You can read more about PDDL here and find examples for various domains in the directory. You might also find this tutorial on writing PDDL helpful, as well as these slides.
The Blackbox Planner
Blackbox is a planning system that works by converting problems specified in PDDL into Boolean satisfiability problems, and then solving the problems with a variety of satisfiability engines. The front-end employs the graphplan system.
You can download a version of Blackbox here for windows, linux or mac os x.
An example of running blackbox on a simple air cargo domain and problem produced this output.
Extending the domain
This directory contains PDDL files for an extension to the classic blocks world domain in which objects can have a color and there are new action for painting objects using using paint sprayers, paint brushes and cans of paint. domain.pddl is a stub for the domain file and the p?.pddl files are stubs for problems.
Here's a description of the domain and constraints.
You should include a standard, simple representation for the blocks world (on, ontable, clear, etc) and its actions (pickup, putdown, stack and unstack). Additional types of objects include the following:
- Paint sprayers. Each sprayer can only paint in one color (e.g., red, green, blue).
- Paint cans. A paint can holds only only color of paint.
- Brushes. A brush can either be clean or loaded with paint of a particular color.
- Water bucket. A water bucket is used to wash brushes.
These three objects are like blocks in that they can be picked up, put down, stacked and unstacked. They can also be painted, although painting them only alters their surface (e.g., a red sprayer will continue to spray red paint even after the sprayer is painted blue).
Additional actions include:
- painting an object with a sprayer
- painting an object with a brush and can
- loading a paint with paint of a given color
- washing a brush, making it clean
Here are some constants that your actions should enforce.
- all of the usual actions and constraints of the blocks world (e.g., from here)
- there is a fixed set of colors: red, green, blue, yellow, ...
- in order to paint an object, that object must be on the table and clear
- Painting with a sprayer is easy -- just pick it up and spray.
- To paint something a color with a brush, it has to be loaded with paint of that color.
- To load a paint bush with a particular color, you have to be holding the brush, the brush must be initially clean and there has to be a paint can holding that color of paint which is clear. When a brush is loaded with a color it is not clean.
- To wash a brush, making it clean, you have to have a water bucket that has nothing on it (i.e., is clear) and you have to be holding the brush.
The shell files test and solveall might be useful in running blackbox over all of the problem files. See test.output test.output.v2 for key parts of the ouput for our model solution. You are free to define and name the actions as you see fit, but might find our choices as refleced in the output helpful. Note that the last two problems, p5.pddl and p6.pddl, take much longer to solve that the others.
What to hand in
Submit a tar or zip file to cvs containing your PDDL files and the output showing the solution found by blackbox for each of the problem files, p1 through p6. If you are unable to use CVS, submit the file by email, sending it to cmsc671hw@cs.umbc.edu.
|