Artificial Intelligence

Programming Project #4

Planning in Shakey's World

Due by 12:29:59 on Thursday, April 20, 2006.

Please email your program to my departmental email account by the due date.  Click here to email your program.  Turn in a hardcopy of your well documented program on the due date.

 

Introduction

This programming project is a modification of problem 11.13 in your text book.  Design and implement a CLIPS knowledge base and program that generates a plan of actions for Shakey the robot.  The initial state and goal state for Shakey's World is provided here.

Please look at http://www.sri.com/about/timeline/shakey.html for a description of the original Shakey the robot.

 

A Few Assumptions...

All doors are closed at the initial state.  Doors must be opened prior to entering a room (obviously) and they must be closed as Shakey  just after it enters the room or leaves the room.  Your programs will show lots of "open door" and "close door" actions.

Shakey has poor eyesight.  Specifically, he has to turn on the light just after entering a room.  As Shakey plans to leave a room, after opening the door, Shakey must turn off the light.

Shakey only has one robotic arm that can only do one thing at a time.  He can open a door, turn on a light, pickup or drop a box.

You do not have to keep track of what direction Shakey is facing.  The important part of this project is the "action plan".

 

Shakey's Actions

You need to implement the following actions (at a minimum):

GoTo(x,y): which requires that Shakey be at x and that x and y are locations in the same room.  By convention a door between two rooms is in both of them.

PickUpBox(b): allows Shakey to pick up a box b

PutDownBox(b): allows Shakey to put down a box b

LightOn(s): allows Shakey to turn on light switch s

LightOff(s): allows Shakey to turn off light switch s

OpenDoor(d): allows Shakey to open a door d

CloseDoor(d): allows Shakey to close a door d

 

Sample Program Output

A partial listing of the program output should be similar to the following.

...

GoTo(Hall1, Door2)
PutDownBox(Box2)
OpenDoor(Door2)
LightOn(Switch2)
PickUpBox(Box2)
GoTo(Door2, Room2)
PutDownBox(Box2) ...