Automatic guided vehicle system

Automatic guided vehicle system for guiding a driverless vehicle over a predetermined path of travel without any tracks, wires or the like. The vehicle is provided with an active optical navigation section for determining vehicle position and bearing by scanning plural beacons distributed within the zone of travel of the vehicle, a passive ground navigation section including a gyrocompass for measuring changes in bearing of the vehicle and a wheel encoder for measuring distance traveled by the vehicle's steering wheel. Memory onboard the vehicle contains a series of path vectors which define a predetermined path of travel for the vehicle. The ground navigation section updates vehicle position and bearing as determined by the optical navigation section. A programmed onboard computer includes driver software for generating steering data so as to guide the vehicle over a corrective arc path from its position and bearing as determined by the navigation sections to the desired position and bearing as indicated by a stored path vector.

BACKGROUND OF THE INVENTION 
Automatic guided vehicle system (AGVS) wherein a driverless vehicle is 
operated in a predetermined zone within a warehouse, industrial plant or 
the like are known. The driverless vehicle may carry a pay load such as a 
product to be delivered from one location to another, onboard robotics for 
performing a particular operation at a series of locations, and the like. 
Conventionally, such vehicles are guided over a series of tracks from one 
position to another wherein no steering mechanism is required onboard the 
vehicle. Various wire guided driverless vehicle systems are also known. 
Typically, such systems include a wire embedded in the ground, the wire 
carrying the necessary information for guiding the vehicle over the wire 
path. 
The present invention is directed to an AGVS of the type which requires no 
tracks and no wires for guiding the vehicle. The probelm solved by the 
present invention is that of providing a vehicle with a self-contained 
navigation system for guiding the vehicle over any one of an almost 
infinite variety of paths initially prescribed by a base station computer. 
The system uses complementary onboard navigation systems for tracking 
vehicle position and bearing and for correcting vehicle position and 
bearing over selected arc segments, with no need for communication with 
the base station during navigation. 
SUMMARY OF THE INVENTION 
Automatic guided vehicle system for guiding a driverless vehicle within a 
predetermined zone divisible into coordinate positions, comprising a 
driverless vehicle provided with a steering mechanism and a drive 
controller for controlling the steering mechanism so as to guide the 
vehicle within the zone, plural beacons distributed within the zone 
outboard the driverless vehicle, a programmed computer onboard the vehicle 
having memory for storing a series of coordinate positions representing 
the positions of the beacons and a series of path vectors comprising 
position and bearing data, the vectors together representing a 
predetermined path of travel for the vehicle. 
A first navigation section onboard the vehicle includes means for optically 
scanning the beacons and means for generating data signals indicating the 
position and bearing of the vehicle, and a second navigation section 
onboard the vehicle includes means for generating data signals indicating 
changes in position and bearing of the vehicle. Driver means onboard the 
vehicle are responsive to the data signals generated by the first and 
second navigation sections and to the stored path vectors for causing the 
drive controller to control the steering mechanism such that the vehicle 
follows the predetermined path of travel. 
For the purpose of illustrating the invention, there is shown in the 
drawings a form which is presently preferred; it being understood, 
however, that this invention is not limited to the precise arrangements 
and instrumentalities shown.

