CS460 Project 3

Due: In class demo: Thursday Nov 4th with project report turned in the following Tuesday Nov 9th. One report per group.

Overview and Objective:

You will design and program a robot which will navigate a random 3 dimensional environment with walls and a light using the pfields approach for navigation. The robot's goal is to find a light which will be somewhere in the environment. Your robot will start  somewhere in the enclosure and then have to search for the light, stopping and playing a tune when the robot is near the light with no barriers between the light and the robot. Your robot must be programed using pfields for all navigation. When your robot arrives at the goal, you can exit the navigation/pfields part of the program and play the tune independantly.


You will have the same robot kits as before. You will have

The maze:

The maze is constructed of foamboard.  Setup the maze so that the large pieces form rectangle. Then use the remaining peices of foam board placed  randomly as obsticles inside the maze itself. See the photos below for two examples. (though you will not need to deal with the debris as seen in these older photos. Somewhere in the maze, place the light. In final test runs, the light will always be shielded from easy view as it is in the examples below. The walls are all about 25 cm high. I will try to setup the maze in a perminant spot, however, there is occasionally another class in here along with a robot competition team and we may not be able to keep it out all the time.
view of the maze

another view of the maze 

Your Task:

You are to create a robot that can find a light in an arbitrary maze with obsticles (made of the same maze materials) in it. Your robot must be programmed to do all navigation/movement using a pfields archetecture. You will have to program the various behavior for avoiding obstacles, perhaps following walls and moving toward the light to run parallel. You can either do this with true parallel behavior using threads and some sort of 'white board' that all threads write to (be sure to make sure that you handle concurrency correctly) or you may choose to simulate parrallel behavior execution by executing each behavior in sequence and storing the resulting vectors until all have executed at this timestep. After all behavior vectors have been calculated, you then calculate the resulting vector and execute the turn and forward movement before moving to the next timestep and doing it all again.  
 Your robot will be dropped somewhere in the maze (chosen by the instructor on demo day) and will have to find the light. When the robot finds the light, it should stop no more than 12-13 cm (about 5 inches) from the light and play a tune for about 4 seconds. Once you start the robot in its corner, you cannot touch it again until it either runs out of time or claims to have found the light and stopped. Your robot has five minutes to perform this task. You will be penalized for your robot (or any student) moving any part of the enviroment. (the walls of the maze can be easily moved, the light is less movable, but more dangerous for the robot)

The software environment:

For this lab we will be using the Interactive C environment as before.

A few useful notes

The Project report

The project report is a report of what you tried to do, what you did, what you learned and what you accomplished. To make my correcting easier, let me give you guidelines on what I'd like to see in it. Make sure you use section headings to make each section easy to find.