[comp.robotics] velocity sensing for robotic joints

apollo@ecf.utoronto.ca (Vince Pugliese) (08/08/90)

assuming one is using optical encoders (with 2-phase output)
to measure position of a (rotary) robotic joint, what should one use
to then measure velocity??

two possibilities come to mind:

1) use the position encoders with some sort of digital differentiator
   
2) a specialized velocity encoder 

any ideas, suggestions, possibilities, clues as to the feasibility
of the above. in fact any we would welcome any sort of discussion
with regard to obtaining velocity information.

thanks in advance
apollo@ecf.utoronto.ca
.vp

macminn@powertool.crd.ge.com (Stephen R MacMinn) (08/08/90)

In article <1990Aug7.205751.21206@ecf.utoronto.ca> apollo@ecf.utoronto.ca (Vince Pugliese) writes:
>assuming one is using optical encoders (with 2-phase output)
>to measure position of a (rotary) robotic joint, what should one use
>to then measure velocity??
>
>two possibilities come to mind:
>
>1) use the position encoders with some sort of digital differentiator

This is pretty common.  You could (for instance) just look at the
frequency
of the pulse train coming from one channel of your encoder, although
that wouldn't give you direction.  Its a little more tricky in your
application because the joint probably spends a lot of time loitering
near zero velocity.  In that case there is a minimum speed that you
can control to, determined by your encoder resolution, with a stable
control system.

>2) a specialized velocity encoder 

...also pretty common.  A DC tachometer is probably well suited to
this application.  If you wanted to change sensors, you could get both
position and velocity information from a resolver with R/D converter
at up to 16 bits of accuracy.

jpexg@wheaties.ai.mit.edu (John Purbrick) (08/09/90)

In article <1990Aug7.205751.21206@ecf.utoronto.ca> apollo@ecf.utoronto.ca
 (Vince Pugliese) writes:
>
>assuming one is using optical encoders (with 2-phase output)
>to measure position of a (rotary) robotic joint, what should one use
>to then measure velocity??

2-phase encoders can work reasonably well (Galil motion control, based in 
California somewhere, has a range of PC-based controllers which run servos
using encoder-only feedback) though most companies sell encoder-plus-tachometer
systems.

One idea which I'd like to hear of someone trying is to use a 2-phase encoder
with sinusoidal output, which actually means a sine and cosine. Take one of
the phases and differentiate it using an op-amp circuit, then divide the 
result by the magnitude of the other phase. The result should be proportional
to velocity, because in the case of the differentiated phase, the voltage 
would be 

V = A sin(w t), so
d(A sin(w t))/dt = A w cos(w t)

and the second phase would be 

V = A cos(w t)

Hence dividing one by tother results in w.

[V = voltage out for either encoder phase
A = max voltage at peak of the sine/cosine wave
w = rotation rate
t = time (thus speed * time = present position)]

This only works if the sine waves are pure, equal in magnitude and properly
phased, which may not be true. Plus differentiating analog quantities is a 
famous way to get in trouble.

John Purbrick
jpexg@ai.mit.edu

nagle@well.sf.ca.us (John Nagle) (08/09/90)

      This is a worthwhile area for exploration.  We have direct-drive arms,
so we should have direct-drive sensors, ones which produce useful position
and velocity data while being rotated through small angles.  DC tachometers
are not useful at low angular rates, and adding a geartrain to support a
tachometer is a messy solution; among other things, you would need antibacklash
mechanisms.  Shaft encoders have similar problems.

      Potentiometers seem an obvious choice, but they aren't a good solution.
They tend to become noisy as they wear, and this can result in violent arm
motions in a servo loop.  Differentiating the output of a pot to get velocity
is even worse; any noise indicates a big velocity change, and adding a low-pass
filter introduces a phase lag.

      Variable capacitors are a good choice.  These are the usual sensors
in laser mirror deflection systems.  Since there's no physical contact between
the plates, the noise and wear problems of pots are eliminated.  The
usual circuts for sensing capacitor values produce a variable frequency
as an output.  This can be counted and used digitally with little
difficulty.  You can use a high frequency, megahertz if necessary, so that
you can obtain frequent counter readings and difference for velocity data.
Remember to use an enclosed variable capacitor with a grounded, conductive
case, so that the readings aren't affected by nearby moving conductive
objects.

					John Nagle

grege@gold.GVG.TEK.COM (Greg Ebert) (08/10/90)

Although non-digital, another method of measuring the rotational velocity
is to measure the back-emf of the motor. I've seen this used in closed-loop
analog systems for accurate speed control. A degenerate case is the detection
of a 'motor-jam' condition. With cheap multichannel ADC's available, methinks
this might warrant some consideration.

rick@ameristar (Rick Spanbauer) (08/10/90)

In article <19481@well.sf.ca.us> nagle@well.sf.ca.us (John Nagle) writes:
>Remember to use an enclosed variable capacitor with a grounded, conductive
>case, so that the readings aren't affected by nearby moving conductive
>objects.
>					John Nagle

John, I've got a couple of noisy var caps in my antenna tuner I would like to 
introduce you to ;-).   The mechanical coupling to the variable element
seems to have worn, resulting in noise when the shaft is rotated.

Anyways, using capacitance to close the loop seems a reasonable solution.  
Check out the July 1990 Issue of Sky & Telescope for an application that 
uses a differential capacitative measurement to control the mirror in the
Keck telescope.  Neat idea!

					Rick Spanbauer