DETAILED DESCRIPTION OF THE INVENTION 
Referring to the drawings, wherein like numerals indicate like elements, 
there is shown in FIG. 1 a diagram of a driverless vehicle 10 traveling in 
a zone containing plural beacons 12-24. Preferably, each beacon is in the 
form of an upright cylinder of retroreflecting foil. The zone is divisable 
into an x, y coordinate grid. Vehicle 10 is provided with free wheeling 
rear wheals 11, 13 and a motor driven and steered front wheels 15. The 
vehicle moves in arc segments over the x, y coordinate grid as described 
more fully hereafter. The circle 26 represents a range threshold with 
respect to the location 28 of the on board vehicle optics within which the 
system utilizes valid signals returned by the beacons. The return signal 
for a beacon lying outside the range threshold, such as beacon 24 in FIG. 
1, is not utilized by the system. 
The system optics include a 2 mW CW, 780 nm collimated scanning (IR) laser 
beam of approximately 5 mm diameter. The beam is rotated continuously to 
scan substantially a 360.degree. azimuth. The laser beam is amplitude 
modulated at 100 KHz as shown in FIG. 2 for noise immunity. A beacon 
provides a return signal reflecting the beam back to the system optics. 
A simplified diagram of the system optics is provided in FIG. 3. A 
collimated semiconductor laser 30 (Phillips CQL16 Collimator Pen) produces 
a beam 32. A rotating (gold) mirror 34 driven by a motor M directs the 
beam over 360.degree. azimuth. Preferably, the mirror is rotated at one or 
two revolutions per second. An angular resolution of 0.3.times.10.sup.-4 
is obtained over 360.degree. azimuth by means of a precision 1000 step 
optical shaft encoder coupled to the motor M shaft and a phase locked loop 
(PLL) which multiplies the encoder pulse frequency output. A beacon which 
is illuminated by the beam reflects the beam back to the rotating mirror. 
The rotating mirror reflects the beam over paths 36, 36' through a lens 38 
to a parabolic mirror 40. Mirror 40 reflects the beam to another parabolic 
mirror 42 over paths 44, 44'. Mirror 42 directs the beam to an IR bandpass 
filter 46 over paths 48, 48'. The filtered beam is detected by 
photodetector 50. Up to sixteen beacon sightings can be processed per 
revolution of the optics by a computer onboard the vehicle as described 
hereafter. The processing is performed at the end of each revolution 
during a dead angle while the beam 32 is blocked. 
The duration of a return signal is determined by the width of a beacon and 
is directly proportional to the range of the beacon to the vehicle as 
represented by the location 28 of the system optics. A beacon lying near 
the range threshold 26, such as a beacon 22 in FIG. 1, will be illuminated 
by the beam for a longer period of time than a beacon which is located 
nearer the vehicle such as beacon 18. As a result, the duration of the 
return signal from beacon 22 will exceed the duration of the return signal 
from beacon 18 by an amount proportional to the difference in range to the 
vehicle. Thus, the width of the return signal represents apparent range 
between the beacon and vehicle. 
A typical photodetector output for a beacon return signal is shown in FIG. 
4. The vehicle is provided with an onboard range and angle detection 
circuit 52 (FIG. 5) which measures the duration and midpoint of the 
photodetector output by counting phase locked loop pulses. Vehicle to 
beacon range, then, corresponds to a pulse count taken over the duration 
of the photodetector output. Angular position of the laser beam when a 
beacon is sighted corresponds to a pulse count at the midpoint of the 
photodetector output. This information, when obtained for at least three 
beacon sightings during a revolution, is used to compute vehicle position 
and bearing as described hereafter. 
OPTICAL NAVIGATION SECTION 
Vehicle position and bearing is determined by an on board optical 
navigation section 103. See FIG. 5. The vehicle to beacon range and beam 
angle measurements are obtained for at least three valid beacon return 
signals to determine vehicle position and bearing. Each vehicle to beacon 
range measurement is compared to a stored range threshold value in the 
computer memory. The threshold is indicative of range 26. The threshold 
may be constant or it may be increased if less than three beacon sightings 
are obtained during a revolution. The comparison is made by circuit 52 to 
discriminate between valid and invalid beacon sightings. Thus, detection 
circuit 52 does not provide range outputs for a signal returned by a 
beacon lying outside the range threshold such as a beacon 24 in FIG. 1. 
Although circuit 52 does provide a range output for a signal returned by a 
beacon inside the range threshold, this does not necessarily produce a 
valid beacon sighting for use in determining vehicle position. Thus, it 
must also be determined that the beacon lies within a 10.degree. expected 
scan sector computed by the "triangulation and bearing" section 53 of a 
programmed computer 100 onboard the vehicle. 
The primary function of the "triangulation and bearing" section is to 
compute the position of the vehicle in x, y coordinates as described more 
fully hereafter. However, the triangulation and bearing section also 
discriminates between valid and invalid beacon sightings based in part on 
the apparent beacon angle (as indicated by the midpoint data outputed by 
the beacon range detection circuit 52). To determine whether a beacon 
sighting is valid, the triangulation and bearing section computes the 
angle between the vehicle and each beacon based on the estimated vehicle 
position (x, y) computed in the preceding scan and on the positions (x, y) 
of the beacons. The apparent beacon angle, as indicated by the midpoint 
data, and the computed beacon angles are referenced to the center line of 
the vehicle. The position (x, y) of each beacon is known as it is part of 
a beacon map which is loaded into the vehicle memory 101 prior to 
operation. Preferably, the vehicle is provided with a radio link (RS232) 
to a base station transmitter which transmits the beacon map data to the 
vehicle computer. 
After computing the beacon angle, the triangulation and bearing section 
adds .+-.5.degree. to the computation to define a 10.degree. sector around 
each computed beacon angle. The computer determines whether the apparent 
beacon angle lies within a 10.degree. sector. If so, the apparent beacon 
angle is used to compute vehicle range and bearing as described hereafter. 
If not, the data is discarded. In addition, multiple beacon sightings 
within the same 10.degree. scan sector, such as beacons 14, 16 in FIG. 1, 
are discarded. Also, if beacons 14, 16 overlap along a radius, their 
return signals are discarded as they will merge into a single 
photodetector output signal which indicates a single beacon but at a 
location which does not correspond to the location of either beacon 14 or 
16 on the beacon map. The triangulation and bearing section algorithm (for 
discriminating between valied and invalid beacon sightings) is shown in 
flow chart form in FIG. 10. Valid beacon sightings, such as those provided 
by beacons 12, 18, 22, are processed by onboard computer 100 
(triangulation and bearing section) to compute vehicle position and 
bearing. 
The vehicle onboard computer 100 may be an Intel 86/05 SBC with numeric 
processor; it is programmed as described hereafter to compute vehicle 
position by performing a triangulation computation based on at least three 
valid beacon sightings during a 360.degree. scan i.e. one revolution of 
the optics. The algorithm for performing the triangulation is shown in 
FIG. 6. 
Beacons 22, 12 lie on an imaginary circle 54. Beacons 12, 18 lie on another 
imaginary circle 56. Since the locations of beacons 12, 18, 22 are known, 
vehicle position is computed by the triangulation and bearing section 
according to the following algorithm: 
##EQU1## 
where x.sub.1, y.sub.1, are the stored x-y coordinates for beacon 18; x2, 
y2 are the stored x-y coordinates for beacon 12; m=(y02-y01)/(x02-x01) is 
calculated by the computer; x01, y01 are the x-y coordinates for the 
center of circle 54; and x02, y02 are the x-y coordinates for the center 
of circle 56. 
The x-y coordinates for the center of circles 54, 56 are calculated by the 
computer according to the following algorithms: 
##EQU2## 
where L.sub.12 is the computed distance between the known locations of 
beacons 12, 18 and L.sub.23 is the computed distance between the known 
locations of beacons 12, 22; .alpha..sub.12 is the included angle between 
any point on circle 56 and the known locations of beacons 12, 18; 
.alpha..sub.23 is the included angle between any point on circle 54 and 
the known locations of beacons 12, 22; m.sub.12 is computed as (y.sub.2 
-y.sub.1)/(x.sub.2 -x.sub.1); and m.sub.23 is computed as (y.sub.3 
-y.sub.2)/(x.sub.3 -x.sub.2). 
Once the coordinate position of the vehicle has been determined, the 
bearing .phi. of the vehicle is computed by the triangulation and bearing 
section 53. The algorithm for computing vehicle bearing .phi. (using zero 
bearing as the x-axis in FIG. 6) may for example be given by: 
##EQU3## 
where .psi..sub.2 is the beam angle (referenced to vehicle center line or 
axis) as detected by circuit 52 when beacon 12 is sighted. 
From the foregoing, it can be appreciated that the sytem optics, range and 
beacon angle detection circuit 52 and triangulation and bearing section 53 
of the onboard computer comprise an active optical navigation section 103 
for the vehicle. In this context, a "navigation" system means a system 
that keeps track of vehicle position as compared with a "drive" system 
which steers a vehicle towards a destination point. 
GROUND NAVIGATION SECTION 
A second passive navigation section 105 is provided onboard the vehicle as 
well. The purpose of the ground navigation section is to provide current 
vehicle position and bearing information to the drive sytem (described 
hereafter) since the optical navigation section computations of vehicle 
position and bearing are performed only once per scan or revolution of the 
laser beam. In addition, the ground navigation section permits the vehicle 
to be steered temporarily without loss of orientation, despite the lack of 
any position or bearing information from the triangulation and bearing 
section which may be due for example to the failure to sight any beacons 
over one or more revolutions of the laser beam. 
Referring to FIG. 5, the ground navigation section 105 comprises a 
gyrocompass 58 (King Radio KG 102A) having zero north and a resoltuion of 
0.25.degree. by way of example, a "change in bearing" circuit 60 which 
generates a signal .DELTA..phi. indicative of change of bearing of the 
vehicle based on the gyrocompass output, an optical (wheel) encoder 
(odometer) 62 coupled to the shaft of the vehicle's front wheel 15, and a 
"distance traveled" circuit 64 which provides a signal .DELTA.l indicative 
of an icremental distance traveled by front wheel 15 based on the wheel 
encoder output. The outputs of circuits 60, 64, which together indicate 
measured change in bearing and distance traveled by the vehicle, are fed 
to the onboard computer wherein they are used by the software "ground 
navigation algorithm" section 55. The optical and ground navigation 
sections 103, 105 are in a sense merged in the ground navigation algorithm 
section 55. 
The geometry of change in bearing .DELTA..phi. and wheel travels .DELTA.l 
(over an arc path) are shown in FIG. 7. In FIG. 7, vehicle position and 
bearing as computed by triangulation and bearing section 53 are designated 
x, y and .phi.. The ground navigation algorithm section 55 includes a 
counter which counts pulses at the output of change in position circuit 
64, each pulse representing an increment of front wheel travel .DELTA.l. 
The variable .DELTA.n is the pulse count during the time interval required 
for the vehicle to undergo an incremental change in bearing .DELTA..phi. 
equal to the resolution of the gyrocompass, e.g. 0.25.degree.. Typically, 
the count .DELTA.n varies within a range correspond to front wheel travel 
of 0.005 inch (small radii of curvature) to 0.32 inch (large radii of 
curvature). The change in vehicle position (.DELTA.x, .DELTA.y) during an 
incremental change in bearing (.DELTA..phi.) are computed in the ground 
navigation alogorithm section according to the following algorithms: 
##EQU4## 
where .DELTA.l is an increment of travel of the front wheel 15 as 
indicated by a pulse at the output of distance traveled in circuit 64; L 
is the known separation between the vehicle position point 28 (x, y) and 
the front wheel 15; .DELTA..phi. is the incremental change in bearing 
equal to the resolution of the gryocompas as indicated by the output of 
the change in bearing circuit 60; and .DELTA.n is the count of circuit 64 
output pulses for the incremental change in bearing .DELTA..phi.. The 
functions f.sub.1 (.phi., .DELTA.n) and f.sub.2 (.phi., .DELTA.n) are 
separate look up tables in computer memory, for example two 256K bit 
EPROMS, wherein .phi., .DELTA.n specifies a storage location for f.sub.1 
(in one look up table) or f.sub.2 (in the other look up table). 
The computation of vehicle coordinate position and bearing, as indicated by 
triangulation and bearing section 53 once each revolution of the laser 
beam, corrects the ground navigation algorithm section computations. At 
the end of each revolution of the laser beam, a fresh computation of 
vehicle position (x, y) and bearing (.phi.) is fed from triangulation and 
bearing section 53 to ground navigation algorithm section 55 so as to 
correct the computations of vehicle position and bearing. In between 
outputs from the triangulation and bearing section, any errors in the 
ground navigation algorithm section computations will therefore 
accumulate. 
DRIVE SECTION 
Steering of the vehicle is best explained with reference to FIGS. 5, 8-9 
and 11-12. The computer software includes a path planner section 66, 
vector sequencer section 68 and driver section 70. The beacon map and a 
"primary" path of travel for the vehicle are entered by an operator at the 
base (remote) station. See FIG. 5. The base station is equipped with a 
graphics terminal by which the operator directly enters information 
containing "primary" path data in the form of a collection of path points 
and a nominal turning radius Rnom which the vehicle will use as described 
hereafter at the path corners. The information is transmitted through the 
radio data link to the onboard vehicle receiver which is coupled to the 
vehicle onboard computer 100. The path points represent x, y coordinate 
position information for a prescribed path of travel for the vehicle. The 
operator may also enter data to indicate desired vehicle velocity at each 
point. 
An exemplary path of travel entered at the base station is shown in FIG. 8 
wherein "primary" path points, including the initial point, destination 
point, and all corner points are marked by the symbol "+". The path 
planner software section 66 checks the "primary" path points received from 
the base station and smooths each corner on the path by performing a curve 
fitting routine based on the radius of curvature Rnom as shown in FIGS. 8 
and 11. The radius Rnom defines a circle whose center coordinates are 
computed by the path planner section such that the tangent points T1, T2 
(or T1', T2') are located on the corner path as shown in phantom in FIG. 
8. The tangent points are then entered as "secondary" points in 
replacement of the "primary" corner points. The result is the path shown 
in FIG. 9 wherein all corners have been smoothed. The path planner section 
then computes a set of "secondary" path points and vectors, as shown in 
FIG. 9, which define successive line segments each having a length no 
greater than a threshold distance .DELTA.L. The "secondary" points are 
marked by the symbol "++" in FIG. 9. 
The "secondary" points and vectors are shown in FIG. 9 and are inserted as 
follows. The path planner section inspects the end points for each 
straight line segment in the smoothed "primary" path and determines the 
length L of each segment. The planner then divides the length L by 2. If 
the result is less than or equal to the threshold distance .DELTA.L, the 
"secondary" point position is the midpoint of the segment and a 
"secondary" vector (having same vector angle as the initial point) is 
inserted at the midpoint and stored in the appropriate sequential location 
in the onboard computer RAM. If the result exceeds the threshold, then the 
length L of the segment is divided by 3. If the result is then less than 
the threshold, two "secondary" points are selected within the segment, so 
as to divide the segment into three equal parts, and a "secondary" vector 
(having the same vector angle as the initial point) is stored at each 
point in the computer RAM. The algorithm for selecting the points within a 
segment is therefore given in general terms by: 
EQU L.div.n.ltoreq..DELTA.L 
where L is the length of the line segment as defined by the "primary" line 
segment end points, and n is the integral divisor 2, 3, . . . . If the 
quotient is less than or equal to the threshold .DELTA.L, then the segment 
is divided into n equal parts by appropriate placement of (n-1) 
"secondary" vectors which are then stored at the appropriate sequential 
locations in RAM. The value of .DELTA.L for any particular path segment 
corresponds to the length of a double arc steering correction as described 
hereafter. "Secondary" path vectors are also inserted at each tangent 
point T.sub.1, T.sub.2, etc. marking a smoothed corner, the vector 
direction at each tangent point corresponding to the direction of the 
straight line segment connected to the tangent point. 
The path vectors are retrieved from RAM in sequence, either forward from 
the initial point to the destination point or backward from the 
destination point to the initial point, by the vector sequencer section 
68. The order (forward or backward) depends on whether the operator wishes 
the vehicle is to traverse the path shown in FIG. 9 in the forward or 
backward direction. The information is entered at the base station, by 
keyboard or CRT entry, and the base station computer generates a Foward 
command signal or a Reverse command signal in response. The signal is used 
by the vector sequencer section 68 of the onboard computer software to 
control the order of retrieval of the path vectors from RAM. The signal is 
transmitted over the radio link together with a Go or Stop command (also 
entered at the base station) and is received and sent to the onboard 
computer. 
The vector sequencer 68 begins operation in response to a Go command 
signal. The vector sequencer retrieves each path vector in the order 
indicated by the forward/reverse signal. Each path vector is fed to the 
driver section 70 of the onboard computer software. Operation can be 
stopped at any time in response to a Stop command signal. The driver 
section 70 regularly interrogates the ground navigation algorithm section 
55 and compares the position and bearing of a retrieved path vector to the 
actual position and bearing of the vehicle as indicated by the ground 
navigation algorithm section. The driver section executes a steering 
correction algorithm based on the deviation between retrieved and actual 
position and bearing, as shown in FIGS. 12(a)-(e). 
In FIGS. 12(a)-(e), the vector B represents the path vector (position and 
bearing) retrieved from RAM by vector sequencer section 68. The vector A 
represents the actual (updated) position and bearing of the vehicle as 
outputted by the navigation update section. The difference in position 
between vectors A, B is represented by the vector D which is determined by 
driver section 70. 
The steering correction algorithm executed by driver section 70 is that of 
choosing two connecting arc segments and arranging the arc segments so 
that they define a smooth curve tangent at one end to the vector A (actual 
bearing at actual vehicle position) and tangent at the other end to the 
vector B (desired bearing at the desired path position). The curve 
selection falls into five classes designated (a)-(e) in FIG. 12 (and the 
mirror images of these classes) depending on the bearings indicated by 
vectors A and B and by vector D. In the first class, class (a), the angle 
of vector B with respect to vector A is .beta. and it is greater than 
one-half the angle .alpha. between vector D and vector A whereby the 
connecting arcs are selected by the steering correction algorithm, an arc 
S.sub.o and a straight line segment e. The straight line segment e is 
itself considered as an arc having an infinite radius of curvature. In the 
second class, class (b), the angle .beta. is less than .alpha./2 whereby 
the connecting arcs selected are the straight line segment e and the arc 
S.sub.o. In the third class, class (c), the angle .alpha. is between 
0.degree. and twice .beta. whereby the connecting arcs selected are arcs 
S1, S2 of like radius of curvature and connected at an inflection point. 
In the fourth class, class (d), the angle .beta. is less than one half 
.alpha. and the connecting arcs selected are arcs S1, S2 of like radius of 
curvature and connected at an inflection point. In the fifth class, class 
(e), the angle .alpha. is between 0.degree. and 90.degree. and the 
connecting arcs selected are arcs S1, S2 of like radius of curvature 
connected at an inflection point. 
The driver section 70 outputs the necessary digital data for the vehicle 
drive controller 72 to operate the vehicle steering mechanism 74 so as to 
turn the front wheel 15 and thereby move the vehicle over the desired path 
i.e. so that the vehicle reaches the position of vector B with the bearing 
of vector B. The driver section output includes the steering angle command 
.delta. which must be executed to move the vehicle along the two arc 
segments (S.sub.o, e, or e, S.sub.o or S1, S2) and the arc length command 
l, indicating the length of the arc (S.sub.o, e, S1 or S2) to be covered 
by the front wheel 15, the geometry being shown in FIG. 7. The algorithm 
for computing the commands .delta. and l are given by: 
##EQU5## 
where L and R are the distances shown in FIG. 7 for each arc and S is the 
arc length over which the vehicle is to travel i.e. arc lengths S.sub.o, 
S1 or S2 as shown in FIG. 12. The value of L is known and the values for R 
and S are computed for each class as set forth in Table 1 below: 
TABLE 1 
______________________________________ 
Class of Turn 
in Figure 12 
R S 
______________________________________ 
(a) 
##STR1## S.sub.0 = R.alpha. e = h-d 
(b) 
##STR2## S.sub.0 = R.alpha. e = d-h 
(c) 
##STR3## S.sub.1 = R.psi..sub.1 S.sub.2 = R(.psi..sub.1 
- .alpha.) 
(d) 
##STR4## S.sub.1 = R.psi..sub.2 S.sub.2 = R(.psi..sub.2 
+ .alpha.) 
(e) 
##STR5## S.sub.1 = R(.pi. - .psi..sub.3) S.sub.2 = 
R(.psi..sub.3 + .alpha.) 
where 
##STR6## 
##STR7## 
##STR8## 
##STR9## 
##STR10## 
##STR11## 
______________________________________ 
The drive controller uses the commands .delta., l to command the vehicle 
steering mechanism 74. The steering mechanism 74 turns the front wheel 15 
so that the vehicle (point 28) travels along the computed arc segments as 
shown in FIGS. 12(a)-(e). In this manner, the vehicle is steered over the 
corrective double arc paths shown in FIGS. 12(a)-(e) so as to arrive at 
the position of vector B with the appropriate bearing. The driver section 
70 monitors the distance traveled by the front wheel over the double arc 
path. When the distance remaining on the first arc falls to a stored 
limit, the first arc is completed while the driver section 70 selects the 
next double arc correction for the next path vector and transfers the new 
arc lengths and steering wheel angles to eight bit storage latches for use 
by the drive controller 72 in executing the next path correction. Data 
transfer to the latches is complete by the time the second arc is reached. 
The next path correction, then, is normally initiated upon completion of 
the first arc in the preceding path correction. 
A flow chart for computing the .delta., l commands is shown in FIG. 13. the 
quantities T, C are given by T=(A.times.D).sub.z and C=(A.times.B).sub.z. 
In the "compare sign T, C" block, a determination is made as to whether 
the class of correction is class (e) or any one of classes (a)-(d). If the 
correction is a class (e) correction, the quantities T, C will be of 
opposite sign. Otherwise, they are the same sign. In the "compare .beta., 
.alpha." block, the particular class is determined as being (a) or (c) on 
the one hand or (b) or (d) on the other depending on the range within 
which the angle .alpha. falls. In the compare block "R R.sub.min ", the 
value of the turning radius R is compared to a preset limit R.sub.MIN. If 
the turning radius falls below the preset limit, then a rough corner would 
be encountered using the class (a) or (b) corrective arcs. Accordingly, 
the routine for the class (c) or (d) corrective arcs is used instead. 
Although the invention has been described in terms of a three wheeled 
vehicle having a motor drive, steered wheel and two free wheeling rear 
wheels, it should be understood that the invention encompasses front or 
rear wheel driven vehicles having other numbers of wheels as well. For 
example, two front wheels may be employed wherein the wheels are motor 
driven and mounted on a turnable carriage. In addition, although the 
invention has been described in terms of the retrieval of "secondary" path 
vectors bearing direction information at preselected points along the 
prescribed path of travel for the vehicle, it should be understood that 
the vectors may also include magnitude data indicating desired velocity of 
the vehicle at each preselected point on the path. The velocity data would 
then be used to control the speed of the drive motor for the wheels. 
The present invention may be embodied in other specific forms without 
departing from the spirit or essential attributes thereof and, 
accordingly, reference should be made to the appended claims, rather than 
to the foregoing specification, as indicating the scope of the invention.