"Dummy" & "Not so Dummy" Walkers
From BEAM Robotics Wiki
The following cannot be edited. It is compiled from material initially posted to the original BEAM email list and as such represents an important historic and technical reference. Some minimal editing has been done to the original material, but only to simplify its presentaion here.
Thank you
Back in April of 1999, Ben Hitchcock introduced a unique core-less walker to the world of BEAM robotics. Relying sole on the pots in a pair of modified hobby servos and three Schmitt inverters to control the walker's gait, it is probably the simplest of all walkers to build. The text and illustrations below were gathered from several posts made by Ben and Wilf Rigter, and presented here to provide a description and explanation of the original (Core-less / Dummy) and the slightly less simple, updated (Not So Dummy) walker circuits.
Contents |
Core-less walker
Ben Hitchcock's original post
Achived copies of this post can be seen
> HERE < (original illustrations deleted), or
> HERE < (original illustrations intact).
Yesterday I was toying with the idea of using the position of the feedback pot to tell the bot to stop turning the legs. After a couple of iterations I realised that I could do away with the micro (or bi) core altogether, and just use the position of the pot to tell the walker which way to turn its
legs.
I tested this circuit out today, and it appears to work. You have to use schmitt triggers as the sensing elements, and I had to use a 74HC245 to drive the motors themselves (a 74HC14 wasn't enough). This circuit will work with hobby servos quite well because they have a feedback pot to tell the driver what the position of the servo is.
Problems with this circuit:
If a leg gets stuck then bad luck. The circuit will stall. This is to do with the lack of timing elements in the circuit.
Good points of this circuit:
Simplicity of debugging: You don't need to debug a complex Pulse Neutralization Circuit, or see how the process is walking around the core. Just plug the leads in and go.
Simplicity of building:You don't need any more electronic elements than a 74HC14 and a 74HC245. NO other components are necessary (apart from batteries and wire)
No leg stops: I dislike the idea of using mechanical stops to prevent my legs from going too far. This circuit does away with them altogether – and your legs will NEVER go too far!
I would recommend this circuit for people who want to get into walkers, but are frightened by the complexity of a full-on microcore or bicore. About the only thing you can get wrong with this circuit is hooking up the motors the wrong way - and then the only thing that happens is that the motor goes to the end of its travel and stops. Reversing the leads makes them tick along nicely.
Right now I have two servos alternating on my desk, just the way that servos should if they were on a walker. I haven't actually tested this by adding legs and seeing if the thing moves, but it should work reasonably well.
In the diagram I have omitted the 74HC245 driver for clarity. I regard this circuit as a bit of a curiosity ("I did it because I can!") rather than a functioning piece of BEAM evolution such as the FRED.
If anyone's interested in developing this further then an idea might be to use the remaining three inverters on the 74HC14 as a sort of 'getting stuck' detector... if an output stays on for a long length of time then kick the input over the other way. I haven't drawn this yet because I like the simplicity of this drawing.
Oh and another thing, to make the walker turn just bias one of the wipers either high or low with a 5 k resistor and the gait will change perfectly, not hitting any end stops or making the legs do cartwheels. Not bad, eh?:-)
Any questions, comments?
Wilf's Initial Impression
Achived copies of this post can be seen
> HERE < (original illustrations deleted), or
> HERE < (original illustrations intact).
I love it! The basic principle of your design is a clear case of parallel evolution when compared to my "earlyBEAMservo1" circuit but your arrangement of using the three 74HC14 inverters to generate the right phase relationship between the legs is unique.
When I look back at the basic design, I made the same observation of "no feedback/no time out/hanging up" of the legs when hitting an obstacle. There are lots of possibilities using reversers, switches and timeout elements and the one that evolved for me is shown in the "earlyBEAMservo2" design which combines a photo bridge, the basic R/C timing of an oscillator, a centering pot with feedback from the servo pot to center the gait without springs while allowing the legs to reverse when hitting an obstacle. The final evolution of these servo pot feedback designs was the "uCrawler" – light seeking - one motor/2 legged "walker" which works very well but ironically only on short fiber carpets. The same servo pot feedback principle can evolve to 2 and 3 motor walkers but I haven't (as yet) followed up on that. There were some other points described in the uCrawler article but you'll have to drag it out of the archive to find out.
Regards
Dummy & Not So Dummy Updated
Achived copies of this post can be seen
> HERE < (original illustrations deleted), or
> HERE < (original illustrations intact).
Dummy Walker
I've finally ironed out the bugs (I hope!) in the "getting stuck" detector on my walker. Now when the walker gets stuck it will wait for a second or two before spinning that motor the other way and starting the gait again.
I tried putting a reversing circuit on it before I reached this solution. This used up all the inverters, and was... interesting. When a motor stalled, that motor would stop, and the other motor would swing over, it would wait for a bit, then the first motor would turn. This had the effect of slooowwwly 'backing up' forever. If you stalled a motor when backing up the circuit wouldn't recover.
This isn't to say that reversers can't be done. I'm sure that someone can come up with a better solution than mine - perhaps a touch switch that makes the robot back up for a set time, or something. To reverse the gait you have to move the inverter from the top (that is pointing left), and put it in between the other two inverters, pointing right. This means that you have to do away with the pairing of the two servo motors being fed from the one set of drivers. In other words, you use eight driver gates instead of six.
There are two circuits here:
Figure 2 is my original dummy walker circuit. It is simply a walker circuit for dummies. I couldn't get my microcore circuit to work reliably (Probably had something to do with the modifications I did to it! I can't just leave a circuit alone!) so I made this circuit instead. I could build this one without any problems. This uses two servos, a 74HC14 and a 74HC245, a few batteries and that's about it. It will walk reliably, except if a motor stalls for some reason (Like walking on carpet). I regard this circuit as doing pretty well for the response I get out compared to the number of components.
Not So Dummy Walker
The second circuit (See figure 3) is nsdummy. This stands for Not So Dummy walker. In other words, it's a bit harder to put together. I don't think that this is the optimum solution, but it's the best I could come up with. And it works! I built the thing this afternoon, and it walks fine!
I have to say that I've been bitten by the walker bug now. I've got an 8-servo 4 legged walker half built sitting on my desk that I hope to control with a CPU that was designed at wollongong university. I've got a black and white analog camera that I'm going to mount on it as well. The leg design is quite different to that of Richards quadrapod, although we will probably be able to share control circuitry because the servos still do much the same thing - forward, back, up, down.
Anyway I digress.
When building the dummy walker about the only thing that can go wrong is that you get the motor polarity around the wrong way. This means that instead of oscillating like any sane walker does, the motor drives to the endstop and tries to keep going. Turning the power off and reversing the leads on the motors fixes this. Murphy must have been looking over my shoulder today because both my motors did this. What's that, a 25% chance of happening?
You can have a look at a fuzzy picture I took about an hour ago at:
http://wollongong.apana.org.au/~ben/nsdummy.jpg
Editor's Note: Unfortunately, Ben's website is no longer active
Although I put LDR's on the robot, and they change the center angle of the front legs, I'm not convinced that the robot actually turns towards the light. Has anyone gotten their walker to be light-seeking? If so, how do you do it? Do you change the center position of the front or back legs? By how much?
One more thing, when the circuit was breadboarded occasionally when I stalled the front servo the rear one would go crazy, oscillating back and forth and the front one wouldn't even move. I put this down to a high resistance leak on that particular track because when the circuit was reformed the problem disappeared. Weird.
Anyway,
Questions, comments?
Wilf Rigter's Initial Comments
Achived copies of this post can be seen
> HERE < (original illustration deleted), or
> HERE < (original illustration intact).
Hi Ben,
Nice progress report!
My uCrawler turns very nicely towards a light source, with a bright light on one side it turns with a 18 inch radius small light difference cause slower turning.
Turning should be easy with a 2 motor walker. If the walker has the front motor at 90 degrees (up down leg motion), it's only the rear legs impart forward motion and determine the direction. It is the vector of the center (midway point) of the horizontal stride that determine the direction. If the front motor is at 45 degree, it also contributes to the forward motion and can be used together with the rear legs to decrease turning radius as shown in the attached:
Reversing a Dummy Walker is a little tricky since the two pattern generators interact. It requires that the middle motor driver outputs are separated at the common point of the motors (use the 2 spare drivers) and then a conventional XOR reverser can be inserted at the inputs of the rear servo motor drivers.
Also consider using and AC240/241/244 as a reversing motor driver. Only one buffer is active per motor connection but should provide the same performance with higher drive current available from the 74AC logic.
regards
- alt-beam Message #13696
Ooops! Obviously you were way ahead of me on the reverser, since you described one method that actually works in detail. But I'll contribute something yet.
How It Works
So just how can a walker walk without at least some kind of core circuit to control the movement of legs?
Wilf explains
Achived copies of this post can be seen > HERE <
Let me describe the logic of this mechanical feedback with hysteresis system which is a kind of mechanical Nv neuron bicore.
First take the case of one motor. The reciprocating left - right logic depends on negative feedback from the motor pot. With negative feedback, the motor driver reverses when the output voltage from the pot crosses the Schmidt trigger threshold effectively limiting travel in that direction. Reversing the phasing of the motor of the pot changes the feedback from negative to positive! Now the opposite effect takes place as you find out with that 50% chance of wiring the motor or the pot the wrong way. With positive feedback the motor is driven hard against the left or right mechanical stops with the logic encouraging the attempt to strip the gear box. What to do? Well you have a choice, reverse the motor or the pot connections and you restore negative feedback.
The Dummy Walker has 2 motors and these interact in an interesting non-intuitive way
Let me describe the combinational logic for the dummy walker pattern generator.
If the output logic state of the servo pot position sensing Schmidt Triggers (ST1 and ST2) is either +1 (high) or -1 (low)
then motor M1 direction is the sum of the ST1 and ST2 outputs
if ST1 plus ST2 = +2 then M1 LEFT (L)
if ST1 plus ST2 = 0 then M1 STOP (S)
if ST1 plus ST2 = -2 then M1 RIGHT (R)
and M2 motor direction is the difference of ST1 and ST2 outputs
if ST1 minus ST2 = +2 then M2 LEFT
if ST1 minus ST2 = 0 then M2 STOP
if ST1 minus ST2 = -2 then M2 RIGHT
ST1 and ST2 change to state at the end of left or right travel and cannot change state when the servo is stopped.
The following sequence table should hold:
ST1 +1 +1 -1 -1
ST2 -1 +1 +1 -1
M1 S L S R
M2 L S R S
The sequence points out that M2 leads M1 by 90 degrees which is the forward mode.
Next M1 leads M2 = reversing !
wilf
Further Explanation
Much later, in reference to Wilf's own op amp based Not So Dummy Opamp Walker (AKA quadra walker), Wilf expanded upon the above explanation, and included some waveforms. The following text and illustrations are excepted from that post.
Achived copies of this post can be seen
> HERE < (original illustrations deleted), or
> HERE < (original illustrations intact).
...NSD walker's {use} "only one motor on at a time" which gives the same stride as a microcore walker.
<snip>
Attached are the waveforms for the Dummy Walker which also applies to the NSD walker unless it encounters a stuck leg in which case the waveforms depend on the RC delay as shown in the separate NSD walker circuit detail. I might add that the choice of two 6.8M resistors may not be optimum as it may not "unstuck" if the Schmitt hysteresis is Vcc/3 (unlikely). However the RC delay can be much reduced by using a 6.8M feedback resistor with a 10M resistor across the coupling capacitor which may reduce the element of surprise but is also less wear and tear on the servo motors.
<snip>
...The Dummy Walker principle of using a Schmitt trigger to sense limits of travel from a servo feedback pot in order to reverse the direction of servo rotation was described in the uCrawler1.0 article of Oct 1999 on the old beam mailing list. The problem of "stalled" legs and the solution of using an RC delay to free the legs and using the same circuit for two motor walkers was also mentioned in the same article reprinted > HERE < .
Those ideas were not explored any further until Ben posted his super simple Dummy and NSD walker designs with their innovative use of a 1 1/2 h-bridge motor driver, which by the way can be broadly applied to other two motor reversing driver designs where both motors are never active at the same time (ie a microcore).


