Anthropomorphism, or Why Legs?
The need for anthropomorphism in domestic robotics is classically illustrated by the problem of staircases. It is not feasible to alter houses or to remove the staircases. It is possible to design robots with stair-climbing attachments, but these are usually weak spots in the design. Providing a robot with the same locomotive structures as a human will ensure that it can certainly operate in any environment a human can operate in. The development of the robot is facilitated by the extensive research into the anatomy and physiology of the human; it is hoped that eventually the work done by the Shadow Project can have some impact on further research and development in these and related fields, such as prosthetic design.
The most visible (and appealing) piece of "work in progress" at the Shadow Project is the prototype bipedal robot, the Shadow Walker. The Walker is a wooden leg-skeleton, powered by Shadow air muscles. It stands 160 cm tall, its 'upper body' currently consisting of the control valves, the various control electronics and computer interfaces. Its purpose is to permit us to research and develop the necessary designs and techniques of humanoid balancing and walking. The walker is a research prototype, and as such has undergone considerable refinement as control problems are discovered.
The skeleton of the Walker was designed by David Buckley. It is wooden, and follows the shape of the human skeleton closely (note above), save only in these respects:
the lower leg is one piece, rather than the two-bone structure of the human.
the knee has a simple joint and as such possesses no kneecap.
The foot has only one toe, which is the width of the foot.
The hip is a ball-joint, permitting three degrees of freedom; the ankle is a double-axis design, permitting two. Our observations suggest that a different structure might be easier to work with for certain control aspects; but this is the one we have. We do not envisage that any great modifications will need to be made to this design in the course of development, except possibly that it may be necessary to provide more than one toe for balancing.
In order to make the Walker as close as possible in its design to the design of the human, it is necessary to find some substitute for the human musculature. The device we use is the Shadow air-muscle, designed and developed by Richard Greenhill. The air-muscle operates on compressed air at low pressures, whilst providing both power-to-weight ratios and strengths within the range of the human muscles. Its design makes it intrinsically safe. The air-muscle is inherently compliant, but has significant nonlinearities in its behaviour. The air-muscle is described in Eureka, April 1993, and Industrial Technology, April 2000 Despite these dates, it does exist.
Twenty-eight air muscles (14 on each leg) act across the eight joints, enabling a total of twelve degrees of freedom. The muscle arrangement closely mimics that of the human muscles, in that the placement of an air-muscle will usually match a corresponding muscle in the human; however, there are significantly fewer muscles on the robot than on the human. Considerations of the problems of replacing muscles, and of mounting attachment points capable of withstanding the strains exerted, has led to the locations of the anchor-points of the muscles on the skeleton not being identical to those of the human muscles.
Each air muscle has two control valves, one to fill it from the regulated supply of clean air, and the other to exhaust it. A sensor on the muscle measures the amount of strain in it and a sensor on the air line measures the air pressure in the muscle. As a result of the low-cost criterion, the valve set has been through several significant design iterations. The initial design utilised low-cost surplus AC solenoid valves. These however necessitated high-voltage AC supplies, and extra switching circuitry to isolate 110V AC from the i/o systems. Triacs used in these circuits also had the disadvantage of only switching off during a zero-crossing of the supply, thus restricting control of the valves. Although these valves can be powered from lower voltages if a DC supply is used (50V), this still requires more expensive switching circuitry. Also, we discovered that the valves were optimised for switching high-pressure air, and hence had a low throughput at the low pressures we use. The valves we now use are 12V DC water valves, which switch sufficiently quickly, are relatively noise free (compared to 110V AC) and have a high throughput. These valves are low-cost, and so are not proportional; however, the high-speed control of the switching permits sufficiently fine control of the valves to render this less of a problem than might be expected. Although this is a regular point of some debate within the project team.
There are four types of sensor used on the Shadow Walker. These are;
Each muscle has a pressure gauge attached to its air-line. These sensors were designed by David Trickett, as a modification of the standard Bourden gauge to produce an electrical output, as well as the usual visual indication.
Each air-muscle is attached with two pieces of Kevlar ® rope. At one end is a strain gauge. This gives a simple monotonic increasing output with increasing strain on the muscle.
Under each foot are five force sensors, two at the toe, one in the centre, and two across the heel. These provide a fairly good indication of both contact with the ground, and the distribution of the centre of mass of the robot. The sensors were originally opto-reflectors, of the Shadow Project's design; however, recently we have discovered the Interlink force-sensing resistor: this is much easier to use to get an indication of load on something like a heel, although has disadvantages as a high-quality load indicator. Using these has made the sensing of the weight distribution much better.
Each of the twelve degrees of freedom requires a sensor to measure it. Initial designs used rotary potentiometers however, potentiometers suffer from several problems:*
when in motion, their wipers make poor contact and pop, thus producing poor-quality readings, and reducing intrinsic safety.
The mechanical contact introduces a possible mechanical failure.
the requirement to mount on an axis of rotation which is sometimes unfeasible.
As a result, all joint positions are now measured optically.
[* Actually in practise potentiometers are the most widely used feedback device used in servo systems and the and their life exceeds that of the other components. See the main Biped page for the real reason the potentiometers were removed. David Buckley]
The hip provides a good overview of the problems involved with the sensors. The upper leg is clamped round a ball that is attached to the torso of the Walker, which provides the necessary three degrees of freedom. To measure this, however, using on-axis potentiometers is impossible without a wholly different construction. Measuring with off-axis potentiometers requires difficult linkages; our experiments foundered either on excessive play in the linkage, or on the existence of some motion which was not transmitted along the link. A traditional technique used for measuring co-ordinates in a difficult -dimensional space is to measure simpler parameters of the system, such that the parameters produce a spanning set for the space. However, in the case of the hip, we would need to mount these sensors in a limited space, and then to resolve their outputs, which would most likely introduce further inaccuracies. Our current solution is to use opto-reflectors to measure two of the degrees of freedom; one by reflecting infrared from the inside leg from a reflective surface on the groin [Conceptually. Think of it as a bel, rather than a specification...] region of the robot, which measures distance from the leg to the groin, and the other by reflecting visible light from a graded scale at a constant distance above the ball, thus indicating position of leg with respect to the scale. The detection of rotation about the length of the leg is not at present finalised; we are performing experiments with magneto-resistive sensors which measure the angle between the sensor and a magnetic field, which would be a permanent magnet mounted within the ball.
The human balancing process is greatly aided by the inner ear, which acts as a sensitive 3-axis accelerometer and inclinometer. One of our ongoing projects is the provision of similar sensing capability for the Walker. We currently have an array of mercury tilt switches, which provide crude indications of tilt, and we have mounted commercial accelerometer parts to the Walker, then stolen them for... other experiments... Other measurements necessary for balance are performed by the the under-foot sensors. The other aspects of balance are detailed under standing up.
When the electronics were originally designed, in 1987, an 8-bit high-speed ADC was a pricey part. And we needed 80 of them. Not to mention the 56 valves we had to drive. A quick look around led David Buckley to our long-standing design for the biped.
This card maps the robot into the I/O space of a BBC Micro. (Or Acorn Archimedes). The interface is in fact to the 1MHz I/O bus design for these machines. It interconnects most of the daughter cards.
A-D converter card
This addressed card provides a high-speed 8-bit analogue-to-digital converter, running at approximately 500kHz. It provides select signals for up to 4 daughter sensor interface cards.
Sensor interface cards
Two of these unaddressed cards are currently used. Each supports 64 sensors, which have a 0-5V range. These are multiplexed under the control of the AD card.
Two of these multiply-addressed cards are used. Each provides 48 pull-down output lines, capable of sinking 500mA each from a load running from up to 50V DC. The outputs are latched.
The design has evolved somewhat over time, as improvements in software necessitate electronics improvements. Currently, the system is scheduled for replacement with a whole new electronic system.
The optimistic early work on the control of the Shadow Walker was filled with notions of letting neural networks solve the problems. However, there were and are certain significant obstacles to this technique.
The early unreliability of the sensors precluded any use of their outputs directly without significant conditioning of the values. This conditioning proved difficult to determine, due to sensor stability problems.
The valves were initially too slow to perform rapid manipulations of the robot. Speed improvements in the control revealed interesting unpredictabilities in the valve behaviour down around the milli-second level.
The control of the valves was also poor. This was mostly a software issue, though we've had some fun with current flows down small cables.
And, finally, the robot itself was exceedingly fragile, with a mean-time-before-failure of as much as a couple of minutes at times. Incremental improvements in this area have helped a lot, but it still isn't going to be allowed to fall flat on it's front any time soon.
Didn't the neural nets solve the problem? Well, to understand the problems here, you have to know a little about the usefulenss of the neural network. A neural net is very good at associating a set of inputs with a set of outputs; a small change in input will tend to produce only a small change in output, and they can be made to have the right outputs for certain classes of inputs. How is this done? Neural networks are trained in one of three ways:
This requires that many examples of pairs of inputs and ooutputs can be presented to the network, and the network generalises these to cover the rest of the possible cases. In our case, this would require us to be able to predict the very data that we hoped the network could produce for us, namely the correct responses of the biped to a diverse selection of conditions.
The network is given a signal ("pain" or "pleasure", depending on the sign) indicating how well it performed on the most recent attempt, and is modified accordingly. The initial actions of the network are essentially random, and only after many, many iterations of the training process will it begin to exhibit good behaviour. When dealing with the problems of standing, for a fragile robot, random behaviour almost always means falling over and damaging the robot. Except, of course, when it means kicking things, or shaking the robot to pieces, or ...
Is more useful for pattern recognition tasks, and again requires the presentation of correct data to the network.
The development of the software thus became test-directed; it was necessary to build programs to facilitate the testing of parts of the robot, and the routines written to do this developed in complexity. Programs operating on the robot now have a standard library of routines to draw on, which they augment with further functionality.
Robot Standard Library
The current standard library of routines for the low-level control of the robot provides these facilities:
valve switching to 1 millisecond resolution, asynchronously of the main processes executing, with automatic interlock to prevent simultaneous filling and emptying of the same muscle.
reading the sensors.
maintaining data of minimum and maximum sensor values over time, and reporting excursions from these bounds.
scaling the readings of the sensors to the range 0..255, so higher-levels of software can assume the signals are conditioned.
providing standard names for all the sensors and muscles, so software can refer to `left hip 2' rather than `sensor 50'.
Providing logging facilities, to record all the sensor values over a time-period, permitting examination later for analysis.
It has been stated that some or all of these facilities could be provided in the hardware of the robot directly; however, this would possess several disadvantages:
the very large number of sensors (80) and valves (56) would require significant investment in time and complexity to construct further control hardware.
The design would become fixed in a manner that, at present, it is not.
The hardware would require significant space on the robot, which is not available.
The hardware would be expensive, compared to the software costs. Yes, Virginia, software is cheaper than hardware!
On top of the standard library, a variety of further programs have been developed. Some permit detailed examination of the state of the robot, others provide a `front panel', and still others are part of the actual control of balancing. In 1997 we were able to stand the robot up straight, and have it remain in this position, under its own control, for periods of fifteen or more minutes. Apart from the valve noise, the main indication that the robot is not statically balancing is that it sways up to 10 degrees from the vertical. However, it is not yet capable of recovering from more extreme deviations, nor rapid changes in its orientation.
The control system that finally enabled the robot to exhibit this fundamental behaviour was a simple fuzzy rule-based controller. Each sensor's input range is divided into a number of bands, or `qualifiers': for a specific sensor value, a mapping gives the proportional activation of the corresponding band. The rules are then specified in terms of these qualifiers.
The higher-level control has altered with experience with the system. As mentioned earlier, we spent some time looking at the p[ossiblity of using neural nets, but eventually decided they were not suitable. Instead, we currently use a simple fuzzy-logic system. Sensor values are classified according to their closeness to certain qualifiers, for example, the left hip (`LHip') has qualifiers fore, mid and aft,and then rules take qualifier values and use them to produce actuator commands. A typical code sequence is:
LHip Fore : Left 6 LongFill & Left 2 LongEmpty
LHip Aft : Left 2 LongFill & Left 6 LongEmpty
LHip Mid : Left 2 Off & Left 6 Off
which simply acts to restore the hip to the centre position by filling and emptying the muscles (2 & 6) that act on it. Simple control of this sort now lets the Walker stand up straight, swaying gently around within the tolerance of the control. Any significant perturbation of the system (for example, pushing the Walker) will take the state outside the narrow controlled region. We are now augmenting the joint position rules with rules examining the underfoot sensors, to produce control in a larger region of the state space. The augmentation process is entirely manual, for reasons described above. However, we are investigating the possibility of using neural-network systems to broaden the effectiveness of the hand-generated rules.
The most recent development comes from our new underfoot sensors. These have been improved the reliability of the information from the feet considerably. Using this better-quality output, we've started to put reflexes in to react to significant changes, so when the robot moves (or is moved) outside the envelope of simply standing, the system will take other actions to restore it to standing up. In this case, we were getting the heel sensors to trigger a pushing action with the toe, so if the robot was pushed forwards, the toe would push down and move the robot back. We tried this code, and pushed the robot forwards a few times. And it duly recovered from these small, but significant, perturbations, which it wouldn't have done using just the posture maintenance. Then, we tried pushing it sideways, instead. The entire foot lifted off the floor: the heel sensor reflex acted, but because the foot was off the ground, instead of pressing back, the foot was moved forwards. The change in mass distribution caused the robot to swing back over, and the foot hit the floor. But, because there was nothing to stabilise the side-to-side motion, the robot carried on swinging over, lifting the other foot from the floor. So, the heel reflex for that foot kicked in, and it swung forwards, and the robot swung back onto that side... Unfortunately, luck ran out at that point, and the third step didn't happen: the robot was caught by it's tether and stopped. However, it had taken two steps. Next: to get this to be repeatable.
©Richard Walker and The Shadow Robot Company 1999,2000