0% found this document useful (0 votes)
67 views

CSC 384, Variable Elimination Example, Fall 2014

The document describes a STRIPS planning problem formulation for moving balls between buckets using a robot arm. It defines fluents to represent whether a ball is in a bucket, the robot arm is at a bucket, the arm is holding a ball, and the arm is free. It defines actions for picking up a ball, dropping a ball, and moving the robot arm. The actions have preconditions and add/delete lists in the STRIPS format. It then repeats the problem with typed predicates to remove type checking fluents.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
67 views

CSC 384, Variable Elimination Example, Fall 2014

The document describes a STRIPS planning problem formulation for moving balls between buckets using a robot arm. It defines fluents to represent whether a ball is in a bucket, the robot arm is at a bucket, the arm is holding a ball, and the arm is free. It defines actions for picking up a ball, dropping a ball, and moving the robot arm. The actions have preconditions and add/delete lists in the STRIPS format. It then repeats the problem with typed predicates to remove type checking fluents.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

CSC 384, Variable Elimination Example, Fall 2014

Overview
The following is an example of a classical planning problem given a STRIPS representation.
Note in the following solution the precondition list contains only positive fluents. Some STRIPS formulations have
a separate positive and negative fluent precondition list. This solution avoids the need for a negated fluent precondition list.
Disjunctions are not allowed in any STRIPS list. If you need to have a disjunction in the preconditions, use multiple
actions. This is a weakness of the STRIPS forumlation.

Problem Description
Suppose we have a number of buckets and balls and we want to move the balls between the buckets using a robot
arm. Balls may be either in a given bucket or held by the robot arm. The robot arm may hold only one ball and
may only be at one bucket at a time. Formulate this as a STRIPS planning problem with the following actions:
Picking up a ball
Droping a ball
Moving the robot arm

STRIPS problem formulation


Fluents:
Ball(X): Is X a ball?
Bucket(X): Is X a bucket?
In(X,Y): Is ball X in bucket Y?
At(X): Is the robot arm at bucket X?
Holding(X): Is the robot arm holding ball X?
Handfree(): Is the robot arm free to pick up a ball?
Operators:
Pickup(X,Y): Pickup ball X from bucket Y
Preconditions: Ball(X), Bucket(Y), In(X,Y), At(Y),Handfree()
Add: Holding(X)
Delete: In(X,Y), Handfree()
Drop(X,Y) : Drop ball X into bucket Y
Preconditions: Ball(X), Bucket(Y), Holding(X), At(Y)
Add: In(X,Y), Handfree()
Delete: Holding(X)
Move(X,Y): Move the robot arm from bucket X to bucket Y
Preconditions: Bucket(X), Bucket(Y), At(X)
Add: At(Y)
Delete: At(X)

With typing
We can repeat the same problem, assuming that predicates and actions are typed. This enables us to remove the
type checking fluents Ball and Bucket:
Fluents:
In(Ball X, Bucket Y): Is X ball X in bucket Y?
At(Bucket X): Is the robot arm at bucket X?
Holding(Ball X): Is the robot arm holding ball X?
Handfree(): Is the robot arm free to pick up a ball?
Operators:
Pickup(Ball X,Bucket Y): Pickup ball X from bucket Y
Preconditions: In(X,Y), At(Y), Handfree()
Add: Holding(X)
Delete: In(X,Y), Handfree()
Drop(Ball X,Bucket Y) : Drop ball X into bucket Y
Preconditions: Holding(X), At(Y)
Add: In(X,Y), Handfree()
Delete: Holding(X)
Move(Bucket X,Bucket Y): Move the robot arm from bucket X to bucket Y
Preconditions: At(X)
Add: At(Y)
Delete: At(X)

You might also like