This is a simulation of a walking robot whose control architecture is based on Perceptual Control Theory. The simulation is an applet that you can find farther down this page, after the instructions on how to use it.
Skip directly to the applet.
Description of the control systems.
1. This applet does not work with Netscape, at least up to Netscape version 4.7. As far as I know, this is due to an incompatibility between Netscape and the Java AWT 1.1, so there is nothing I can do about this. It does work in the Internet Explorer and in applet runners included with Java development environments.
2. Although the overall shape is modelled on the stick insect, the robot is on a much larger scale. The body is one metre long and weighs 20kg. Each upper and lower leg is 40cm long.
These are just a few notes to get you started. The applet is mainly written as a research tool for myself, and I have not documented the numerous controls.
Click "Run". Not a great deal will seem to happen, but if you watch closely at the animation as you click "Run", you will see some coloured lines suddenly appear at various places on the robot and then shrink back to almost nothing. The robot is just standing up, supporting its own weight against gravity.
Now click the radio button called "Navigation". This causes a new set of controls to appear in the lower part of the applet. Towards the right there is a column of two checkboxes called "Enabled", both of them blank. Click on both of them. The robot will now begin walking towards the black blobs, which represent food. When it gets close enough to one, it eats it and a new blob is created at a random location.
You will see various coloured lines waving madly around the robot. These are a visual indication of the forces operating on it. You will get a clearer view of the robot if you turn them off, and the simulation will also run faster. Turn off the checkbox "Show forces".
Now you can give it some uneven terrain to walk over. Click the "Terrain" radio button. You get a new set of controls that let you select flat ground, uneven grouns, or a staircase. Click the radio button called "Random". The terrain changes to random uneven ground. Experiment with the scroll bars called "Smoothness" and "Amplitude" to vary the type of unevenness. (If, below the word "Smoothness" you see only a number, not a scrollbar, click the "Terrain" radio button again and the scrollbars should appear. This is due to some initialisation problem in my code. It only shows up in recent versions of Internet Explorer and Java.)
You can see the path the robot has taken by turning on the "Show trail" checkbox. It drops one blue blob every second of simulated time.
The "Big" checkbox changes the layout to give most of the space to the animation.
On a PC with a 500 MHz Celeron the simulation runs at around 150-300 frames/second. With the default simulation time-step, this is approximately real time. Performance depends not only on the processor speed, but also on the Java virtual machine you have installed.
+----------------------------------------------------+ | | column | | | | | Messages | | Animation | of | from | | | | applet | | | buttons | | +----------------------------------------------------+ | block of buttons, | | | checkboxes, and | five scrollbars | | text items. | | +-------------------+--------------------------------+ | | | four rows of radio buttons | | | +----------------------------------------------------+ | | | Each of the above buttons selects a different | | panel of controls shown here | | | +----------------------------------------------------+
If you resize your browser window, the applet will adjust itself to fit.
Versions of Archy are available with four, eight, or twenty legs. The code of the applet is identical in all cases; the number of legs is a parameter supplied when the applet starts.
The robot can do the following:
As interesting as what it does, is what it does not need to do to achieve these things.
The robot's only perceptions are these:
The applet is written in Java, using the AWT 1.1 for all the controls. Besides the couple of thousand lines it takes to set up all those controls, there is another couple of thousand concerned with simulating the motion of a rigid body by iterative solution of the differential equations. The code for the actual control systems of the robot is a tiny fraction of the whole, and is the only code that would be required in a physical construction. In fact, the controllers are all P-I-D, for which integrated circuits can be obtained off the shelf, so a construction containing no software at all would be possible (although for reasons of flexibility it would not necessarily be desirable).
The physical simulation is rather incomplete, in that the legs are not modelled dynamically, but assumed to have negligible mass and moment, and to instantly take up whatever conformation is dictated by the position and orientation of the body and the position of the foot on the ground. This conformation is unique, because each leg has three degrees of freedom. The problem thus reduces to determining the path of a single rigid body acted on by forces and torques. The legs lose contact with the ground when the contact force goes negative, but when they are in contact, the transverse frictional force is unlimited. Legs which are lifted off the ground for the purpose of walking are simply placed in the desired position instead of modelling their movement under the action of forces.
Being dissatisfied with these short-cuts, I began work on simulating articulated rigid bodies more accurately (using Featherstone's algorithm), in order to model the dynamics of the legs. While I was doing so, a free library for just this task became available from MathEngine and I switched development to C++. This means that subsequent versions of the simulation are not available over the web.
Archy is a cockroach who appears in the works of Don Marquis.