Sunday 11 May 2008

Fuzzy Logic and Neural Networks

Fuzzy Logic and neural networks are two design methods that are
coming into favor in embedded systems. The two methods are very
different from each other, from conception to implementation.
However, the advantages and disadvantages of the two can complement
each other.


The advantage of neural networks is that it is possible to design
them without completely understanding the underlying logical rules by
which they operate. The neural network designer applies a set of
inputs to the network and "trains" it to produce the required output.
The inputs must represent the behavior of the system that is being
programmed, and the outputs should match the desired result within
some margin of error. If the network's output does not agree with
the desired result, the structure of the neural network is altered
until it does. After training it is assumed that the network will
also produce the desired output, or something close to it, when it
presented with new and unknown data.

In contrast, a fuzzy-logic system can be precisely described. Before
a fuzzy control system is designed, its desired logical operation
must be analyzed and translated into fuzzy-logic rules. This is the
step where neural networks technology can be helpful to the
fuzzy-logic designer. The designer can first train a software neural
network to produce the desired output from a given set of inputs and
outputs and then use a software tool to extract the underlying rules
from the neural network. The extracted rules are translated into
fuzzy-logic rules.

Fuzzy logic is not a complete design solution. It supplements rather
than replaces traditional event control and PID (proportional,
integral, and derivate) control techniques. Fuzzy logic relies on
grade of membership and artifical intelligence techniques. It works
best when it is applied to non-linear systems with many inputs that
cannot be easily expressed in either mathematical equations used for
PID control or IF-THEN statements used for event control.

In an effort to change fuzzy logic from a "buzzword" (as it is in
most parts of the world) to a well established design method (as it
is in Japan), most manufacturers of microcontrollers have introduced
fuzzy logic software. Most software generates code for specific
microcontrollers, while other generates C code which can be compiled
for any microcontroller.

Read More......

Interpreters

An interpreter is a high level language translator that is closer to
natural language. The interpreter itself is a program that sits
resident in the microcontroller. It executes a program by reading
each language statement one at a time and then doing what the
statement says to do. The two most popular interpreters for
microcontrollers are BASIC and FORTH.


BASIC's popularity is due to its simplicity, readability, and of
course just about everyone has at least played with BASIC at one time
or another. One common compaint about [interpreted] BASIC is that it
is slow. Often this can be solved by using a different technique for
performing the desired task. Other times it is just the price paid
for using an interpreter.

FORTH has a very loyal following due to its speed (approaching that
of assembler language) and its incremental approach to building a
system from reusable parts. Many FORTH systems come with a host
system which turns your desktop computer into a development system.
FORTH can be quite difficult to write in (if you have no experience
with it) and is probably even harder to read. However, it is a very
useful and productive language for control systems and robotics, and
can be mastered in time.

The nicest thing about developing a system with an interpreter is
that you can build your program interactively. You first write a
small piece of code and then you can try it out immediately to see
how it works. When the results are satisfactory, you can then add
additional components until the final product is achieved.

Read More......