Subject: Proprioception and Kinesthesia In Nervous Net Walkers
Date: Thu, 12 Sep 1996 18:02:27 -0600
From: email@example.com (John A. de Vries II) To: firstname.lastname@example.org
Sounds like a scary title, doesn't it? Don't worry about that... <grin>
Proprioception and kinesthesia are related concepts that deal with a creature's sense of posture, of physical being in the world. The first is a nearly unconscious feeling of how your body is set and the other is the much more conscious sense of the angles of your joints, the stresses on your muscles and tendons and so forth. Unlike many other robotic models, nervous net creatures have a unique ability to implement and use these concepts.
Let's go through a little bit of simulated evolution...
A primitive nervous net walker created using conventional parts ('14, '240 or the like) could conceivably use sub-milliamp motors/actuators. Such a walker will be able to handle certain classes of obstacles (for example, a leg in a hole) because of the feedback from the motors to the neurons. That is, the reverse EMF created by the motor turning (or lack thereof because the leg is bound by some object) would cause the process in the corresponding neuron to be attenuated (i.e. its pulse-width is shortened.) Thus the creature would appear, as an emergent behavior, to spend less time and energy on a stuck leg. The roboethologist would say that the creature "feels" that its leg is stuck and is expending more of its energy on the other legs in order to get unstuck. In a sense, the creature would have proprioception that is really quite useful.
The next step in evolution would be a more powerful creature -- powerful because of bipolar buffering between the nervous neuron and the motor itself. A transistor (not a FET, by the way) can take the neuron's signal and provide substantially more current and thus more power to the motor. There would be a definite loss in the creature's "sense" of where its legs are, however. There is a reciprocal relationship that occurs when looking "into" vs "out of" a transistor. If a transistor produces a gain of 100 (from neuron to motor) then the effect of the motor back to the neuron is correspondingly reduced (i.e. is only 1%.) This more powerful creature isn't going to have the feedback of the more primitive one, but almost certainly could make up for it with power.
Then comes the current phase in our little ecology. Instead of using bipolar transistors to drive the motors, we see buffer chips (e.g. '240) and FETs being used. The motors the creatures have can be quite massive and extremely powerful as a result. However, the only feedback from the motors to the neurons might be Vcc loading -- which would affect all of the neurons pretty much equally (but might have some chaotic, semiconductor-processing effect.) Lost would be any real notion of the position of a leg or its loading -- in effect, the computational loop from outside world through the creature back to outside world would be lost. One presumes that higher-order sensing (e.g. a head) would be used to make up for this loss, but on a lower level it is likely that the creature would be substantially less flexible, less agile in different environments. Once tuned for sand, it would find itself far less graceful on rocky terrain.
I've seen some of these effects -- I'm privileged in that I've been able to watch Mark Tilden and Matt Moses craft some of the largest autonomous robots currently in existence. In particular, one problem that Matt had with the machine that he is finishing is that there was drift in one of the sets of legs. No matter how he tuned the neurons, the leg would show angular drift and was stopped (well, sort of, the motors are rather powerful) when it began to hit the body of the creature. The solution currently in place is the use of limit switches that strongly attenuate the driving neuron when activated. Thus the process moves along the loop reaching the neuron that drives the leg in the opposite direction -- which would be "fired" for the normal amount of time, thus correcting the drift dynamically. I also understand that there are limit switches on the other set of legs, but they are used to drive a multiplexer that allows immediate reversal of the leg's direction.
It is my claim that successful creatures would have a somewhat more subtle form of kinesthesia. That I can use the term "limit switch" already evokes an old, crude style of technology more fitted to elevators and machine tools than the elegant beasts I've seen this readership create. I have thought about this problem for some time and have come up with one solution that I believe is simple and effective (explained shortly below) but I'm certain that youse guyze can come up with others -- ideas that I (for one) would love to read and think about.
So -- here's a bit of a solution - plain old potentiometers attached to the leg, wired back into the neuron as a bias. I'm not sure whether it ought to be a positive or negative bias (haven't thought that far) but in any case there would be a feedback of _position_ to the neuron.
What is needed, however, are other ideas, implementations that would handle measure how much resistance a given leg is getting and so forth. The MIT crowd tend to use motor current measurements for this, but that might not be very applicable to the use of stepping motors.
John Atwood deVries II email@example.com, firstname.lastname@example.org, email@example.com
Subject: Re: Proprioception and Kinesthesia In Nervous Net Walkers (LONG)
Date: Sat, 14 Sep 1996 03:26:59 -0400
From: firstname.lastname@example.org (Keith McClary) To: email@example.com CC: firstname.lastname@example.org (Keith McClary)
Warning: this is VERY long... It describes animal muscle "active muscle feedback sensing systems" in detail, a drug that interferes with it, and the design of a simple "servo string pot" to emulate it. - Keith
On Sep 12, 6:02pm, John A. de Vries II wrote: > Proprioception and kinesthesia are related concepts that deal with a > creature's sense of posture, of physical being in the world. The first is > a nearly unconscious feeling of how your body is set and the other is the > much more conscious sense of the angles of your joints, the stresses on > your muscles and tendons and so forth. Unlike many other robotic models, > nervous net creatures have a unique ability to implement and use these > concepts.
Most muscle driven organics apparently do NOT use a position sensor akin to a potentiometer. Instead, they use an *active* sensing system for the kinesthesic (sp?) sense.
Small, separate muscles are placed alongside or within the main (big) muscle set. They are not run by the "motion" command. Instead, they have their own control net. As I understand it, when the big muscle flexes, the small muscle *servo-loops* based on a simple strain detection. If the strain increases, it loosens up. If it goes slack, it tightens. The "sensing muscle" therefore hovers at a fixed strain point.
This loop is "spinally local". That is, the control loop exists only between the muscle and one spinal vertebrae, where the data can affect the associated main muscle. The brain is not involved, which speeds up the response time and reduces wiring tremendously.
Just as you can use a phase locked loop's feedback loop as an AM output to demodulate an FM signal, the output from the independent small muscle's driving neural loop is available to the rest of the main network.
IMPORTANT: *** The output is directly and proportionally related to whatever position the small muscle is forced to assume to maintain a static strain.***
Although this seems screwy at first, it is really very elegant, for several reasons: 1) The sensor is just another copy of a basic muscle, simply relying on the basic "overstrain damage limiting sense" for feedback. No extra classes of device are created. (Biosystems are *really good* at creating more copies of anything it knows how to make, but *horrible* at inventing new schemes for single purposes. :-) 2) You get a proportional output from the system, at the same data resolution as you have for controlling any other muscle. 3) The output linearity curve matches every other muscle's curve. (Who cares *what* the shapes are, as long as they are monotonic and match...) 4) Since for an output you are just tapping another pulse train, it is inherently noise immune, and perfectly suited to modulate or otherwise phase shift other neural networks. 5) The data is available right at the vertebrae, so data doesn't have to travel far to affect other control loops or muscles. Most network interconnects and pattern generators happen to exist within the spine anyways. 6) Since the main muscle is elastic, the small muscle is *much* weaker, and the little one is not wired to assist it, the small muscle's loop senses and reports any major strain overloading the big muscle.
Data from this control loop interacts with "desired position" data coming from the brain and modulates the big muscle's drive in the spine. Your "servo control" is therefore local at the vertebrae level, and this position feedback data helps you achieve proper target stabilization of the limb, with just a simple brain gross positioning command. In other words, this makes your limb position load independent for small changes in load.
It took me a long time to piece this together, as the available information was not couched in these kind of terms. (To my knowledge, this may be the first time it has ever been written up this way.)
I know this, because I was personally open looped by medication once. I did some research after the fact to try to understand what happened to me.
An example of a drug that affects this control loop is Parafon Forte. Spinal accident victims (like yours truly, from a car accident :-) often have temporary swelling of tissue around the spine from the injury. This causes nerve compression, thereby false triggering muscles. That in turn creates horrible "charlie horse feedback loops" causing severe cramping over entire limbs and the back, with pain, and additional damage potential (spine positioning muscles are affected too, compressing the nerves further).
PF is considered a "spinal muscle relaxant". In reality, it interferes with the feedback from this sensing system by "open looping" your spine, keeping this data from assisting in position modulation. I was on PF for a few weeks after the accident until the swelling subsided.
When they gave it to me, it released the cramping, but I felt "rubbery". *Very* amusing. It was as if my limbs were loosely connected to my body, like a marionette. Although perfectly alert, it seemed like only my limbs were a little drunk.
I'd swing my arm back an forth, and it followed a very underdamped "soft" path, along the general expected line. However it was nowhere near as precise as before, and it sagged noticeably. No wavering (tremor) occurred, but I had to consciously target things by watching the hand and directing it. Otherwise, I might be slightly offset, or undershoot the motion in the favor of gravity entirely. Repeatability of going to another position and back wasn't there for some reason, either.
The path was *incredibly* load dependent. If I added a weight to an outstretched limb, like holding a glass, it would load down, and I would have to consciously increase the force a *lot* to put it back into position. Bizarre. I was running totally open loop for the first time in my life, and my brain had to take over targeting control. (Great entertainment for someone with little else to do while recovering... <wink> Besides, it gave me something else to think about besides the pain... :-)
Under full dose, it took massive concentration to move around and stay balanced. Exhausting mentally, I became prone to banging myself up if I didn't pay strict attention to my movements. I ended up shuffle stepping, to prevent me from extending my legs too far and losing it. I only took partial doses after that, just barely enough to eliminate cramping (which was still a significant dose).
What was interesting about this drug is that it was *very* specific in its action. It only affected my spine, and wiped out my navigational compass sense. (Now I *really* wonder if our compass sense is also an active servo loop of some kind, but I digress...) It did not affect any congnitive, motor or sensory "skills" such as strength, "proprioception" (to use JAdV's term), or touch. It only affected motor output positional control accuracy.
I now realize (and appreciate) how much of our internal position sensing and corrective feedback is automatic, and is buried deep down in the spine.
Now... This should be easily modelled with simple hardware. Create a "servo string pot" thusly:
Take a second servo. Replace the single turn pot with a ten turn, and remove the limit tab. Replace the normal servo electronics with an H-bridge and a few gates.
Place a drum of string on the output shaft. The string runs to the far point, and is attached via a small spring. Create a simple homebrew SPDT-CenterOff switch within the spring such that as long as the spring is 1/2 stretched, the switch is open.
If tension increases, the spring stretches more and closes the switch one way, which via simple gates drives the H-bridge to loosen the string until the switch opens again. Conversely, if it relaxes, the other contact closes, causing the logic to reel in the string until it opens once again.
If you don't mind the power consumption, have the bridge enabled all of the time and the servo hovering around a SPST point instead (yuck, but it *does* eliminate the switch's deadband... :-)
The 10-turn pot now gives you your cord extension "position". Wire it into your other nets as a modulation.
If you want to be fancy, mount the entire servo on a rotary version of the switch along the output shaft's axis with a pair of "centering springs" so that string tension runs the switch via torque, and everything is local. No wires run to the far end, and the string is hard anchored there as well.
Or, hard mount the servo, create a spring torque-switch sensor between the drum and the shaft, and connect it back via rings and brushes if necessary.
Another improvement would be to use the original servo electronics along with the original pot plus a torque spring as a fancier tension sensor to create a variable duty cycle PWM modulator, giving a proportional variable speed to the motor...
Someone want to write all this up and share the patent with me??? <grin>
Advantages of this system is that: (1) the servo is kept within the main body frame, and (2) you are using a string "tendon", that can be routed to your limb's far point via *many* methods and circuitous routes...
I remember somewhere in my web travels of hitting a robotic lab a few months back that had a working physical good model of the "active sensing" muscle system, but it used a different hardware approach.
They used something like piston air cylinders, one large and one small, and a simple sensor (maybe a strain guage with a simple signal conditioner, or a switch set on a loose mechanical connection or the like to simulate the action). Air gave the "spring" buffering effect. I can't remember the university offhand. If I run across it again, I'll post it here.
I'll create a second post for the other "other methods" question at another time. I've *more* than used up my dime for tonight, and it's getting pretty late here...
Keith McClary <email@example.com> YAAARC: Ypsi/Ann Arbor Area Robotics Club "I'm a roboticist and I'm OK, I tinker all night and I work all day..." -M.P.?
Someone this last fall was just learning about nervous nets and commented that there didn't seem any nice way to implement memory with one. I'm sure that there are a lot of different ways, but it occurred to me that the only conceptual problem is making such a memory forget in some interesting way, because it is easy enough to represent the occurence of an "event" (say, a flash of infrared detected and channeled through an integrative nervous neuron) as a process. One would have to be aware of the limitation that saturation brings, but still it is a fairly intuitive way of "remembering" things.
So, here's a possible architecture: one loop with some to-be-determined number of neurons that acts as the memory "element". One of those neurons is a process generator (the IR detector noted above, for example) and some other neuron is used as the pick-off. Just for jollies, let's say the pick-off feeds a motor driver.
There would be another loop, probably with a fair number MORE neurons than in the memory element. Either it would be "primed" at start-up with a process, or some other method would put at least one (possibly more) process into this loop which acts as the decay mechanism which implements forgetting.
What connects the two loops, of course, would be a variation on the Pulse Neutralizing Circuit (PNC), right out of Tilden's patent. The decay loop would be the controller and the memory loop the controlled. The process of "forgetting" would be largely a statistical or chaotically characterized thing, depending on the real-time coincidence of process arrivals at the PNC.
Of course, this isn't patentable, being derivative of H. Grey Walter's work from the 50's as well as the DES (Data Encryption Standard) to mention just two sources. I still think it is an eminently suitable notion for rewarding experimentation, however.
A quick note about the previous message and then something different...
If you were wondering what the DES had to do with anything, it is the lengths (by neuron count) of the two loops -- in a synchronous digital circuit, if those lengths are relatively prime to each other, the cycle length of the combination tends to be maximized (that is, it might take a Long Time for the entire cycle.) This, of course, is a Good Thing for encryption. Using nervous neurons is basically like using asynchronous logic in some ways, so what applies to synchronous circuits is at least analogous but Wait! With Two you get the Free Ginsu Knives -- that is, unless the delays of each and every neuron was -exactly- the same, then those delays can make a huge difference on the cycle length. One might hope for self-consistency in the delays so that even if things were exactly <ahem> predictable, then at least they'd be amenable to some kind of qualitative analysis.
And Now for something Completely Different:
I think that the design of the memory loop (input, the loop itself, output, process neutralizer) is reasonably complete in itself. On the other hand, there might be some controversy about the decay loop, for which I only supposed one process cycling around forever, occasionally killing processes in the other loop. One might want more control over that -- for example, kill the process in the decay loop or create a new one or do things more algorithmically (use other digital logic, f'r'instance.) I mean, if the decay loop is saturated (again, for example) then nothing much is likely to survive in the memory loop for very long.
But then you get in a recursion problem that is alluded to by the title of this message... if you are going to "decay" stuff in the decay loop, then who runs THAT ("who guards those selfsame guards" goes the Latin quote, more or less.) That is why I proposed the simplest structure that would still work: a single, recirculating process.
Still... what if the memory loop excited the decay loop which inhibits the memory loop which... (you get what I mean, I reckon.)