341 lines
15 KiB
Plaintext
341 lines
15 KiB
Plaintext
|
|
|||
|
INTRODUCTION
|
|||
|
|
|||
|
Servo motors are widely used in the field of motion control in
|
|||
|
factory automation. The control target can be position, speed, or
|
|||
|
force, among others. For this example application we take force
|
|||
|
as the control variable.
|
|||
|
|
|||
|
In order to implement force control, we need to know the
|
|||
|
compliance (response) of the controlled object to force. The
|
|||
|
feedback gain in the control loop changes as a function of
|
|||
|
compliance.
|
|||
|
|
|||
|
Grasping a range of objects from, for example, a soft tennis
|
|||
|
ball to a hard steel ball using conventional servo control is
|
|||
|
extremely difficult. The traditional control model does not
|
|||
|
handle a variety of objects with differing material
|
|||
|
characteristics very well. The system can become unstable. Fuzzy
|
|||
|
logic, with its inherent flexibility, can be employed
|
|||
|
effectively as an alternative in this situation.
|
|||
|
|
|||
|
|
|||
|
FUZZY FORCE CONTROLLER
|
|||
|
|
|||
|
Control Objective
|
|||
|
|
|||
|
Grasp objects of various compliance, ranging, for example, from a
|
|||
|
soft tennis ball to a hard steel ball with a constant force.
|
|||
|
|
|||
|
|
|||
|
Control System
|
|||
|
|
|||
|
The control block diagram is shown in Figure 1. Output force
|
|||
|
applied to the object is measured by a sensor and compared
|
|||
|
against a reference force to obtain the difference. A control
|
|||
|
gain Kg is applied to diminish this force difference. This gain
|
|||
|
also varies as a function of the compliance of the grasped
|
|||
|
object. Thus, control gain Kg is affected by two
|
|||
|
factors: (1) the compliance of the object and (2) the difference
|
|||
|
between a reference force and the measured force. Branches
|
|||
|
coming off the error (e) node and speed (v) node of the above
|
|||
|
diagram are expansions of those nodes, and represent variables
|
|||
|
to be used to determine the control gain. They do not represent
|
|||
|
additional control paths. We can write the control gain and
|
|||
|
diagram its components as shown in Figure 2 below.
|
|||
|
|
|||
|
|
|||
|
Ks (compliance component) is a function of Ke. Kf (force
|
|||
|
component) is a function of error e and its time
|
|||
|
derivative <20>. Both can be inferred by fuzzy logic.
|
|||
|
|
|||
|
The compliance Ke is determined by injecting a
|
|||
|
speed command v into the servo motor and
|
|||
|
measuring the output force f. Compliance is
|
|||
|
expressed as follows:
|
|||
|
|
|||
|
Ke = df/dx = (df/dt)/(dx/dt) = <20>f/v
|
|||
|
|
|||
|
We obtain
|
|||
|
|
|||
|
Ke = (fk-f(k-1))/v(k-1)
|
|||
|
|
|||
|
Compliance can be thought of as the change in force (df) required
|
|||
|
for a given deformation (dx) of an object. For example, a tennis
|
|||
|
ball has a large compliance because the force needed to initiate
|
|||
|
deformation is small, but increases significantly as the
|
|||
|
deformation process proceeds. The change in force from initiation
|
|||
|
to termination is large. At the other extreme is the steel ball,
|
|||
|
which has small compliance. Although the force required to
|
|||
|
initiate deformation is large, the force to continue deformation
|
|||
|
does not change significantly. Consequently, the change from
|
|||
|
initiating to terminating force is small.
|
|||
|
|
|||
|
It is known that the control gain Kg is the
|
|||
|
reciprocal of the compliance Ke, so Ks can be inferred from Ke
|
|||
|
by the following fuzzy rules:
|
|||
|
|
|||
|
If Ke is small then Ks is large
|
|||
|
If Ke is large then Ks is small
|
|||
|
|
|||
|
These two rules make up the fuzzy inference unit A which connects
|
|||
|
Ke with Ks.
|
|||
|
|
|||
|
|
|||
|
Definition of Input/Out Variables for Unit B
|
|||
|
|
|||
|
Now let us consider fuzzy inference unit B, inferring Kf from e
|
|||
|
and <20>. The two inputs into Unit B are error e and its time derivative
|
|||
|
<20>. e is the difference between a reference force and the
|
|||
|
applied output force. Labels and membership functions for e and
|
|||
|
<20> are defined as shown in Figure 3a, 3b respectively. Figure 3c shows
|
|||
|
the labels and membership functions for Kf.
|
|||
|
|
|||
|
|
|||
|
FIU Source Code of Unit B
|
|||
|
|
|||
|
The following is the source code of Unit B written in FIDE's
|
|||
|
Fuzzy Inference Language (FIL). Note that in the definition of
|
|||
|
input variable Error, the value of P_VerySmall is given as (@-3,
|
|||
|
0, @0, 1, @50, 0), and that of N_VerySmall is (@-50, 0,
|
|||
|
@0, 1, @3, 0). We use -3 and 3 instead of -1 and 1
|
|||
|
respectively because the data range of Error must be accommodated
|
|||
|
in a resolution of 8 bits. This means the smallest interval of
|
|||
|
Error is 600/256 = 3. The membership functions of these
|
|||
|
fuzzy sets are shown in Figure 3a, 3b, and 3c as we have seen.
|
|||
|
|
|||
|
$ FILENAME: motor/motor1.fil
|
|||
|
$ DATE: 08/12/1992
|
|||
|
$ UPDATE: 08/14/1992
|
|||
|
|
|||
|
$ Two inputs, one output, to determine control gain
|
|||
|
$ INPUT(S): Error, Derivative(_of_Error)
|
|||
|
$ OUTPUT(S): Gain
|
|||
|
|
|||
|
$ FIU HEADER
|
|||
|
|
|||
|
fiu tvfi (min max) *8;
|
|||
|
|
|||
|
$ DEFINITION OF INPUT VARIABLE(S)
|
|||
|
|
|||
|
invar Error " " : -300 () 300 [
|
|||
|
P_Large (@100, 0, @200, 1, @300, 1),
|
|||
|
P_Medium (@50, 0, @100, 1, @200, 0),
|
|||
|
P_Small (@0, 0, @50, 1, @100, 0),
|
|||
|
P_VerySmall (@-3, 0, @0, 1, @50, 0),
|
|||
|
N_VerySmall (@-50, 0, @0, 1, @3, 0),
|
|||
|
N_Small (@-100,0, @-50, 1, @0, 0),
|
|||
|
N_Medium (@-200,0, @-100, 1, @-50, 0),
|
|||
|
N_Large (@-300,1, @-200, 1, @-100,0)
|
|||
|
];
|
|||
|
|
|||
|
invar Derivative " " : -30 () 30 [
|
|||
|
P_Large (@10, 0, @20, 1, @30, 1),
|
|||
|
P_Medium (@5, 0, @10, 1, @20, 0),
|
|||
|
P_Small (@0, 0, @5, 1, @10, 0),
|
|||
|
P_VerySmall (@-1, 0, @0, 1, @5, 0),
|
|||
|
N_VerySmall (@1, 0, @0, 1, @-5, 0),
|
|||
|
N_Small (@0, 0, @-5, 1, @-10,0),
|
|||
|
N_Medium (@-5, 0, @-10, 1, @-20,0),
|
|||
|
N_Large (@-10, 0, @-20, 1, @-30,1)
|
|||
|
];
|
|||
|
|
|||
|
$ DEFINITION OF OUTPUT VARIABLE(S)
|
|||
|
|
|||
|
outvar Gain " " : -2 () 2 * (
|
|||
|
P_Large = 2.00,
|
|||
|
P_Medium = 1.00,
|
|||
|
P_Small = 0.50,
|
|||
|
P_VerySmall = 0.25,
|
|||
|
Zero = 0.00,
|
|||
|
N_VerySmall = -0.25,
|
|||
|
N_Medium = -1.00
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
$ RULES
|
|||
|
|
|||
|
if Error is N_Large and Derivative is P_Large then Gain is P_Medium;
|
|||
|
if Error is N_Large and Derivative is P_Medium then Gain is P_Medium;
|
|||
|
if Error is N_Large and Derivative is P_Small then Gain is P_Medium;
|
|||
|
if Error is N_Large and Derivative is P_VerySmall then Gain is P_Medium;
|
|||
|
if Error is N_Large and Derivative is N_VerySmall then Gain is P_Medium;
|
|||
|
if Error is N_Large and Derivative is N_Small then Gain is P_Medium;
|
|||
|
if Error is N_Large and Derivative is N_Medium then Gain is P_Small;
|
|||
|
if Error is N_Large and Derivative is N_Large then Gain is P_Small;
|
|||
|
|
|||
|
if Error is N_Medium and Derivative is P_Large then Gain is P_Medium;
|
|||
|
if Error is N_Medium and Derivative is P_Medium then Gain is P_Medium;
|
|||
|
if Error is N_Medium and Derivative is P_Small then Gain is P_Medium;
|
|||
|
if Error is N_Medium and Derivative is P_VerySmall then Gain is P_Medium;
|
|||
|
if Error is N_Medium and Derivative is N_VerySmall then Gain is P_Medium;
|
|||
|
if Error is N_Medium and Derivative is N_Small then Gain is P_Medium;
|
|||
|
if Error is N_Medium and Derivative is N_Medium then Gain is P_Small;
|
|||
|
if Error is N_Medium and Derivative is N_Large then Gain is Zero;
|
|||
|
|
|||
|
if Error is N_Small and Derivative is P_Large then Gain is P_Medium;
|
|||
|
if Error is N_Small and Derivative is P_Medium then Gain is P_Medium;
|
|||
|
if Error is N_Small and Derivative is P_Small then Gain is P_Medium;
|
|||
|
if Error is N_Small and Derivative is P_VerySmall then Gain is P_Medium;
|
|||
|
if Error is N_Small and Derivative is N_VerySmall then Gain is P_Medium;
|
|||
|
if Error is N_Small and Derivative is N_Small then Gain is P_Small;
|
|||
|
if Error is N_Small and Derivative is N_Medium then Gain is P_VerySmall;
|
|||
|
if Error is N_Small and Derivative is N_Large then Gain is N_VerySmall;
|
|||
|
|
|||
|
if Error is N_VerySmall and Derivative is P_Large then Gain is P_Medium;
|
|||
|
if Error is N_VerySmall and Derivative is P_Medium then Gain is
|
|||
|
P_Medium;
|
|||
|
if Error is N_VerySmall and Derivative is P_Small then Gain is P_Medium;
|
|||
|
if Error is N_VerySmall and Derivative is P_VerySmall then Gain is
|
|||
|
P_Medium;
|
|||
|
if Error is N_VerySmall and Derivative is N_VerySmall then Gain is
|
|||
|
P_Large;
|
|||
|
if Error is N_VerySmall and Derivative is N_Small then Gain is
|
|||
|
P_VerySmall;
|
|||
|
if Error is N_VerySmall and Derivative is N_Medium then Gain is
|
|||
|
N_VerySmall;
|
|||
|
if Error is N_VerySmall and Derivative is N_Large then Gain is
|
|||
|
N_Medium;
|
|||
|
|
|||
|
if Error is P_VerySmall and Derivative is P_Large then Gain is
|
|||
|
N_Medium;
|
|||
|
if Error is P_VerySmall and Derivative is P_Medium then Gain is
|
|||
|
N_VerySmall;
|
|||
|
if Error is P_VerySmall and Derivative is P_Small then Gain is
|
|||
|
P_VerySmall;
|
|||
|
if Error is P_VerySmall and Derivative is P_VerySmall then Gain is
|
|||
|
P_Large;
|
|||
|
if Error is P_VerySmall and Derivative is N_VerySmall then Gain is
|
|||
|
P_Medium;
|
|||
|
if Error is P_VerySmall and Derivative is N_Small then Gain is
|
|||
|
P_Medium;
|
|||
|
if Error is P_VerySmall and Derivative is N_Medium then Gain is
|
|||
|
P_Medium;
|
|||
|
if Error is P_VerySmall and Derivative is N_Large then Gain is
|
|||
|
P_Medium;
|
|||
|
|
|||
|
if Error is P_Small and Derivative is P_Large then Gain is N_VerySmall;
|
|||
|
if Error is P_Small and Derivative is P_Medium then Gain is
|
|||
|
P_VerySmall;
|
|||
|
if Error is P_Small and Derivative is P_Small then Gain is P_Small;
|
|||
|
if Error is P_Small and Derivative is P_VerySmall then Gain is
|
|||
|
P_Medium;
|
|||
|
if Error is P_Small and Derivative is N_VerySmall then Gain is
|
|||
|
P_Medium;
|
|||
|
if Error is P_Small and Derivative is N_Small then Gain is P_Medium;
|
|||
|
if Error is P_Small and Derivative is N_Medium then Gain is P_Medium;
|
|||
|
if Error is P_Small and Derivative is N_Large then Gain is P_Medium;
|
|||
|
|
|||
|
if Error is P_Medium and Derivative is P_Large then Gain is Zero;
|
|||
|
if Error is P_Medium and Derivative is P_Medium then Gain is P_Small;
|
|||
|
if Error is P_Medium and Derivative is P_Small then Gain is P_Medium;
|
|||
|
if Error is P_Medium and Derivative is P_VerySmall then Gain is
|
|||
|
P_Medium;
|
|||
|
if Error is P_Medium and Derivative is N_VerySmall then Gain is
|
|||
|
P_Medium;
|
|||
|
if Error is P_Medium and Derivative is N_Small then Gain is P_Medium;
|
|||
|
if Error is P_Medium and Derivative is N_Medium then Gain is P_Medium;
|
|||
|
if Error is P_Medium and Derivative is N_Large then Gain is P_Medium;
|
|||
|
|
|||
|
if Error is P_Medium and Derivative is P_Large then Gain is P_Small;
|
|||
|
if Error is P_Medium and Derivative is P_Medium then Gain is P_Small;
|
|||
|
if Error is P_Medium and Derivative is P_Small then Gain is P_Medium;
|
|||
|
if Error is P_Medium and Derivative is P_VerySmall then Gain is
|
|||
|
P_Medium;
|
|||
|
if Error is P_Medium and Derivative is N_VerySmall then Gain is
|
|||
|
P_Medium;
|
|||
|
if Error is P_Medium and Derivative is N_Small then Gain is P_Medium;
|
|||
|
if Error is P_Medium and Derivative is N_Medium then Gain is P_Medium;
|
|||
|
if Error is P_Medium and Derivative is N_Large then Gain is P_Medium
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
Input/Output Response
|
|||
|
|
|||
|
Figure 4 shows the response surface of the FIU defined above.
|
|||
|
This surface is obtained by using the Analyzer tool provided in
|
|||
|
FIDE.
|
|||
|
|
|||
|
|
|||
|
COMMENTS
|
|||
|
|
|||
|
Through experimentation, we can obtain a set of rules to infer
|
|||
|
compliance Ke from speed v, and the measured force f. The rules
|
|||
|
are in essence as follows:
|
|||
|
|
|||
|
If v is large and <20> is small, then Ke is very small
|
|||
|
If v is large and <20> is medium,then Ke is small
|
|||
|
If v is large and <20> is large, then Ke is medium
|
|||
|
If v is small and <20> is small, then Ke is medium
|
|||
|
If v is small and <20> is medium,then Ke is large
|
|||
|
If v is small and <20> is large, then Ke is very large
|
|||
|
|
|||
|
The label names used here give an intuitive sense of how the
|
|||
|
rules apply. However, even though label names are the same for
|
|||
|
different variables, the fuzzy sets associated with these labels
|
|||
|
may be different. For speed v, the label large
|
|||
|
may be a fuzzy set as shown in Figure 5a, and for compliance
|
|||
|
Ke, label large could be another fuzzy set as shown in Figure 5b.
|
|||
|
|
|||
|
|
|||
|
The ranges of these variables can be determined by experiment on
|
|||
|
the devices and objects of interest. For example, compliance data
|
|||
|
gathered from a soft tennis ball and a hard steel ball can be
|
|||
|
used to define large and small labels respectively for variable
|
|||
|
Ke.
|
|||
|
|
|||
|
If we use an FIU to infer compliance Ke, the control gain
|
|||
|
function now becomes three FIUs and an operations block (FOU) as
|
|||
|
shown in Figure 6. The FOU implements Kg = Ks . Kf . Using
|
|||
|
Fide's Composer capability, these four blocks can be combined
|
|||
|
into a single system for analysis and simulation purposes.
|
|||
|
|
|||
|
(Weijing Zhang, Applications Engineer, Aptronix Inc.)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
For Further Information Please Contact:
|
|||
|
|
|||
|
Aptronix Incorporated
|
|||
|
2150 North First Street #300
|
|||
|
San Jose, CA 95131
|
|||
|
Tel (408) 428-1888
|
|||
|
Fax (408) 428-1884
|
|||
|
FuzzyNet (408) 428-1883 data 8/N/1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Aptronix Company Overview
|
|||
|
|
|||
|
Headquartered in San Jose, California, Aptronix develops and
|
|||
|
markets fuzzy logic-based software, systems and development
|
|||
|
tools for a complete range of commercial applications. The
|
|||
|
company was founded in 1989 and has been responsible for a
|
|||
|
number of important innovations in fuzzy technology.
|
|||
|
|
|||
|
Aptronix's product Fide (Fuzzy Inference Development
|
|||
|
Environment) -- is a complete environment for the development of
|
|||
|
fuzzy logic-based systems. Fide provides system engineers with
|
|||
|
the most effective fuzzy tools in the industry and runs in
|
|||
|
MS-Windows(TM) on 386/486 hardware. The price for Fide is $1495 and
|
|||
|
can be ordered from any authorized Motorola distributor. For a
|
|||
|
list of authorized distributors or more information, please
|
|||
|
call Aptronix. The software package comes with complete
|
|||
|
documentation on how to develop fuzzy logic based applications,
|
|||
|
free telephone support for 90 days and access to the Aptronix
|
|||
|
FuzzyNet information exchange.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Servo Motor Force Control
|
|||
|
|
|||
|
FIDE Application Note 003-140892
|
|||
|
Aptronix Inc., 1992
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|