perm filename MICRO.V[1,VDS] blob sn#273473 filedate 1977-03-28 generic text, type C, neo UTF8
C00001 00001
C00016 ENDMK

\F2\J	As an outgrowth  of work at  the Stanford Artificial  Intelligence
Lab., Vicarm,  Inc.   was  founded to  develop  and  manufacture  computer
controlled  robots   for  automation   and  manufacturing   research   and
development applications.   Vicarm  was recently  acquired  by  Unimation,
Inc., a large maker of robots.  It is now faced with the task of making an
industrialized version of these research manipulators.

	The current manipulator system consists  of a 6 degree of  freedom
mechanical arm, an arm controller, a DEC LSI-11 computer, and software  to
enable one to program the arm using the VAL language.  Customers for  this
system have been places like, M.I.T., Stanford Research Institute,  Purdue
University, General Motors, Texas Instruments Corp, and the National Bureau
of Standards.

	The principle of operation is that a motion program is written and
then executed.  Execution results  in the LSI-11  computing, in real  time,
sequences of arm joint angles.  There  are 6 joints and the angle  command
is computed every 20 ms for each joint.

	Currently, these position commands are converted to analog signals
by a 12 bit DAC and summed with the analog position feedback signal from a
joint angle measuring  potentiometer at the  joint.  Velocity feedback  is
also summed and used for damping.  In addition, numerous FET switches  are
used to control  an integration term,  a comparator that  senses when  the
joint is within a certain tolerance region, and some extra logic to  sense
when the joint is near or past adjustable electrical limit stops.  Furthur
features include potentiometer  adjustable lead and  lag compensation  and
bandwidth control on both positon and velocity feedback signals.

	Everything is currently done in  analog fashion, using low  offset
op-amps and precision resistors.  To allow all servo cards to be the  same
(there are 7 in each arm controller- 6 for the arm joints and one for  the
hand), 17 potentiometers are included on EACH board.  The total number  of
components is over  300 for each  joint...consisting mostly of  resistors,
compensation capacitors, op-amps, transistors, and diodes.  The boards are
confusing to  stuff, timely  to debug,  and costly  to adjust.   In  fact,
potentiometer adjustment is done in a trial and error haphazard fashion.

	A new manipulator  is currently being  designed.  This model  will
use optical encoders as the position  feedback element.  It is desired  to
replace as much of the current analog logic with digital logic.  Since all
joints  are  basically   the  same  but   requiring  different  gain   and
compensation parameters, a microprocessor  based joint controller  appears
to be an ideal configuration.\.


\J	We have our LSI-11.  It outputs joint angles in 16 bit word  form,
at the rate of 50 per  second.  Our optical encoder senses joint  rotation
and outputs two square waves in quadrature (90degrees out of phase).  These signals are  read
by the microprocessor (Z80 or 8080, etc.) and are counted to keep track of
joint angle.   There are  a total  of 16  bits of  counts for  full  joint
rotation.  The microprocessor subtracts this count from the command number
to get a  raw error  number.  Furthur processing  is done  on this  number
before it is outputted to a 10 or 12 bit DAC which drives the motor  drive
D.C. power  amplifier.   Thus,  each  joint consists  of  one  motor,  one
position  encoder,  one  microprocessor,   one  set  of  support   digital
electronics, one  program, one  set of  analog electronics  and one  power
amplifier.  All getting data from a central LSI-11 computer.

	There are  various  acceptable  levels  of  development  for  this
system. There  are  also  many  approaches  which  will  solve  the  task,
involving more or less  use of the  microprocessor, and tradeoffs  between
TTL, LSI, and Analog elements.   Here are some immediate possible  project
suggestions.  Demonstration of  one joint operation  and simulated  LSI-11
data input would be sufficient to start with. I have listed tasks in  what
I see  as  a  logical order  of  development,but  you may  have  your  own

	1.  The encoder outputs two  square waves in quadrature.  Use  TTL
logic to decode the  signals and drive TTL  counters (this logic is already
developed).  Use the microprocessor to read the TTL counter, then subtract
from LSI-11 command number input, and output error number.

	1. Use the microprocessor to decode and count the encoder  output,
store the  count, read  the LSI-11  command number,  subtract the  encoder
number from command number and output the difference (error). [Note:   The
encoder can have count  rates up to  50khz, which may be  too high for  an
8080 to work with and still do other computations.]

	3. Do the  above but interpolate  the LSI-11 output,  so that  the
command number makes 3 small steps  in
each interval.  [1 smaller step every  5ms. instead of a large step  every
20ms.]  This results in smoother arm motion.

	4.  Add to  above- limit stop  sensing.  Set programmable  limits.
Should the feedback  count be above  or below a  limit number, change  the
error number to create an output  command driving the joint back into  its
normal operating region.  Make sure to revert back to normal mode once the
joint is within  operating range.  Create a small  proportional region  to
keep limit stop motion stable.

	5.  Add  to above.   It is  desirable to  know when  the joint  is
within a commanded tolerance region  (absolute value of error number  less
than a programmable tolerance number).  A coarse and fine level should  be
selectable.  To insure  that the joint  is really not  just coasting  thru
this region, the  joint should  be in  tolerance for  a prescribed,  fixed
amount of time (say about 30  ms.)  before the in-tolerance bit is  turned

	6.  Add to above.  Ability to  change gain.  The loop gain of  the
system can be changed by multiplying the error number by a constant.  It's
fast to multiply by 2,4,8,...  but how about by  numbers between 1 and  2.
The reason for this is that as  arm geometry changes, and when carrying  a
load, moments of inertia  change.  This changes  system damping.  Thus  to
optimize performance, loop gain (and also compensation terms) must also be
changed.  Assume that the LSI-11 can output  a word every once in a  while
(i.e.  every 100ms.)  which gives the new desired gain terms, etc.)

	7.  Add to above- As this arm is a humanoid configuration  device,
all  joints  are  subject   to  gravity  torques   which  vary  with   arm
configuration and load.  To have zero  position error in a gravity  field,
an offset term  must be introduced  to create motor  drive current  (motor
torque) when the arm is at the desired position (raw error is zero).  This
can be done with an integral term  which is a function of error and  time.
But the  time constant  of such  a term  must be  long enough  to  prevent
overshoot.  A good feature is to enable integration only when the joint is
close to the desired position.

	8. Add  to above.   As  part of  7, the  LSI-11  can look  at  arm
configuration and  approximate  load  and calculate  a  predicted  gravity
torque on each joint.  It can output this information as part of the  same
word used in  6.  Thus, incorporate  an offset term  to the error  signal.
This will mean that integration need only zero the errors in the offset.

	9. Use encoder count rate as velocity information.  Multiply by  a
programmable gain, and  subtract from position  error to provide  velocity

	10.  Take  derivative  of  count  rate  and  use  as  acceleration

	11.  Eliminate need for DAC by  making error number output into  a
precisely controlled  pulse width  modulated output.   This will  drive  a
switching amplifier directly.

	12.  Enough for now...but I've lots more ideas, for those who  are

	I will be happy to give  a thorough demonstration of the  existing
system and  loan the  system to  the lab.  for a  while, should  there  be
interest and hands on experience be warranted.\.

For furthur information contact:
					Vic Scheinman
					Unimation, Inc.
					154 East Dana St.
					Mountain View, Ca. 94041
					Tel. 965-0557