U.S. patent application number 11/291706 was filed with the patent office on 2007-05-31 for method and system for controlling sets of collinear control moment gyroscopes.
This patent application is currently assigned to Honeywell International, Inc.. Invention is credited to Michael R. Elgersma, Brian J. Hamilton, Daniel P. Johnson, Blaise G. Morton, Mason A. Peck, Gunter Stein, Brian K. Underhill.
Application Number | 20070124032 11/291706 |
Document ID | / |
Family ID | 37866159 |
Filed Date | 2007-05-31 |
United States Patent
Application |
20070124032 |
Kind Code |
A1 |
Elgersma; Michael R. ; et
al. |
May 31, 2007 |
Method and system for controlling sets of collinear control moment
gyroscopes
Abstract
A control system of a spacecraft for controlling two or more
sets of collinear control moment gyroscopes (CMGs) comprises an
attitude control system. The attitude control system is configured
to receive a command to adjust an orientation of the spacecraft,
determine an offset for a momentum disk for each of the two or more
sets of CMGs that maximizes torque, determine a momentum needed
from the two or more sets of CMGs to adjust the orientation of the
spacecraft, and calculate a total torque needed by taking the
derivative of the momentum. The control system further comprises a
momentum actuator control processor coupled to the attitude control
system, the momentum actuator control processor configured to
calculate a required gimbal movement for each of the CMGs in each
of the two or more sets of collinear CMGs from total torque.
Inventors: |
Elgersma; Michael R.;
(Plymouth, MN) ; Johnson; Daniel P.; (Fridley,
MN) ; Peck; Mason A.; (Ithaca, NY) ;
Underhill; Brian K.; (Glendale, AZ) ; Stein;
Gunter; (St. Paul, MN) ; Morton; Blaise G.;
(Minnetonka, MN) ; Hamilton; Brian J.; (Glendale,
AZ) |
Correspondence
Address: |
HONEYWELL INTERNATIONAL INC.
101 COLUMBIA ROAD
P O BOX 2245
MORRISTOWN
NJ
07962-2245
US
|
Assignee: |
Honeywell International,
Inc.
|
Family ID: |
37866159 |
Appl. No.: |
11/291706 |
Filed: |
November 30, 2005 |
Current U.S.
Class: |
701/13 ;
701/3 |
Current CPC
Class: |
B64G 1/244 20190501;
B64G 1/286 20130101 |
Class at
Publication: |
701/013 ;
701/003 |
International
Class: |
G01C 23/00 20060101
G01C023/00; G06F 17/00 20060101 G06F017/00 |
Claims
1. A method for controlling the movement of two or more sets of
collinear control moment gyroscope (CMGs) in an array of CMGs in a
spacecraft comprising: determining an offset for each set of the
two or more sets of collinear CMGs to maximize available torque;
receiving a command to adjust an orientation of the spacecraft;
determining a total torque to adjust the orientation of the
spacecraft; allocating the total torque to produce an allocated
torque for each set of the two or more sets of collinear CMGs; and
calculating a required gimbal movement for each set of the CMGs in
the two or more sets of collinear CMGs from the allocated
torque.
2. The method of claim 1, wherein the step of determining an offset
further comprises maximizing an ellipse representative of the
momentum space in an annular region for one set of the two or more
sets of collinear CMGs.
3. The method of claim 1, wherein the step of determining an offset
further comprises allocating an annular region based on a maximum
momentum boundary that avoids the edge of a momentum space and a
minimum momentum boundary that avoids a center of the momentum
space.
4. The method of claim 1, wherein the step of determining an offset
further comprises determining a torque bound for a given momentum
radius, f(A).
5. The method of claim 1, wherein the step of calculating a
required gimbal movement further comprises calculating a required
gimbal movement for each of the remaining CMGs in a set of
CMGs-after the failure of a CMG.
6. The method of claim 1, wherein the step of determining the total
torque further comprises: calculating a total momentum needed to
adjust the orientation of the spacecraft taking the derivative of a
total momentum; determining if the total momentum exceeds an
available momentum sphere having a radius of f(A); and calculating
a total torque needed adjust the orientation of the spacecraft by
taking the derivative of the total momentum.
7. A control system of a spacecraft for controlling two or more
sets of collinear control moment gyroscopes (CMGs), the control
system comprising: an attitude control system configured to:
receive a command to adjust an orientation of the spacecraft;
determine an offset for a momentum ellipse for each of the two or
more sets of CMGs that maximizes torque; determine a momentum
needed from the two or more sets of CMGs to adjust the orientation
of the spacecraft; calculate a total torque needed by taking the
derivative of the momentum; and, a momentum actuator control
processor coupled to the attitude control system, the momentum
actuator control processor configured to calculate a required
gimbal movement for each of the CMGs in each of the two or more
sets of collinear CMGs from total torque.
8. The system of claim 7, wherein the attitude control system is
further configured to allocating the total torque to produce an
allocated torque for each set of the two or more sets of collinear
CMGs.
9. The system of claim 7, wherein the attitude control system is
further configured to determine if the momentum needed exceeds the
momentum available in a momentum sphere having a radius of
f(A).
10. The system of claim 7, wherein the attitude control system is
further configured to determine an offset for a momentum disk by
maximizing an ellipse representative of the momentum space in an
annular region for each set of the two or more sets of collinear
CMGs.
11. The system of claim 7, wherein the attitude control system is
further configured to determine a torque bound for a given momentum
radius, f(A).
12. The system of claim 7, the attitude control system is further
configured to calculating a required gimbal movement for each of
the remaining CMGs in a set of CMGs after the failure of a CMG in
the set of CMGs.
13. A method for singularity free movement of an array of control
moment gyroscopes (CMGs) comprising: allocating the array of CMGs
as at least two sets of collinear CMGs, calculating an offset for a
momentum ellipse for each of the at least two sets of CMGs that
maximizes torque; determining a momentum radius f(A), the momentum
radius f(A) defining a sphere of allowable momentum; and
determining if a requested momentum to change the orientation of a
spacecraft is within the sphere of allowable momentum; and
determining a gimbal movement for each CMG to provide the requested
momentum if the requested momentum is within the sphere of
allowable momentum.
14. The method of claim 13, wherein the step of calculating an
offset for a momentum ellipse further comprises maximize the size
of the momentum ellipse with in an annular region.
15. The method of claim 13, wherein the step of determining a
gimbal movement for each CMG further comprises: determining a total
torque to change the orientation of the spacecraft by taking the
derivative of the requested momentum; allocating the total torque
to produce an allocated torque for each set of the at least two
sets of collinear CMGs; and calculating the gimbal movement for
each set of the CMGs in the at least two sets of collinear CMGs
from the allocated torque.
Description
FIELD OF THE INVENTION
[0001] This invention relates to the field of spacecraft vehicle
control and, more specifically, to a method and system for
controlling sets of collinear control moment gyroscopes.
BACKGROUND OF THE INVENTION
[0002] In order to control the attitude of a spacecraft, various
rotating inertia members can be used. One such inertia member is a
control moment gyroscope (CMG). A CMG typically comprises a
flywheel with a fixed or variable spin rate mounted to a gimbal
assembly. The spin axis of the CMG can be tilted by moving the CMG
using the gimbal assembly. This motion produces a gyroscopic torque
orthogonal to the spin axis and gimbal axis.
[0003] To achieve, full attitude control of a spacecraft, a CMG
array, including a minimum of three CMGs may be arranged such that
each CMG in the CMG array imparts torque about a linearly
independent axis. Typically, additional CMGs are provided for
redundancy purposes and to assist with singularity avoidance. A
singularity can occur when the momentum vectors of the CMGs line up
such that one or more components of the requested torque can not be
provided. Rather than just ensuring that provided torque does not
go to zero, this invention guarantees that provided torque equals
requested torque, whenever requested torque values stay below some
threshold.
[0004] Several different techniques have been developed to avoid
singularities. In one method it is first noted that a Jacobian
matrix A maps the CMG gimbal rates into a three dimensional array
torque: A.omega.=.tau. (1) where A is a 3.times.n Jacobian matrix,
.omega. is a n.times.1 array of gimbal rates for the n gimbals, and
.tau. is a 3.times.1 array of torque components to be imparted to
the spacecraft. From the above equation and with a known torque
command, .tau., the individual gimbal rates for each CMG can be
calculated. Using the known Moore-Penrose pseudoinverse to invert
the Jacobian matrix, a set of possible gimbal rates is:
.omega.=A.sup.T(AA.sup.T).sup.-1.tau.. (2)
[0005] As discussed previously, inherent in the use of CMGs is the
possibility that the CMGs' momentum vectors may line up in such a
way that a singularity condition is reached. Mathematically,
singularities can occur when the eigenvalues of AA.sup.T approach
zero, causing (AA.sup.T).sup.-1 to approach infinity. Equivalently,
singularities occur when the determinant of the matrix AA.sup.T is
equal to zero (expressed algebraically as det (AA.sup.T)=0). In the
case of a 3.times.n matrix A, this is equivalent to the rank of the
matrix AA.sup.T being two or less.
[0006] Different approaches have been devised to avoid
singularities in the movement of CMGs. In one approach, to ensure
that (AA.sup.T).sup.-1 is never zero, (AA.sup.T).sup.-1 is replaced
by (AA.sup.T+.epsilon.I).sup.-1 where I is the identity matrix and
.epsilon. is a small number. The use of a positive .epsilon.
ensures that det (AA.sup.T+.epsilon.I).sup.-1 never becomes 0.
[0007] While useful in some instances, a drawback to this approach
is that it changes the gimbal rate calculation. In the case of the
Jacobian A, the use of the pseudoinverse means that gimbal rates
are no longer exactly mapped into the commanded torques because of
the error .epsilon. introduces. This resulting error steers the
spacecraft in the wrong direction and can introduce significant,
undesired torque, especially near the singularity.
[0008] A second approach is to limit the CMG array's momentum
output to a smaller area within a momentum envelope. The momentum
envelope is the momentum provided in all possible combinations of
the CMGs in the CMG array. In one exemplary embodiment, depending
on the CMG arrangement, by operating within one-third or less of
the total momentum envelopes, singularities can be avoided.
However, this approach wastes potential torque and results in
systems that are larger and heavier than needed.
[0009] In view of the foregoing, it is desirable to provide a
method for controlling sets of collinear CMGs that addresses one or
more of the foregoing deficiencies or other deficiencies not
implicitly or expressly described. It is also desirable to provide
a system for controlling sets of collinear CMGs that addresses one
or more of the foregoing deficiencies or other deficiencies not
implicitly or expressly described. Furthermore, other desirable
factors and characteristics of the present invention will become
apparent from the subsequent detailed description and the appended
claims, taken in conjunction with the accompanying drawings and the
foregoing technical field and background.
SUMMARY OF THE INVENTION
[0010] In an exemplary embodiment a method for controlling the
movement of two or more sets of collinear control moment gyroscope
(CMGs) in an array of CMGs in a spacecraft is disclosed. In a first
step, an offset for each CMG set of the two or more sets of
collinear CMGs to maximize available torque is determined. Next, a
total torque to adjust the orientation of the spacecraft is
calculated. The total torque is allocated to produce an allocated
torque for each set of the two or more sets of collinear CMGs.
Then, a required gimbal movement for each set of the CMGs in the
two or more sets of collinear CMGs from the allocated torque is
calculated.
[0011] A control system of a spacecraft for controlling two or more
sets of collinear control moment gyroscopes (CMGs) comprises an
attitude control system. The attitude control system is configured
to receive a command to adjust an orientation of the spacecraft,
determine an offset for a momentum disk for each of the two or more
sets of CMGs that maximizes available torque, determine a momentum
needed from the two or more sets of CMGs to adjust the orientation
of the spacecraft, and calculate a total torque needed by taking
the derivative of the momentum. The control system further
comprises a momentum actuator control processor coupled to the
attitude control system, the momentum actuator control processor
configured to calculate a required gimbal movement for each of the
CMGs in each of the two or more sets of collinear CMGs from total
torque.
[0012] In another embodiment, a method for singularity-free
movement of an array of control moment gyroscopes (CMGs) comprises
a first step of allocating the array of CMGs as at least two sets
of collinear CMGs. Next, an offset for a momentum ellipse for each
of the two sets of CMGs that maximizes torque is calculated. Then,
a momentum radius f(A) that defines a sphere of allowable momentum
is determined. Next, it is determined whether a requested momentum
to change the orientation of a spacecraft is within the sphere of
allowable momentum. Then, a gimbal movement for each CMG to provide
the requested momentum is determined if the requested momentum is
within the sphere of allowable momentum.
BRIEF DESCRIPTION OF THE DRAWINGS
[0013] The present invention will hereinafter be described in
conjunction with the following drawing figures, wherein like
numerals denote like elements, and:
[0014] FIG. 1 is a block diagram illustrating an exemplary CMG
control system in accordance with an exemplary embodiment of the
present invention;
[0015] FIG. 2 illustrates momentum vectors for three CMGs having
two independent gimbal angles;
[0016] FIG. 3 illustrates momentum ellipses in relation to annular
regions formed by torque boundaries that avoid singularities;
[0017] FIGS. 4a and 4b illustrate momentum ellipses for different
solutions that maximize the ellipses in an annular region; and
[0018] FIG. 5 is a flowchart illustrating a method for maneuvering
a spacecraft in accordance with an exemplary embodiment of the
present invention.
DETAILED DESCRIPTION OF THE DRAWINGS
[0019] The following detailed description is merely exemplary in
nature and is not intended to limit the invention or the
application and uses of the invention. Furthermore, there is no
intention to be bound by any expressed or implied theory presented
in the preceding technical field, background, brief summary or the
following detailed description.
[0020] An exemplary control system 100 for implementing the present
invention is illustrated in FIG. 1. The components of the control
system 100 are known in the art and can be assembled in different
ways using different processors, software, controllers, sensors,
and the like. Additionally, various computational functionalities
that are typically provided by one part of the system can instead
be provided by another part. The system 100 as shown in FIG. 1
includes parts that are pertinent to the discussion of the present
invention and the system 100 may include other elements or systems
that might be provided in a control system and which are well known
and not shown in FIG. 1.
[0021] The control system 100 includes an attitude control system
102 coupled to a momentum actuator control processor 104. CMGs 106
are coupled the momentum actuator control processor 104. Associated
with each CMG 106 are one or more CMG sensors 108 for providing
information concerning the state of the CMG 106 to the control
system 100. Control system 100, in one embodiment, is mounted on a
spacecraft such as an orbiting satellite.
[0022] Attitude control system 102 controls the positioning of a
spacecraft. The attitude control system 102 receives data
concerning a desired spacecraft maneuver and determines an
appropriate torque command to complete the desired maneuver. The
torque commands can be presented to the momentum actuator control
processor 104. The momentum actuator control processor 104, in
response to the torque commands, can calculate the gimbal rates
necessary to produce the commanded torque. Additionally, the
momentum actuator control processor 104 calculates gimbal movement
from a momentum path determined by a steering law. The momentum
actuator control processor 104, based on these calculations,
provides the necessary commands to the CMGs 106 such that the CMG
movement produces the commanded torque and, in accordance with the
teachings of the present invention, provides the torque while
avoiding singularities. This can be accomplished, in one exemplary
embodiment, by changing the gimbal angles of the CMGs at a certain
gimbal angle rate.
[0023] A single-gimbal CMG has constant momentum magnitude, and
rotates about one axis. The constant gimbal axis of the i.sup.th
CMG in a set of CMGs can be denoted with unit vector
p.sub.i.di-elect cons.R.sup.3, and the momentum vector of the
i.sup.th CMG in a set of CMGs can be denoted by vector
h.sub.i.di-elect cons.R.sup.3. The gimbal angle of the ith CMG will
be denoted by .theta..sub.i. Thus:
p.sub.i'*h.sub.i(.theta..sub.i)=0 p.sub.i'*p.sub.i=1 (3)
[0024] The torque of the i.sup.th CMG in a set of CMGs can be
denoted by the vector .tau..sub.i.di-elect cons.R.sup.3: .tau. i =
d h i d t = ( p i .times. h i ) .times. .theta. . i ( 4 )
##EQU1##
[0025] The total momentum and torque of a system of n CMGs can be
denoted by: h = i = 1 n .times. h i ( 5 ) .tau. = i = 1 n .times.
.tau. i ( 6 ) ##EQU2##
[0026] One way to arrange CMGs and achieve full attitude control of
a spacecraft is to partition multiple CMGs into two or more sets of
collinear CMGs. Each CMG in a set of collinear CMGs shares the same
gimbal axis direction, but each set of collinear CMGs can have an
arbitrary gimbal-axis orientation. In one exemplary embodiment, n
CMGs are partitioned into k sets, S.sub.k, with unit vectors
{p.sub.1, p.sub.2, . . . , p.sub.k} different from each other. In
an exemplary embodiment, eight (8) CMGs can be partitioned into
three (3) sets, with {p.sub.1, p.sub.2, p.sub.3} different from
each other: S.sub.1={1,4,7} p.sub.1=p.sub.4=p.sub.7 S.sub.2={2,5,8}
p.sub.2=p.sub.5=p.sub.8 S.sub.3={3,6} p.sub.3=p.sub.6
[0027] Each set of collinear CMGs produces a momentum space
confined within a disc or annulus: h disc .times. .times. 1 = i
.di-elect cons. S 1 .times. h i where .times. .times. p 1 ' * h
disc .times. .times. 1 = 0 .times. .times. h disc .times. .times. 2
= i .di-elect cons. S 2 .times. h i where .times. .times. p 2 ' * h
disc .times. .times. 2 = 0 .times. .times. .times. .times. h disc k
= i .di-elect cons. S k .times. h i where .times. .times. p k ' * h
disc k = 0 .times. .times. h = j = 1 k .times. h disc j ( 7 )
##EQU3##
[0028] If the largest momentum magnitude of any CMG in a collinear
set of CMGs is less than or equal to the sum of the momentum
magnitudes of all other CMGs, then the total momentum of that set
of collinear CMGs will be a disk, otherwise the total momentum will
be an annulus. Therefore, a set of two or more collinear CMGs,
where each of the CMGs have equal momentum magnitude, will have its
total momentum on a disk, while a collinear set of two CMGs with
one CMG having more momentum magnitude than the other, results in
the total momentum lying within an annulus whose inner radius is
the difference of the two momenta.
[0029] The momentum, h.sub.i with i.di-elect cons.S.sub.j, of a
i.sup.th CMG in a set of CMGs can be decomposed into one component
in the h.sub.disc.sub.j direction and the rest in the
p.sub.j.times.h.sub.disc.sub.j direction: h i = .times. ( h i
.times. h disc j h disc j ) .times. .times. h disc j h disc j +
.times. ( h i .times. ( p j .times. .times. h disc j h disc j ) )
.times. .times. ( p j .times. .times. h disc j h disc j .times. ) (
8 ) ##EQU4##
[0030] From Eqn. 4, and noting that
p.sub.j.times.(p.sub.j.times.h.sub.disc.sub.j)=-h.sub.dics.sub.j,
torque due to the derivative of momentum is given by: .tau. i =
.times. d h i d t = .times. ( p j .times. h i ) .times. .theta. . i
= .times. [ ( h i h disc j h disc j ) .times. ( p j .times. h disc
j h disc j ) - .times. ( h i ( p j .times. h disc j h disc j ) )
.times. h disc j h disc j ] .times. .theta. . i ( 9 ) ##EQU5##
[0031] Total torque from the total momentum of h.sub.disc.sub.j is
given by: .tau. disc j = i .di-elect cons. S j .times. .tau. i ( 10
) ##EQU6##
[0032] Combining Eqns. 9 and 10 gives: .tau. disc j = [ p j .times.
h disc j h disc j , h disc j h disc j ] .function. [ 0 1 - 1 0 ]
.function. [ p j .times. h disc j h disc j , h disc j h disc j ] '
.times. i .di-elect cons. S j .times. h i .times. .theta. . i ( 11
) ##EQU7##
[0033] Since .tau..sub.disc.sub.j lies in a two-dimensional plane,
only two of the gimbal rates, {dot over (.theta.)}.sub.i, with
i.di-elect cons.S.sub.j, need to be independent. Therefore, a
gimbal controller can gang, or couple, the gimbals in a way that
leaves two independent variables. In an exemplary embodiment, if
the controller splits S.sub.j into three disjoint subsets,
S.sub.j=S.sub.ja.orgate.S.sub.jb.orgate.S.sub.jc where {dot over
(.theta.)}.sub.i={dot over (.theta.)}.sub.ja for i.di-elect
cons.S.sub.ja, {dot over (.theta.)}.sub.i={dot over
(.theta.)}.sub.jb for i.di-elect cons.S.sub.jb and {dot over
(.theta.)}.sub.i=({dot over (.theta.)}.sub.ja+{dot over
(.theta.)}.sub.jb)/2 for i.di-elect cons.S.sub.jc then the momenta
of those three subsets can be expressed as: h ja = i .di-elect
cons. S ja .times. h i h jb = i .di-elect cons. S jb .times. h i h
jc = i .di-elect cons. S jc .times. h i ( 12 ) ##EQU8##
[0034] FIG. 2 illustrates momentum vectors for a set of collinear
CMGs. In FIG. 2, CMG.sub.a provides a first momentum vector 202
(h.sub.ja) and CMG.sub.b provides a second momentum vector 204
(h.sub.jb). For CMG.sub.c, the gimbal rate is dependent on the
gimbal rates of CMG.sub.a and CMG.sub.b, and CMG.sub.c provides a
third momentum vector 206 (h.sub.jc). The total momentum vector 208
is the sum of the first momentum vector 202, the second momentum
vector 204 and the third momentum vector 206. In this exemplary
embodiment, CMG.sub.c, has its gimbal angle dependent on the gimbal
angles for CMG.sub.a and CMG.sub.b. The sum on the right of Eqn.
11, can then be written as: i .di-elect cons. S j .times. h i
.times. .theta. . i = .times. h ja .times. .theta. . ja + h jb
.times. .theta. . jb + h jc .times. .theta. . jc = .times. ( h ja +
h jb + h jc ) .times. .theta. . jb + .theta. . ja 2 + ( h jb - h ja
) .times. .theta. . jb - .theta. . ja 2 ( 13 ) ##EQU9## giving
.tau..sub.disc.sub.j as: .tau. disc j = [ p j .times. h disc j h
disc j , h disc j h disc j ] .function. [ 0 1 - 1 0 ] .function. [
( p j .times. h disc j h disc j ) ' ( h disc j h disc j ) ' ]
.times. [ h disc j h jb - h ja ] .function. [ .theta. . jb +
.theta. . ja 2 .theta. . jb - .theta. . ja 2 ] ( 14 ) ##EQU10##
[0035] Noting that the above 3-by-2 matrix just to the right of the
equal sign is orthogonal results in an inverse formula: [ ( .theta.
. jb + .theta. . ja ) 2 ( .theta. . jb - .theta. . ja ) 2 ] = ( [ 0
1 - 1 0 ] .function. [ ( p j .times. h disc j h disc j ) ' ( h disc
j h disc j ) ' ] [ .times. h disc j h jb - h ja .times. ] ) - 1 [ p
j .times. h disc j h disc j , h disc j h disc j ] ' .times. .tau.
disc j ( 15 ) ##EQU11##
[0036] Since sufficient torque capabilities in all directions is
desirable, for the above selection of gimbal rate constraints the
following bound can be used: [ ( .theta. . jb + .theta. . ja ) / 2
( .theta. . jb - .theta. . ja ) / 2 ] .ltoreq. .sigma. 1 .function.
( [ p j .times. h disc j h disc j , h disc j h disc j ] ' ) * .tau.
disc j .sigma. 2 .function. ( [ 0 1 - 1 0 ] .function. [ p j
.times. h disc j h disc j , h disc j h disc j ] ' [ .times. h disc
j h jb - h ja .times. ] ) ( 16 ) ##EQU12## This bound can be used
to solve for a torque bound: ( .tau. disc j max .times. .theta. . i
i .di-elect cons. S j ) 2 .gtoreq. 1 2 .times. ( min .function. ( h
disc j 2 , ( h ja + h jb ) 2 - ( h disc j - h jc ) 2 ) - ( h disc j
' * ( h jb - h ja ) ) 2 h disc j 2 - h jb - h ja 2 ) ( 17 )
##EQU13## This can be expressed as: .tau. disc j max .times.
.theta. . i i .di-elect cons. S j .gtoreq. A ( 18 ) ##EQU14##
[0037] In the special case where
h.sub.dic.sub.j'*(h.sub.jb-h.sub.ja)=0, the equation .tau. disc j /
max .times. .theta. . i = 1 2 .times. min .function. ( h disc j . ,
( h ja + h . jb . ) 2 - ( h disc j - h jc ) 2 ) ##EQU15## can be
set equal to A and .parallel.h.sub.disc.sub.j.parallel. solved for.
This indicates that h.sub.disc.sub.j needs to lie in an annulus
described by: 2 .times. A < h disc j < h jc + ( h ja + h jb )
2 - 2 .times. ( A ) 2 ( 19 ) ##EQU16##
[0038] To control the sets of CMGs, in one exemplary embodiment, a
controller can divide total momentum, h, amongst k individual discs
according to the rule: h disc j = L j .function. [ i = 1 k .times.
L i ] - 1 .times. h + i = 1 k .times. .alpha. ji .function. ( p i
.times. p j ) ( 20 ) ##EQU17## where .alpha..sub.ji=.alpha..sub.ij
such that: h = j = 1 k .times. h disc j ( 21 ) ##EQU18##
[0039] Since the momentum of h.sub.disc.sub.j is in the plane
perpendicular to unit vector p.sub.j, one choice for matrix L.sub.j
is the projection matrix onto the plane that is perpendicular to
p.sub.j: L.sub.j=I-p.sub.j*p.sub.j' (22) The most general choice
for L.sub.j can be: L.sub.j=(I-p.sub.j*p.sub.j')*M.sub.j (23) where
M.sub.j is any 3-by-3 matrix. The values of .alpha..sub.ji can be
chosen to maximize the amount of torque available within any given
momentum sphere. If each L.sub.j and .alpha..sub.ji are constant,
then: .tau. disc j = d d t .times. h disc j = L j .function. [ i =
1 k .times. L i ] - 1 .times. d h d t = L j .function. [ i = 1 k
.times. L i ] - 1 .times. .tau. ( 24 ) ##EQU19##
[0040] Given a commanded torque, Eqn. 24 shows how to distribute
that torque amongst the various discs. Gimbal controllers can take
each of the .tau..sub.disc.sub.j and solve for {dot over
(.theta.)}.sub.i for all i.di-elect cons.S.sub.j using the
following formula: .tau. disc j = [ p j .times. h disc j h disc j ,
h disc j h disc j .times. ] .times. [ .times. 0 1 - 1 0 ] [ .times.
( p j .times. h disc j h disc j ) ' ( h disc j h disc j ) ' ] [
.times. h disc j h jb - h ja .times. ] [ .times. .theta. . jb +
.theta. . ja 2 .theta. . jb - .theta. . ja .times. 2 .times. ]
.times. ( 25 ) ##EQU20##
[0041] The above 3-by-2 matrix just to the right of the equal sign
is orthogonal and provides an inverse formula: [ ( .theta. . jb +
.theta. . ja ) 2 ( .theta. . jb - .theta. . ja ) 2 ] = ( [ 0 1 - 1
0 ] [ ( p j .times. h disc j h disc j ) ' ( h disc j h disc j ) ' ]
[ h disc j h jb - h ja ] ) - 1 .function. [ p j .times. h disc j h
disc j , h disc .times. j h disc j ] ' .times. .tau. disc j ( 26 )
[ ( .theta. . jb + .theta. . ja ) 2 ( .theta. . jb - .theta. . ja )
2 ] = [ h disc j h disc j h disc j ( h jb - h ja ) 0 - ( p j
.times. h disc j h disc j ) ( h jb - h ja ) ] - 1 .function. [ p j
.times. h disc j h disc j , h disc j h disc j ] ' .times. L j
.function. [ i = 1 k .times. L i ] - 1 .times. .tau. ( 27 )
##EQU21##
[0042] Given any commanded total torque, .tau., Eqn. 27 provides
the required gimbal rates, using the additional formulas: {dot over
(.theta.)}.sub.ja=({dot over (.theta.)}.sub.jb+{dot over
(.theta.)}.sub.ja)/2-({dot over (.theta.)}.sub.jb-{dot over
(.theta.)}.sub.ja)/2 {dot over (.theta.)}.sub.jb=({dot over
(.theta.)}.sub.jb+{dot over (.theta.)}.sub.ja)/2-({dot over
(.theta.)}.sub.jb-{dot over (.theta.)}.sub.ja)/2 {dot over
(.theta.)}.sub.jc=({dot over (.theta.)}.sub.jb+{dot over
(.theta.)}.sub.ja)/2-coeff*[.theta..sub.jc-(.theta..sub.jb+.theta..sub.ja-
)/2] (28) where the small positive constant "coeff" corrects any
small errors due to discrete integration.
[0043] In the special case where
.parallel.h.sub.jb.parallel.=.parallel.h.sub.ja.parallel., then
h.sub.disc.sub.j'*(h.sub.jb-h.sub.ja)=0, and - ( p j .times. h disc
j h disc j ) ( h jb - h ja ) = .+-. h jb - h ja ( 29 )
##EQU22##
[0044] Examining FIG. 2, and noting that in the Eqn. 29,
.parallel.h.sub.jb-h.sub.ja.parallel./2 is the distance from the
base of a trapezoid to its top, the Pythagorean theorem can be used
with the momentum vectors illustrated in FIG. 2 on the two
triangular corners of the trapezoid to get: h jb - h ja = ( h ja +
h jb ) 2 - ( h disc j - h jc ) 2 ( 30 ) ##EQU23##
[0045] This reduces Eqn. 27 to: [ ( .theta. . jb + .theta. . ) 2 (
.theta. . jb - .theta. . ja ) 2 ] = [ 1 h disc j 0 0 .+-. 1 .+-. (
h ja + h jb ) 2 - ( h disc j - h jc ) 2 ] .times. [ ( p j .times. h
disc j h disc j ) ' ( h disc j h disc j ) ' ] .times. L j
.function. [ i = 1 k .times. L i ] - 1 .times. .tau. ( 31 )
##EQU24##
[0046] Returning to the general case of Eqn. 27, if
L.sub.j=I-p.sub.j*p'.sub.j and P=[p.sub.1, p.sub.2, . . . p.sub.k]
then the annulus in which h.sub.disc.sub.j lies can be expressed
as: 2 .times. A / ( k - P * P ' ) < h disc j < h jc + ( 2
.times. h ja ) 2 - 2 .times. ( A / ( k - P * P ' ) ) 2 ( 32 )
##EQU25## and the torque bound is: .tau. max .times. .theta. . i i
.di-elect cons. S j .gtoreq. A ( 33 ) ##EQU26##
[0047] Therefore, whenever total momentum stays within a ball with
a momentum radius of f(A), the available torque should be above
some threshold; i.e., for any value of A: .tau. max .times. .theta.
. i i .di-elect cons. S j .gtoreq. A .times. .times. whenever
.times. .times. h < f .function. ( A ) ( 34 ) ##EQU27##
[0048] The momentum for each set of CMGs, as discussed previously,
lies in an annulus of the form: r 1 .function. ( A ) .ltoreq. h
disc j .ltoreq. r 2 .function. ( A ) .times. .times. j = 1 , 2 ,
.times. , k .times. .times. Where .times. : ( 35 ) r 1 .function. (
A ) = 2 .times. A / ( k - P * P ' ) ( 36 ) r 2 .function. ( A ) =
min j .times. ( h jc + ( 2 .times. h ja ) 2 - 2 .times. ( A / ( k -
P * P ' ) ) 2 ) .times. .times. when .times. .times. h ja = h jb (
37 ) ##EQU28## and from Eqn. 20: h disc j = L j .function. [ i = 1
k .times. L i ] - 1 .times. h + i = 1 k .times. .alpha. j .times.
.times. i .function. ( p i .times. p j ) ( 38 ) ##EQU29##
[0049] The .alpha..sub.ji should be chosen to ensure that each
h.sub.disc.sub.j lies in its appropriate annulus when total
momentum lies in the largest possible ball,
.parallel.h.parallel.<f(A). Eqns. 35-37 indicate that
h.sub.disc.sub.j lies in an ellipse, with center determined by
.alpha..sub.ji, when .parallel.h.parallel.<f(A). For each value
of "A", the values of .alpha..sub.ji are chosen to maximize the
size of the h.sub.disc.sub.j ellipses, which lie between the inner
and outer radii of the corresponding annuli. .alpha. .function. ( A
) = arg .function. [ max .alpha. j .times. .times. i .times. { f
.function. ( A ) .times. .times. such .times. .times. that .times.
.times. r 1 .function. ( A ) .ltoreq. h disc j .function. ( h ,
.alpha. ji ) .ltoreq. r 2 .function. ( A ) .times. .times. for
.times. .times. all .times. .times. h .ltoreq. f .function. ( A ) }
] .times. .times. = arg .function. [ max .alpha. ji .times. { f
.function. ( A ) .times. .times. such .times. .times. that .times.
.times. r 1 .function. ( A ) .ltoreq. L j .function. [ i = 1 k
.times. L i ] - 1 .times. h + i = 1 k .times. .alpha. ji .function.
( p i .times. p j ) .ltoreq. r 2 .function. ( A ) .times. .times.
for .times. .times. all .times. .times. h .ltoreq. f .function. ( A
) } ] ( 39 ) ##EQU30##
[0050] When there are three sets of collinear CMGs, there are three
independent .alpha..sub.ji, i.e., (.alpha..sub.12, .alpha..sub.23,
.alpha..sub.31) and three ellipses whose origin must be adjusted to
allow the ellipses to be as large as possible, while still being
inside the three annuli. In embodiments where there are two sets of
collinear CMGs, there is one independent .alpha..sub.ji, i.e.
.alpha.=.alpha..sub.12 and two ellipses whose origin must be moved
to allow the two ellipses to be as large as possible, while still
being inside the two annuli. As f(A) is optimized, the ellipses
touch the annuli in two or three places.
[0051] In the exemplary embodiment of two sets of collinear CMGs,
the earlier equations reduce to:
h.sub.disc1=L.sub.1[L.sub.1+L.sub.2].sup.-1h+.alpha.(p.sub.1.times.p.sub.-
2) (40)
h.sub.disc2=L.sub.2[L.sub.1+L.sub.2].sup.-1h-.alpha.(p.sub.1.time-
s.p.sub.2) (41) where the value of .alpha. can be chosen to
maximize the torque that is available within any given size
momentum ball.
[0052] If L.sub.1, L.sub.2 and .alpha. are constant, then: .tau.
disc 1 = d d t .times. h disc 1 = L 1 .function. [ L 1 + L 2 ] - 1
.times. d h d t = L 1 .function. [ L 1 + L 2 ] - 1 .times. .tau. (
42 ) .tau. disc 2 = d d t .times. h disc 2 = L 2 .function. [ L 1 +
L 2 ] - 1 .times. d h d t = L 2 .function. [ L 1 + L 2 ] - 1
.times. .tau. ( 43 ) ##EQU31##
[0053] FIG. 3 illustrates a first outer boundary 306 and a second
outer boundary 302 for h.sub.disk1 and h.sub.disk2 respectively.
The first outer boundary 306 and the second outer boundary 302
represent the maximum achievable momentum for hdisk1 and
h.sub.disk2. The first outer boundary 306 and the second outer
boundary 302, in the exemplary embodiment shown in FIG. 3, are
circular boundaries with a radius r.sub.2(A.sub.min). Since there
is a possibility of the existence of a singularity (or insufficient
torque, where
.parallel..tau..parallel..gtoreq.A.sub.MIN.parallel.{dot over
(.theta.)}.parallel.) at the maximum momentum, a smaller momentum
boundary in which to operate the CMGs can be chosen, which
guarantees some larger torque level (where
.parallel..tau..parallel.>A.parallel.{dot over
(.theta.)}.parallel.). For example, a first reduced maximum
boundary 308 and a second reduced maximum boundary 304 can be
selected as the maximum momentum for each of the two discs. The
radius of the first reduced maximum boundary 308 and a second
reduced maximum boundary 304 is r.sub.2(A), where
r.sub.2(A)<r.sub.2(A.sub.min).
[0054] In addition, singularities can exist at or near the origin,
O, of each of the two momentum discs. Therefore, a first increased
minimum boundary 312, and a second increased minimum boundary 310
can be defined. The radius of the first increased minimum boundary
312 and the second increased minimum boundary 310 can be denoted as
r.sub.1(A). First reduced maximum boundary 308 and first increased
minimum boundary 312 define an annulus for h.sub.disk1 and the
second reduced maximum boundary 304 and the second increased
minimum boundary 310 define an annulus for h.sub.disk2. A first
ellipse 314 lies within the annulus defined by the first reduced
maximum boundary 308 and first increased minimum boundary 312 and a
second ellipse 316 lies within the annulus defined by the second
reduced maximum boundary 304 and the second increased minimum
boundary 310. The first ellipse 314 is where the h.sub.disk1 lies
and the second ellipse 316 is where the h.sub.disk2 lies when
.parallel.h.parallel.=.parallel.h.sub.disc.sub.1+h.sub.disc.sub.2.paralle-
l..ltoreq.f(A) lies within a sphere of radius f(A). In FIG. 3,
sphere 320 is the momentum sphere formed by the combination of
first ellipse 314 and second ellipse 316.
[0055] To maximize the radius f(A), which will maximize the
momentum for a given size torque limit, "A," an ellipse offset
function .alpha.(A) is calculated. If the normal vectors, p1 and
p2, of the two momentum discs are chosen to be orthogonal, then
p.sub.1'*p.sub.2=0, and the entire system of CMGs can be rotated
until those two unit vectors line up with the first two coordinate
axes: p 1 = [ 1 0 0 ] .times. .times. p 2 = [ 0 1 0 ] .times.
.times. and .times. .times. p 1 .times. p 2 = [ 0 0 1 ] .times.
.times. This .times. .times. gives .times. : ( 44 ) L 1 = I - p 1 *
p 1 ' = [ 0 0 0 0 1 0 0 0 1 ] .times. .times. L 2 = I - p 2 * p 2 '
= [ 1 0 0 0 0 0 0 0 1 ] .times. .times. and ( 45 ) L 1 .function. (
L 1 + L 2 ) - 1 = [ 0 0 0 0 1 0 0 0 1 / 2 ] .times. .times. L 2
.function. ( L 1 + L 2 ) - 1 = [ 1 0 0 0 0 0 0 0 1 / 2 ] ( 46 )
##EQU32## This results in two ellipses with each ellipse
representing the momentum of a set of CMGs. h disc 1 = L 1
.function. [ L 1 + L 2 ] - 1 .times. h + .alpha. .function. ( p 1
.times. p 2 ) = [ 0 h y h z / 2 + .alpha. ] ( 47 ) h disc 2 = L 2
.function. [ L 1 + L 2 ] - 1 .times. h - .alpha. .function. ( p 1
.times. p 2 ) = [ h x 0 h z / 2 - .alpha. ] ( 48 ) ##EQU33##
[0056] To maximize the size, f(A), of the 3D momentum sphere, the
function .alpha.(A)needs to be chosen such that it determines the
two ellipse centers at .+-.[0;0;.alpha.], which will keep each
ellipse within its annulus whose inner radius is r1 and outer
radius is r2. .alpha. .function. ( A ) = arg .function. [ max
.alpha. .times. { f .function. ( A ) .times. .times. s . t .
.times. r 1 .function. ( A ) .ltoreq. [ h y h z 2 + .alpha. ]
.ltoreq. r 2 .function. ( A ) & r 1 .function. ( A ) .ltoreq. [
h x h z 2 - .alpha. ] .ltoreq. r 2 .function. ( A ) .times. .times.
for .times. .times. all .times. .times. [ h x h y h z ] .ltoreq. f
.function. ( A ) } ] ( 49 ) ##EQU34##
[0057] The maximum of f(A) is attained when each ellipse touches
both the inner and outer radii of each corresponding annulus. Since
each ellipse has a similar structure, the same value of .alpha.
causes each ellipse to touch both inner and outer radii of its
corresponding annulus. For each optimum value of .alpha., the same
optimum value would be achieved by changing the sign on .alpha., so
only positive values of .alpha. are considered. Consider the first
ellipse, whose equation is: [ x y z ] = [ 0 h y h z 2 + .alpha. ]
.times. .times. such .times. .times. that .times. .times. .times. [
h x h y h z ] .ltoreq. f .times. .times. or .times. ( y ) 2 + ( 2 *
( z - .alpha. ) ) 2 = f 2 .times. .times. ellipse .times. .times.
in .times. .times. ( y , z ) .times. .times. plane . ( 50 )
##EQU35##
[0058] The point [x,y,z]=[0,0,r.sub.1(A)] is where an ellipse just
touches its annular boundaries at the smallest radius, r.sub.1(A).
If the points [0,.+-.y.sub.0,z.sub.0] are where the ellipse just
touches its annular boundaries at the largest radius, r.sub.2(A),
then the following equations for the values of .alpha.(A), f(A),
y.sub.0(A) and z.sub.0(A) can be solved, using the known
intermediate functions r.sub.1(A) and r.sub.2(A):
(y.sub.0).sup.2+(z.sub.0).sup.2=(r.sub.2(A)).sup.2 since
[0.+-.,y.sub.0, z.sub.0] lie on circle of radius r.sub.2(A) (51)
(y.sub.0).sup.2+(2*(z.sub.0-.alpha.)).sup.2=f.sup.2 since
[0,.+-.y.sub.0,z.sub.0] lie on ellipse (52) - y 0 z 0 = d z 0 d y 0
= - y 0 4 * ( z 0 - .alpha. ) .times. .times. .times. equating
.times. .times. slopes .times. .times. of .times. .times. above
.times. .times. circle .times. .times. and .times. .times. ellipse
.times. .times. equations ( 53 ) ##EQU36##
(2*(r.sub.1(A)-.alpha.)).sup.2=f.sup.2(A) since [0,0,r.sub.1(A)]
lies on ellipse (54)
[0059] The two solutions of Eqn. 53 are: y.sub.0=0or
z.sub.0=4*(z.sub.0-.alpha.) where
r.sub.1(A)<.alpha.<r.sub.2(A) (55)
[0060] Using these two solutions to solve the remaining three
equations gives:
[0061] Solution 1: y 0 = 0 ( 56 ) z 0 = r 2 ( 57 ) .alpha. = r 1
.function. ( A ) + r 2 .function. ( A ) 2 ( 58 ) f solution .times.
.times. 1 .function. ( A ) = r 2 .function. ( A ) - r 1 .function.
( A ) ( 59 ) ##EQU37##
[0062] Solution2: The z.sub.0=4*(z.sub.0-.alpha.) solution implies
that z.sub.0=4.alpha./3. Subtracting equations 51 and 52 eliminates
y.sub.0, leaving:
3*(z.sub.0).sup.2-(8.alpha.)*z.sub.0+(4.alpha..sup.2+r.sub.2(A).-
sup.2-f(A).sup.2)=0 (60)
[0063] Substituting z.sub.0=4.alpha./3 into this equation gives: 3
* ( 4 .times. .alpha. 3 ) 2 - ( 8 .times. .alpha. ) * ( 4 .times.
.alpha. 3 ) + ( 4 .times. .alpha. 2 + r 2 2 - f 2 ) = 0 ( 61 ) 4
.times. .alpha. 2 = 3 .times. ( r 2 .function. ( A ) 2 - f
.function. ( A ) 2 ) ( 62 ) ##EQU38## or
[0064] In order for the ellipse to be inside the annulus,
.alpha.>r.sub.1(A). Given .alpha.>r.sub.1(A), Eqn. 54 is:
.alpha. = r 1 .function. ( A ) + f .function. ( A ) 2 ( 63 )
##EQU39##
[0065] Substituting Eqn. 63 into Eqn. 62 results in: 4 .times. ( r
1 .function. ( A ) + f .function. ( A ) 2 ) 2 = 3 .times. ( r 2
.function. ( A ) 2 - f .function. ( A ) 2 ) ( 64 ) ##EQU40##
[0066] Solving this quadratic equation for f, and keeping the
positive solution gives the value of f for solution.sub.2: f
solution .times. .times. 2 .function. ( A ) = - r 1 .function. ( A
) + 3 .times. ( r 2 .function. ( A ) 2 - r 1 .function. ( A ) 2 ) 2
( 65 ) ##EQU41##
[0067] Note that for any given value of r.sub.1(A)/r.sub.2(A), both
solution 1 and solution 2' will give an ellipse that is tangent to
both the inner and outer radius of the annulus, but exactly one of
the solutions will give an ellipse that is totally inside the
annulus. Setting f.sub.solution1(A)=f.sub.solution2(A) gives
r.sub.2(A)=2r.sub.1 (A) where the valid solution switches between
solution 1 and solution 2. For r.sub.2(A)<2r.sub.1 (A), solution
1 gives an ellipse that is inside the annulus. For
r.sub.2(A)>2r.sub.1 (A), solution 2 gives an ellipse that is
inside the annulus. This is illustrated in FIG. 4a and FIG. 4b.
FIG. 4a illustrates a first ellipse 402 inside a first annular
region 404 where 2r.sub.1 (A)>r.sub.2(A). FIG. 4b illustrates a
second ellipse 406 inside a second annular region 408 where
2r.sub.1 (A)<r.sub.2(A). Solution 1 can be used for the
situation depicted in FIG. 4a and solution.sub.2 can be used for
the situation depicted in FIG. 4b.
[0068] To complete the solutions, recall from earlier in this
section that: r 1 .function. ( A ) = 2 .times. A ( 66 ) r 2
.function. ( A ) = min j = 1 , 2 .times. ( h jc + ( 2 .times. h ja
) 2 - 2 .times. A 2 ) .times. .times. where .times. .times. h jb =
h ja ( 67 ) ##EQU42##
[0069] In the case where each of the two discs has three collinear
CMGs, and all six .parallel.h.sub.i.parallel. are equal: r 1
.function. ( A ) = 2 .times. A ( 68 ) r 2 .function. ( A ) = h i +
( 2 .times. h i ) 2 - 2 .times. A 2 .times. .times. where .times.
.times. all .times. .times. six .times. .times. h i .times. .times.
are .times. .times. equal ( 69 ) ##EQU43##
[0070] The maximum value of A with all six
.parallel.h.sub.i.parallel. equal and or r.sub.1(A)<r.sub.2(A),
A < h i .times. 1 + 7 2 .times. 2 . ##EQU44##
[0071] In the case where either or both of the two discs has lost
one of its three collinear CMGs, label the lost CMG as
.parallel.h.sub.jc.parallel. thus: r.sub.1(A)= {square root over
(2)}A (70) r.sub.2(A)=0+ {square root over
((2.parallel.h.sub.i.parallel.).sup.2-2A.sup.2)} where all unfailed
.parallel.h.sub.i.parallel. are equal. (71)
[0072] A<.parallel.h.sub.i.parallel.represents the maximum value
of A after a failure.
[0073] In summary, to ensure that available torque is above some
threshold, A, whenever total momentum stays within some ball of a
given size, f(A): .tau. max .times. .theta. . i i .gtoreq. A
.times. .times. whenever .times. .times. h .ltoreq. f .function. (
A ) ( 72 ) ##EQU45## we need f(A) to be given by: f .function. ( A
) = { r 2 .function. ( A ) - r 1 .function. ( A ) when r 2 < 2
.times. r 1 3 .times. ( r 2 .function. ( A ) 2 - r 1 .function. ( A
) 2 ) - r 1 .function. ( A ) 2 when r 2 .function. ( A ) > 2
.times. r 1 .function. ( A ) } ( 73 ) ##EQU46##
[0074] FIG. 5 is a flowchart of an exemplary method for controlling
sets of collinear CMGs. In a first step, step 502, an offset value
for each set of CMGs is determined. The offset value determines the
maximum momentum ellipse for a set of CMGs that is fully within an
annular region derived from the total momentum available from all
sets of CMGs. In the exemplary embodiment where there are two
orthogonal sets of CMGs, with each set containing three CMGs, the
offset value can be determined using Eqn. 73. By determining the
appropriate ellipse for each set of CMGs, a guaranteed minimum
amount of torque can be calculated.
[0075] Next, in step 504, a maneuvering command to rotate
spacecraft orientation is received. In one exemplary embodiment,
the maneuvering command is sent from a ground control station to
the attitude control system 102 of the spacecraft. Alternatively,
the maneuvering command may be generated by the spacecraft based,
for example, on a preplanned movement schedule.
[0076] After the maneuvering command is received, the torque
required for each set of CMGs is determined in step 506. In one
embodiment, the needed torque for all sets of collinear CMGs to
provide the required maneuver is determined. Then, in step 508, the
total torque needed is split into the individual torque required
for each set of CMGs which is determined using Eqn. 24.
Alternatively, the momentum needed to maneuver the spacecraft can
be determined and allocated between each set of CMGs. Torque can
then be calculated by taking the derivative of the momentum. These
calculations can be done at the attitude control system 102.
[0077] In step 510, gimbal rates for each CMG in a set of CMGs are
determined. The gimbal rates can be determined by Eqns. 27-28. In
one exemplary embodiment, the gimbal rates can be determined by the
momentum actuator control processor.
[0078] In step 512, the gimbals for each of the collinear CMGs for
each set of collinear CMGs are then moved to provide the proper
momentum.
[0079] The exemplary embodiment or embodiments described herein are
not intended to limit the scope, applicability, or configuration of
the invention in any way. Rather, the foregoing detailed
description will provide those skilled in the art with a convenient
road map for implementing the described embodiment or embodiments.
It should be understood that various changes can be made in the
function and arrangement of elements without departing from the
scope of the invention as set forth in the appended claims and the
legal equivalents thereof.
* * * * *