I have just realised how programs could dream and why they should do
so.
I am engaged in a project to compile vision programs automatically from
CAD descriptions. The programs are to execute in a Cartesian robotic workcell
with a pan-tilt camera. During the day we would like the robot and associated
computer to be awake. It should respond to our commands and run the compiled
vision programs in exactly the way we specify. However, at night, (-: or
whenver it is that Magnus sleeps :-) the robot is free to dream.
We do not want the dreaming robot to move around and use its camera input,
because it will at least wear out and at worst will damage itself. So the
robot should be quiescent with no visual input. This is just like a sleeping
person. When dreaming the computer can use its core maemory and processor at
no cost. It is free to relax the search constriants we placed on programs
during the day. in particular, it is free to build new models of objects
which is a very time consuming operation. However, the sleeping robot does
not have free use of disc memory. It must not overwrite programs that were
compiled during the day. It may, however, use as much disc as it likes while
dreaming, but it must give up most of this dream memory when we wake it up in
the morning. The robot is free to keep a small amount of dream memory as
new models or new search parameters, and it is allowed to keep enough context
to restart a dream.
Thus, at night, the robot is free to develop new cognitive (visual) skills,
in a perfectly lucid and goal oriented way. However, the waking robot is
constrained to have a very fragmentory memory of the dream state, so it will
suppose that its dreaming mind is irrational.
What do you think of this defence of robot dreaming?
By the way, I really do know how to make vision programs that dream in a
useful way, but I cannot imagine publishing the results anywhere!
James Anderson
|