perm filename MICRO.V[1,VDS] blob sn#273473
filedate 1977-03-28 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00002 00002 \|\\M1BDR30\M2BDR25\F1\CA MICROPROCESSOR BASED MANIPULATOR CONTROL SYSTEM
\|\\M1BDR30;\M2BDR25;\F1\CA MICROPROCESSOR BASED MANIPULATOR CONTROL SYSTEM
\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
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.\.
\CTHE PROPOSED CONTROL CONCEPT
\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:
154 East Dana St.
Mountain View, Ca. 94041