[From Richard Kennaway (981028.1540)]
Bill Powers (981028.0631 MDT):
Repetitive cycles. We need to control them to sing or play music, recite
poetry (doggerel, anyway), walk or run, push someone on a swing, pound
nails, saw wood, jack up a car, paint a wall, or write a list like this.
Many of them are tied to natural physical rhythms like gaits, but many are
not -- they're rhythmical because at this level speed of repetition is the
main controlled variable.So, does this level go between events and relationships, or does it replace
events? Try it on, let me know what you think.
I just read this and haven't had time to do any thinking, but just before I
dash off on travels until Monday, I thought I'd mention that I've just
added some walking behaviour to my simulated insect, which I haven't posted
anything about for a long time. It consists of a rhythmic cycle of actions
with the legs. Pick up front legs, move them forwards, put them down. Pick
up middle legs, move them forwards, put them down. Pick up rear legs, move
them forwards, put them down. Repeat. "Walking" arises from the fact that
the bug tries to control its body position so as to remain vertically above
the centre of its footprint, and parallel to the best-fit plane through its
feet. Turning around is done similarly, by swinging pairs of legs
clockwise or anticlockwise.
As yet, this behaviour is not part of the control of any perception, but
just a blind cyclic program. However, if pointed in the direction of a
staircase it can successfully walk up and down without losing its balance.
Oh yes, for those who have seen earlier versions of the Bug, I've added a
variety of different terrains for it to walk over.
Running on a 400 MHz Pentium II, this has a big Wow! factor. You can
actually see it walking and struggling to keep its balance on the stairs,
with the animation running at upwards of 150 frames per second.
Coming next will be control systems which will use the walking and turning
routines to make the bug steer towards a visual landmark.
The latest version is at
http://www.sys.uea.ac.uk/~jrk/JRKBug-1.1/BugApplet.html. It's a Java applet
which in principle should run in any Java-equipped web browser (running
Java 1.1 or later). It works with Internet Explorer, but Netscape has
problems, I don't know why. It also needs a powerful computer with a
fairly big screen. If you want to download files to run it locally (which
will make no difference to the speed, but means you can use an applet
runner instead of a web browser), the only ones you need are BugApplet.html
and AppletClasses.jar. If your applet runner doesn't understand jar files,
you need to get all the *.class files instead.
No time to document all the zillions of controls, but for those who may
have a suitable machine, here is what you need to do after loading the
applet to make it walk up and down stairs:
1. Click on the "Parameters" button, and set the following values in the
scroll bars:
Anim. step: 0.001 (this is the time interval of the simulation, in
seconds -- 0.001 is the minimum possible. Larger values may cause
instability due to bad approximation.)
Walk step: 0.1 (this is the time between successive actions in the
walking cycle)
2. Click on the "Terrain" button, then click on the "Staircase" button.
3. Click on the "Walk" button, then click on the "Walk fwd." button (or
"Walk back", "Turn right", or "Turn left").
4. Click on the "Run" button to set it going.
5. For added fun, click on the "Switches" button, then click on any of the
resulting left-hand column of buttons to shoot legs off. If it walks fast
enough and the parameters are tuned right, it can walk with just its front
and rear legs.
Colleagues here get excited when they see it. It's only 5000 lines of
Java. Half of that is the user interface, half of the remainder is the
physical simulation. The most difficult thing to get across to people is
that the bug knows nothing about how to walk over uneven terrain or up and
down stairs. The only thing it is doing is executing that cycle of leg
actions and attempting to keep its body centered over its footprint. It
doesn't even know implicitly in any meaningful sense, because when I added
the new terrain types, I hardly had to change the bug at all to make it
walk over them. It didn't work at first (it fell over), but I eventually
found that all I had to do was give it longer legs and reduce the
simulation time step (and it may be that reducing the simulation time step
would have been enough on its own).
-- Richard Kennaway, jrk@sys.uea.ac.uk, http://www.sys.uea.ac.uk/~jrk/
School of Information Systems, Univ. of East Anglia, Norwich, U.K.