You are on page 1of 6

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 �. 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) = �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 �. The two inputs into Unit B are error e and its time derivative
�. e is the difference between a reference force and the
applied output force. Labels and membership functions for e and
� 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 � is small, then Ke is very small


If v is large and � is medium,then Ke is small
If v is large and � is large, then Ke is medium
If v is small and � is small, then Ke is medium
If v is small and � is medium,then Ke is large
If v is small and � 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

You might also like