From: arms@cs.UAlberta.CA (Bill Armstrong)
Subject: Re: Control for flying robots?
Organization: University of Alberta, Edmonton, Canada
Date: Sun, 8 Nov 1992 23:51:56 GMT

ch952@cleveland.Freenet.Edu (Isaac D Reuben) writes:


>HELP!

>	I am trying to develop a control system for a flying 
>robot. I am a novice concerning AI so I am not really sure what
>it is that I am asking. What I want is a program that can receive
>data from about ten sources, weight them according to pre-defined
>values for each kind of data, and then send data back out to
>control servo motors. I realize that this will involve a custom
>program with multiple subsystems, one subsystem for each category
>of data input and each output.
>	I guess what I want is information, of any type, on 
>programs that do something similar to this, so I can see how they
>work and build one that does exactly what I want it to do.

>Thanks in advance,
>Isaac

There is an article "A Neural Network Baseline Problem for Control of
Aircraft Flare and Touchdown" by C. C. Jorgensen and C. Schley in the
book Neural Networks for Control, W. Thomas Miller, III, Richard S. Sutton
and Paul J Werbos, eds.

They suggest that refinements to the usual NN concepts may be necessary
for complex applications.

1. Ability of the net to learn discontinuities.

2. Control of risk.

3. Need for incorporating a priori knowledge to facilitate convergence.

4. Development of networks that can capture the performance capabilities
of a linear controller throughout the input space.

I suggest you investigate adaptive logic networks (ALNs) for your robot.

1. ALNs can learn discontinuities (obviously).  They can also deal with
continuous quantities.

2. & 3. If you exploit forced piecewise monotonicity of the functions
learned as a means of eliminating wild excursions of values that your
testing misses, and as a means of incorporating a priori knowledge,
I think you can overcome the problems here.

4. ALNs are combinational logic circuits, even when the inputs are bits of
continuous quantities.  Hence you will have no problems at all with speed.

If your nets are small enough, you may be able to implement them using
programmable logic devices which are inexpensive and light in weight.
If you want to use a simulated NN, then again, ALNs are appropriate because
they are fast (due to the avoidance of arithmetic, and lazy evaluation of
logical operations.)

Here's the way to get the software:

The latest release of the atree adaptive logic network (ALN)
simulation package, atree release 2.7, is available via anonymous ftp
from menaik.cs.ualberta.ca [129.128.4.241] in directory pub/ (use
binary mode).  It runs on IBM PCs and compatibles under Windows 3.x.
Included is documentation and ON-LINE HELP that will help you to
understand the basic principles of adaptive logic networks and enable
you to try out some examples of your own creation.  All C and C++
source code is provided.

Atree release 2.7 is available in either of two
files in this directory: atre27.exe and a27exe.exe.  The file
atre27.exe contains the full C and C++ sources for those who want to
program some applications using Borland C++ 3.x and Application
Frameworks, or some similar C/C++ development environment.  The other,
smaller file contains just the executables for those who just want to
try out atree release 2.7.

The Unix version, atree release 2.0, will be upgraded sometime to add
some of the functionality of release 2.7.  It is not yet capable of
the nice color displays of the Windows version, but besides running on
Unix workstations it can be easily ported to Macintosh, Amiga, and
other machines.

******

I have a longer readme I can mail you if you like, but I just posted it
recently,  so I won't include the rest.

For learning purposes, I suggest you get the release 2.7 even if you
have to borrow the use of a PC with Windows.  For implementation,
you will possibly want to use release 2.0, which is in straight C.

Finally, to control the monotonicities of functions for purposes of
reducing risks and inserting a priori knowledge, you will have to
avoid the "random walk" technique for encoding continuous quantities.
You will have to set up encodings that are thresholds on the
quantities in specific directions.  For example, you have to use only
thresholds like x >= 2.7 if you want the net to be monotonic
increasing in x.  You have to turn functions y = f(x) into predicates
P(x,y) and evaluate y by a binary search.  This requires as many net
evaluations as you need bits of precision of y, but if you are only
going to test the y value against a constant, one net evaluation is
enough.

Good luck,

Bill

--
***************************************************
Prof. William W. Armstrong, Computing Science Dept.
University of Alberta; Edmonton, Alberta, Canada T6G 2H1
arms@cs.ualberta.ca Tel(403)492 2374 FAX 492 1071