CSCI 235: Intelligent Robotics
Project 2: Symbolic Planning
For this project, we will use the Pyhop planner, which you will need to download.
Pyhop is a hierarchical task network (HTN) planner. To use an HTN planner,
one must specify the following:
- State: Complete description of the current world state. In Pyhop,
you can use an arbitrary Python data structure to describe the state.
- Operators: Each operator describes a state transformation.
Operators can optionally include preconditions. If a precondition is
not met, the operator will fail. In Pyhop, you will write one Python function
for each operator.
- Methods: Methods encode a planning algorithm that decomposes a
task into operators and other methods. In Pyhop, you will write one Python
function for each method.
Create two distinct planning domains using Pyhop and the Python programming
language. One domain must include the following as a minimum:
- Two distinct types of objects.
- Three operators.
- Two methods.
- Two distinct starting states, at least one of which yields a plan containing at least five steps.
The other domain must include the following as a minimum:
- Four distinct types of objects.
- Five operators.
- Three methods.
- At least one of these methods must have another method in its task
decomposition.
- Three distinct starting states, at least one of which yields a plan containing at least ten steps.
After completing your domains, write a short paper (2-3 pages) containing the following:
- An introductory paragraph or two describing your target domains and why you initially believed that they were suitable for planning.
- For each domain, one to two paragraphs describing how you encoded that domain. Pay particular attention to discussing the tradeoffs involved in the encoding. What domain features are represented explicitly? What domain features have been abstracted away? Why did you perform those abstractions? How good were the plans that were produced? What criteria do you have for "a good plan"?
- Write a concluding paragraph discussing the utility of planning in general.
Under what circumstances is it worthwhile to build and use a planner? When is
it not appropriate? Justify your answers based on the experiences in this project you described earlier in the paper.
Submit each of your Python files and your paper in PDF format via Moodle by Tuesday, September 4 at 2:30 pm.