You should work alone on this assignment. Do an update63 to get
the starting point files.
Introduction
Valentino Braitenberg is a neuroscientist who wrote a book called
Vehicles: Experiments in Synthetic Psychology that was first
published in 1984. He proposed studying principles of intelligence
through a series of successively complex machines, which he called
vehicles. The design of these vehicles have a strong biological
motivation based on his many years of research on brains. Originally
he intended this to be purely a thought experiment, but many of these
vehicles can be easily implemented in simple robots. These vehicles
demonstrate that even extremely simple mechanisms, when embodied in a
robot that is situated in a rich environment, can exhibit surprisingly
complex behaviors.
Here are several quotes from his book:
-
"We will talk only about machines with very simple internal structures,
too simple in fact to be interesting from the point of view of
mechanical or electrical engineering. Interest arises, rather, when
we look at these machines or vehicles as if they were animals, in a
natural environment. We will be tempted, then, to use psychological
language in describing their behavior. And yet we know very well that
there is nothing in these vehicles that we have not put there
ourselves." (page 2)
-
"It is also quite easy to observe the full repertoire of behavior of
these machines--even if it goes beyond what we had originally planned,
as it often does. But it is much more difficult to start from the
outside and try to guess internal structure just from observation of
behavior. It is actually impossible in theory to determine exactly
what the hidden mechanism is without opening the box, since there are
always many different mechanisms with identical behavior... A
psychological consequence of this is the following: when we analyze a
mechanism we tend to over estimate its complexity." (page 20)
The purpose of this assignment is to give you the chance to build your
own Braitenberg vehicles. You should create a world and a collection
of vehicles that interact in interesting ways. Then you will test out
Braitenberg's hypothesis that when we observe a mechanism we tend to
over estimate its complexity. To do this you will ask two individuals
to watch and describe the behavior of of the vehicles in your world.
Implementation details
-
When you do an update63 you will find three files in your
cs63/homework/07 directory.
-
The file
BraitenbergWorld.py provides an example of how to create a
world that includes a set of robots, which many have different sensory
capabilities.
-
The file Vehicle.py is an example of a brain.
In this case, all three robots are running the same brain. However,
in your experiment, you may have a different brain for each robot, if
you'd like.
-
The file startup.sh is a shell program to quickly start up
pyrobot with all three robots. At the unix prompt type:
./startup.sh. To begin execution, press the Run
button in all three pyrobot windows. To end, press the
Stop button in all three windows. To shut down nicely, from
the Robot menu in each window, choose Unload robot,
and then from the File menu, choose Exit.
-
Once you understand how the provided example works, begin designing
your own Braitenberg experiment.
-
Create a world with multiple
robots. You may also add obstacles and multiple light sources to your
world. You may look at the source code of other Pyrobot Simulator
worlds in the directory
/usr/local/pyrobot/plugins/worlds/Pyrobot.
-
Then devise one
or more vehicle brains to control the robots. You may use any of the
sensors available within the Pyrobot Simulator (such as light, range,
stall, etc). In each brain file, describe in an opening comment the
vehicle type, the sensors used, and the expected behavior.
-
Be sure to
update the startup script to accommodate your experiment.
-
In the text file observations.txt, describe what
happens when you observe people as they watch and interact with the
robots in your world. Be sure that your two observers are not CS
majors, although they may be students taking introductory CS classes.
Before the experiment, you may explain the capabilties of each robot
(what sensors it has and what actions it can take), but you should not
describe the mechanism that controls the robots. You may allow them
to move the robots around in the world. You will report on their
descriptions and analyze their responses. Do they use psychological
language to describe the robots' behaviors? Do they over estimate the
complexity of the underlying control mechanisms?
Submit
Once you are satisfied with your programs and summary of observations,
hand them in by typing handin63 at the unix prompt.