Automated Guided Vehicle System
The AGV system described below was originally developed by a company called
Flexible Manufacturing Systems (FMS) in California for an international
pharmaceutical company. However FMS was unable to make the system work,
mainly due to software problems, and eventually went out of business.
The pharmaceutical company then called Helix Systems, Inc. to see if the
project could be salvaged. After a virtual rewrite of the entire software
over a period of several years (and some minor hardware changes), the system
was made to work reliably and as intended.
The system consists of two AGVs designed to move trays of vaccine
vials in a sterile production facility. The main purpose is to reduce human
handling of the material and thus the risk of biological contamination.
The veichles are electrically powered carts that can move over preset paths.
The paths are not permanently laid down on the floor like conventional AGV
systems, but reside in a data base, and are, thus, readily changeable. The
vehicles guide themselves via inertial navigation, with periodic fixes based
on laser scanning of special mirrors mounted in fixed locations.
The system is controlled by an external computer, which talks to the
vehicles over infrared data links. This system also controls various
plant equipment; opening and closing doors, starting and stopping conveyor belts, etc.
The system software consists of many modules written in several different
languages running on varied types of hardware. Summary of the modules:
One of the most challenging technical aspects of this system was the design
of the routing and traffic handling software for the system. The requirements
were for two vehicles to be operating simultaneously in a rather restricted
area (approximately 30 ft. by 180 ft.) carrying product at random between 6
different pickup points and 10 discharge points.
- System controller - a VAX system controlling the entire operation.
Software is in C using the VMS operating system. It consists of several
modules interconnected via messaging and a local (RAM) data base.
These modules include:
- System manager - The overall control program for the system. Controls
the jobs to be performed, individual tasks assigned each vehicle, etc.
- Vehicle manager - communicates with and sequences the vehicles; maintains
- Component manager - communicates with and controls the factory
machinery interfacing with the vehicles (doors, conveyor belts, etc).
- Terminal manager - interfaces to the operator terminals (PCs) via TCP/IP.
- Infrared manager - interfaces to the vehicles via infrared data links.
- Database manager - acts as a buffer between other processes and the relational
data base, so processes are not slowed by lengthy accesses.
- Server - a relational database server. Controls all actual data base
accesses. Connected internally to the database manager and externally via
TCP/IP to the operator terminals.
- The vehicles each contain four different linked computers. These
- Main vehicle computer (MVC) - the overall controlling computer for the
vehicle. A 68000 running a multitasking operating system called USX. Programs
are written primarily in C with some assembly language subruoutines. This
computer contains a number of software modules which communicate with the
system control computer over the IR link, sequence the material handling
hardware on the vehicle, and communicate with the subordinate computers
- Drive computer - controls the movement of the vehicle. A Z80 programmed
in C plus extensive assembly language. This computer interfaces with the
front wheel drive motor, a steering motor, an odometer and a rate gyroscope.
It moves the vehicle an exact distance at a precise direction (relative to
the current heading of the vehicle) when told to by the MVC.
- Docking computer - A Motorola 6303 computer programmed in assembly language.
When directed by the MVC, scans using a rotating laser
for specially formulated mirrors that return a reflection when the laser is pointed
at each end and when the laser is perpendicular to the mirror. Returns the
three angles found, from which the MVC is able to calculate the position of
the vehicle, using the known position and orientation of the mirror.
- Sonar computer - A Motorola 6303 computer programmed in assembly language.
Uses a number of sonar transducers to sense for obstacles in the path of the
vehicle. If an obstacle is found, alerts the MVC.
- Operator terminals - PC compatible terminals used for operator interface.
Programmed in C and assembly language under DOS. Allows the operators to
control the entire operation. Also produces various reports, using data
extracted from the relational data base in the VAX. A graphic display is
provided, which shows the exact loaction of each vehicle at all times, plus
the status of each factory component interfaced to the system.
- PLC - An Analog Devices MicroMac-6000 device programmed in BASIC. Acts as
the digital I/O interface for the VAX when communicating with factory devices.
The routing problem was to get a vehicle from source to destination in the least
possible time considering the paths available and the predicted path of the other
The traffic control problem was to assure that two vehicles never occupied the
same spot at the same time or were on the same line segment at the same time.
Vehicles were not always where they were predicted
to be when routes were assigned (for example a vehicle could unexpectedly stop
for a while if an obstacle was detected in its path).
Of course deadlocks (when both vehicles were trying to get to the same point
at the same time) had to be avoided whenever possible, and if they occured
there had to be a deadlock breaking mechanism.
All of these problems (and many others not mentioned) were solved and the
customer was extremely pleased with the result after implementation.