krukar@pprg.unm.edu (Richard Krukar [CHTM]) (08/10/90)

	To sense velocity from an incremental optical encoder,  you only
need a little digital circuitry.  There are two functions to consider,
speed and direction.

	First, direction because it is easy.  Use some edge triggered
flip-flops.  At the positive or negative going edge of one of the quadrature
signals, the other signal's state will indicate direction.

	Next, speed.  A low resolution method would be to feed one of the
signals into a counter.  Use a crystal and another counter to esablish
an "integration time".  Example: a 100 kHz crystal ( clock chip ) feeding
a counter doing a divide by 500 function yields a .005 second integration
time.  So every .005 seconds ( on every tick ) latch the frequency counter
output into a register and then reset the frequency counter.

	Changes to the basic theme can yeild better resolution.  For instance,
create a state machine to read the quadrature outputs.  Note the the output
is a grey code ( 0-1-3-2-0-1-3-2 ) indicative of four states.  If the last
state was three, and the inputs indicate you have entered state one, then
you know the direction of rotation.  Also, on each state transition send
a pulse to the frequency counter.  Now you have a full blown quadrature
detector/speed measurement capability.  Did you specify what this sucker
needs to interface to?

	Richard Krukar ( krukar@chtm.unm.edu )

cmcmanis@stpeter.Eng.Sun.COM (Chuck McManis) (08/11/90)

Another area you might consider is using simple inductors. A system
which has as much resolution as you'd care to spend on it. The 
tecnique being to place an inductor on one section of the joint and
a moving "core" (in the form of a conductive wire) on the other 
section. Energizing the inductor and then measuring the emf generated
in the core. Note I've never actually implemented one of these so
I don't have complete confidence in its viability but I don't see
any obvious flaws in it.


--
--Chuck McManis						    Sun Microsystems
uucp: {anywhere}!sun!cmcmanis   BIX: <none>   Internet: cmcmanis@Eng.Sun.COM
These opinions are my own and no one elses, but you knew that didn't you.
"I tell you this parrot is bleeding deceased!"

jn163051@longs.LANCE.ColoState.Edu (Joel Nevison) (08/13/90)

In article <140483@sun.Eng.Sun.COM> cmcmanis@stpeter.Eng.Sun.COM (Chuck McManis) writes:
>
>Another area you might consider is using simple inductors. A system
>which has as much resolution as you'd care to spend on it. The 
>tecnique being to place an inductor on one section of the joint and
>a moving "core" (in the form of a conductive wire) on the other 
>section. Energizing the inductor and then measuring the emf generated
>in the core. Note I've never actually implemented one of these so
>I don't have complete confidence in its viability but I don't see
>any obvious flaws in it.

My first contribution, neat group!

I have seen this implemented on a GCA stepper as velocity feedback to 
prevent the auto-focus from oscillating.  They called it an LVTD which
I believe stands for linear velocity difference transducer? Correct me
someone.   I don't believe the coil was energized, I think they had a 
magnet moving inside.  This was measuring some fairly small velocities
as the total travel was less than 1/2" and I never saw it move that distance
faster than ~1/3 second (in failure mode).   Normally it measured moves
on the order of a millimeter.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Substitution mass confusion   /           Joel Nevison                  |
|    Clouds inside my head     /  jn163051@longs.lance.colostate.edu      |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

whit@milton.u.washington.edu (John Whitmore) (08/14/90)

In article <8441@ccncsu.ColoState.EDU> jn163051@longs.LANCE.ColoState.Edu (Joel Nevison) writes:
>
>I have seen this implemented on a GCA stepper as velocity feedback to 
>prevent the auto-focus from oscillating.  They called it an LVTD which
>I believe stands for linear velocity difference transducer? Correct me
>someone.   I don't believe the coil was energized, I think they had a 
>magnet moving inside.  

	There is a position-measuring device called LVDT (Linear Variable
Differential Transformer) which is used to measure distance displacement.
Our machine shop has a gage using this sort of cell that gives about
one microinch resolution.
	For velocity measurement, we use a Hewlett-Packard gizmo
that looks similar, but the bead in the center is a permanent magnet;
it is called an LV-Syn, or sometimes LVT (Linear Velocity Transducer).  
Our machine does Mossbauer measurements, requiring control of 
velocity to one part in 1000 of 1 mm/sec velocities.  It works fine.
	I have seen similar linear velocity transducers (basically
it's just a linear generator) in large hard disk drives, in the
head assembly, also presumably to control seek speeds.  Unfortunately,
this sort of device fails at LOW velocities because of its inductive
output impedance; the signal/noise ratio can be guaranteed worse than
any given value for some sufficiently small velocity.  Creep of the
system becomes a problem (so the disk drives had ANOTHER feedback
mechanism to control absolute positions).

	Since the original question was about controlling a rotational
velocity (like in an arm joint), I wonder why no one has suggested
looking at the motor's back EMF; it gives the same information as
a separate electric generator would, and it's ALREADY built in.

		John Whitmore

n8243274@unicorn.WWU.EDU (steven l. odegard) (08/22/90)

I read about a new General Electric DC motor that uses back EMF as an
signal to trigger the rotor or stator to switch electronically.  As
anyone used this system as a servo?


-- 
--SLO  8243274@wwu.edu  uw-beaver!wwu.edu!8243274  n8243274@unicorn.wwu.edu