Due: In class demo: Thursday Nov 4th with project report turned in the following Tuesday Nov 9th. One report per group.
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
An XBC (with charger and interface board and cables)
ET sensors (2)
Top Hat sensors(2)
Touch Sensors (several and varied)
Light sensors (2 possibly 3 if I have enough)
Lamp and maze (shared with all groups in the class)
2 black motors with gears attached
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.
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)
For this lab we will be using the Interactive C environment as before.
Don't forget to charge your robot. If you ever start to see wierd behavior running the same program that used to work, try recharging the xbc.
All of the issues that you learned about in your last lab still apply including
sometimes the same powerlevel produces different speeds in different motors
sometimes the same stimulus will produce different output from two different sensors.
Check to see if your sensors are working. I've replaced at least one sensor that stopped working. I don't have many more spares so check them early.
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.
this is where you explain the problem you wer trying to solve and why it is relevant
Here tell me what sort of robot you designed (in hardware). Tell me what worked and what did not work. Discuss what you learned based on what worked and what did not.
Here discuss what sort of control program you built. Again tell me what worked and what did not. Discuss what you learned about robot control software from your experience. Discuss your approach and its relevence to both the current task at hand and the general problem of robots acting in the world.
a diagram of your
behaviors and their interactions, including all primitive and
non-primitive pfield behaviors. Give me the tables with your sensor
inputs and vector outputs and describe your reasoning and callibration
Evaluate your robot
your robots sutiblity for the task and the environment include your
robot's actual performance in the
demo. How well would your robot perform in other environments? Evaluate
pfields as a navigation mechanism compared to the more hard coded
approach you used for the box lab.
Summarize what you learned. Consider the following target audience: next year's robotics students. In this section, summarize from the preceding sections all of the worthwhile dos and don'ts that you discovered in doing this lab. It is not really relevent that your robot did really great unless you tell the reader why. Think about what you would have liked to know when you first saw this lab, and if you have any insights after doing the lab, share them here.