DOUBLE ARM JUGGLING SYSTEM - RPI
Transcript of DOUBLE ARM JUGGLING SYSTEM - RPI
DOUBLE ARM JUGGLING SYSTEM Proposal for ECSE-4962 Control Systems Design
Team 1 Trinell Ball John Kua
Linda Rivera
February 22, 2006 Rensselaer Polytechnic Institute
ii
Abstract Our objective in this report is to propose a plan in accomplishing the task of
constructing a mechanism with a single arm, with two end-effectors, attached at each end
of the arm. The mechanism will be able to launch and catch a ball. The two en-effectors,
simultaneously, executing the task ok launching and catching will be able to perform a
juggling operation. The movements of the mechanism will be guided by a pan and tilt
apparatus. The robot’s ability to adapt to its task oriented environment will be dependent
upon the design of a control system, the trajectory algorithm and sensor communication.
iii
Table of Contents Introduction..........................................................................................................................1
Objectives ............................................................................................................................5
Design Strategy....................................................................................................................7
Plan of Action ......................................................................................................................9
Verification ........................................................................................................................10
Costs and Schedule ............................................................................................................20
Bibliography ......................................................................................................................24
Statement of Contributions ................................................................................................25
1
Introduction
Our goal for this project is to design and develop a juggling system utilizing a pivoted,
double-ended arm that is able to handle two ping pong balls at the same time, maintaining one
in the air at all times. The motivation for this scheme arose primarily from a previous project
developed by Team 7 from the Control Systems Design course in 2004. Their system
consisted of a single arm that would toss a ball, which followed a projectile motion trajectory.
The arm then would pan approximately 180 degrees to catch it. Our purpose is to improve
this mechanism by including a second arm that allows handling of two or more balls in a
continuous juggling motion. We also intend to extend their open loop control system to a
closed loop feedback control.
The system will systematically juggle the two balls using a pan and tilt mechanism to
move the arms. Pan and tilt motions will be achieved by the use of two distinct motors,
controlled by an embedded control system. Feedback on the arm position will be provided by
shaft encoders and feedback on the ball position will be provided by an overhead camera. A
second camera, facing one side of the mechanism, may be added later on in order to more
accurately predict the ball’s location. We expect that our arm will be able to execute toss and
catch operations quickly, relative to the flight time of the ball, with a minimum of overshoot
and steady state error. With the camera input, the system should be capable of learning from
toss/catch errors. In addition, disturbances in the flight path of the ball, perhaps caused by
wind, will be compensated for in the catching mechanism.
Related, more in-depth previous research involving the action of juggling includes that
by Dr. D. E. Koditschek of the University of Michigan. One of his projects, which somewhat
resembles was developed in 1989 in conjunction with Martin Buhler of Yale University; it
consists of a single rotating bar padded with a billiard cushion to bat pucks upward on a plane.
To control the bar so as to achieve a periodic juggle, the researchers relied on the help of a set
of algorithms called “mirror algorithms;” they translate or “mirror” the continuous trajectory
of the puck into an on-line reference trajectory for controlling the motion of the robot. The
advantage of these algorithms is that it avoids the need to have perfect information about the
state of the puck at impact. The robotic arm can bat two balls in a fountain pattern
2
indefinitely. A camera records the flights of the balls and a special juggling algorithm, which
can correct for errors and change cadence of the juggle, controls the robot’s motion.
The pertinence of this research on our project lies particularly in the use of a camera as
the source of feedback for the system. In contrast however, we will be facing the control
problem of being able to perform not only tosses, but also controlled catches with two distinct
arms. We have not considered making use of such algorithms as the mirror algorithms
mentioned above. Instead, we plan to model a flight trajectory, taking in account all relevant
parameters that we believe may give us enough information to successfully predict the ball
position when the catching operation is performed.
Specifications
Based on our initial calculations and MATLAB simulations we have determined a
number of specifications that will allow us to achieve our goal. They are summarized below:
• Range of Motion
o The pan motion will be limited to +30°
o The tilt motion will be limited to +30° about the horizontal axis in order to ensure fast recovery of the arm.
• Speed
o Based on a typical flight profile of 1m height, 0.74295m range, and a 1s flight time, this requires our tilt axis to achieve a peak velocity of 5.34 rad/s.
o To achieve a maximum pan excursion of 20° within 0.18s (1/5 our flight time), our pan axis must be capable of accelerating at a minimum of 148.22 rad/s2 .
• Accuracy
o On the pan axis, in order to catch the ping pong ball accurately with the net we need to maintain a positioning error that will directly depend on the diameter of the net.
o For the tilt axis, critical accuracies include the final launching position as well as the velocity at launch. Due to the pan/tilt arrangement of the system, it is much less tolerant to overshoot than undershoot.
3
• Payload
o The ping pong ball that we are currently working with is approximately 2.5g with a diameter of 3.8cm.
• Arm – the following description refers to the arm used by Team 7 in 2004; we considered this arm as our starting point for testing and simulation:
o Assuming a .74295m long arm made out of carbon fiber the following specifications were estimated.
An arm weight of approximately 0.0232Kg.
The inertia of the arm (about the center) will be .027002Kgm^2.
• Pan Axis
o Overshoot should be kept below 5% of the steady state output.
o Steady State Error can be tolerated within + 5% of the steady state output
o Settling time is expected to be within one to five seconds.
• Tilt Axis
o Overshoot should be kept below 3% of the steady state output.
o Steady State Error can be tolerated within + 2% of the steady state output
o Settling time is expected to be achieved within one to two seconds.
• Noise Tolerance
o Because our sensors (shaft encoders) are digital in nature, noise tolerance should be fairly high.
4
Below is a preliminary design of what the juggling mechanism will look like once it is built:
Figure 1: Double Arm Juggling Mechanism
5
Objectives As mentioned previously, our main goal is achieving a robust system that is able to
juggle two or more balls simultaneously; the tosses and especially the catches should occur
with a minimum error.
In order to achieve a successful overall system performance, the project will be
developed in a progressive fashion. This will assure specific control problems to be quickly
identified and effectively solved. At the same time, it will allow us to gain experience
regarding the system behavior at the different stages to be better prepared to manage
unexpected setbacks. The following is the sequence we intend to follow as we move towards
our ultimate objective: 1. one dimensional toss with one ball- open loop control; 2. two
dimensional toss with one ball- open loop control; 3. two dimensional toss with two balls-
open loop control; 3. two dimensional toss –closed loop feedback control, where feedback is
provided by a camera. Following this sequence will also allow us to pace our work efficiently
as we set milestones and datelines for each phase of the process.
As we go through each one of the project stages, we have anticipated a number of
challenges that we may encounter. Our main obstacle will include achieving sufficient speed
to launch the ball in a short duration of time. At the same time, we lack experience with
image processing; due to this we are not certain that we will be able to obtain enough samples
to determine the position and predict the trajectory. Another challenge we may encounter has
to do with possible oscillations of the arm due to rapid accelerations. Finally, we could
encounter a challenge due to the inertia of the net outweighing the ball drastically.
Besides the challenges mentioned above, we will also need to perform a few
modifications involving manufacturing and assembly in order to achieve the physical
specifications of the juggling mechanism. These modifications carry with them a number of
constraints that we will need to overcome. Our system requires high torque and high speed to
achieve our main objective. The motor used should allow the arm to move with enough
velocity and with sufficient torque to launch the balls and quickly recover within a fraction of
the flight time of the ball. Currently, we are acquiring data regarding required torque for a
given flight time and desired range, through different testing and simulation procedures; once
this information is examined, we will be able to establish whether or not we will need to
6
purchase a new tilt axis motor. If this was the case, in order for the new motor to provide the
torque we need, we would need to modify the existing gear train or install a new one.
The applications to which this project could be of significant use range from
entertainment, manufacturing to space related projects. As the system stands in this proposal,
the obvious choice for its use is in entertainment applications such as amusement parks, or
toys. However, maintaining the same essence of this project and enhancing it could create
numerous applications in other fields. A larger version of this system could be utilized in
manufacturing to handle hazardous materials, or to simply carry objects from one place to
another. In Military or space related projects, this project could be extended into satellite
systems or to aid astronauts in throwing objects to difficult or dangerous places to reach.
This project, and robots in general, have a great impact in the economic sector. As
robot technology quickly evolves, many jobs that require executing repetitive tasks, the
handling of dangerous materials, or that demand a great deal of precision are being replaced
by robotic mechanisms. This situation creates controversy on whether or not robot technology
has a positive effect on the economy or if its promotion will just cause people to lose jobs.
Those who work in the robotics arena may argue that the types of jobs that this technology
replaces, ultimately serves as a means to advance the human race. If people do not have to do
these jobs, they will be able to spend more time learning and working in other areas that can
truly help them diversify and expand their goals in life.
7
Design Strategy
Our strategy in approaching this project relies heavily on analytical design with
physical verification. Initially, we analyzed our primary design to help us select the
proper values for the key parameters of our design. We will then be developing a model
of the system, initially from the design parameters, then verified with the actual system.
This will allow us to design and test our control systems in simulation before applying it
to the actual system.
As the pan and tilt arms are mostly decoupled and will not, in most cases, be
moved simultaneously, we will treat them as separate systems and handle any coupling
effects as a disturbance. We will be experimentally determining the friction coefficients
of both coulomb and viscous friction as well as the oscillations induced in the arm and
including that in the model of our system.
The control systems design will be through a classical root-locus approach for the
simpler pan controller and a state-space observer approach for the tilt controller, where
we need to achieve desired position and velocity simultaneously. These will be
implemented and simulated in MATLAB with Simulink, then programmed into the
CompactRIO controller with LabVIEW. We will then perform a series of tests to verify
the performance of our controls and then begin to attempt our design goals.
Our vision feedback subsystem will be developed with the use of the LabVIEW
Vision Development Module. This module will allow us to create a LabVIEW VI to
process a camera input, identify the ball (or balls) in the image, and determine the height
of the ball. This is done through thresholding, pattern recognition, and size
measurements. The first goal of this system is to be able to acquire the X-Y position of
the ball – this will give us feedback on the whether the pan position is correct to catch the
ball. Next, we will attempt to determine the Z position, or the height, of the ball. With the
3-D coordinates of the ball and a fixed rate of sampling (30fps), we should be able to then
continually calculate a trajectory prediction and determine the optimal position for the
arm to be in to catch the ball, even if there is undershoot. Our current plans intend for
there to be one camera overhead, however it may not have enough resolution to
determine the height of the ball (from the size in the image), and so we may have to add
8
an additional camera for a side profile of the trajectory. With this data, we can then add
an outer loop or loops to the basic arm control system to apply that feedback.
The final goal of the system is to be able to juggle two balls simultaneously with
feedback from an overhead camera to correct for environmental changes and errors in the
control of the arm. However, we will be approaching this goal in a series of stages.
Initially, we will be developing the system to function in open loop, first with a basic 1-D
toss and catch. Then we would move to a 2-D toss and catch, throwing from one side of
the arm to the other. Finally, we would attempt an open loop two ball juggle. At some
point after the 2-D case was successful, we would integrate the camera feedback into the
2-D case, and then the two ball juggling case.
Figure 2: Design Strategy
Model Development
Model Verification
Parameter Analysis
Build System Develop Camera Subsystem
X-Y Tracking
Z Tracking
Trajectory Prediction
Pan/Tilt Control Systems Design
Open Loop 1-D Testing
Open Loop 2-D Testing
Open Loop Two Ball Juggle
Closed Loop 2-D Testing
Closed Loop Two Ball Juggle
Vision Feedback Controller Design
9
Plan of Action We are already deep into the analysis of many of the key parameters in our
project, such as arm length, projectile selection, desired launch excursion and projectile
flight time, and required motor torque. With these analyses, we will be able to identify
the feasibility of our design and the required tolerances.
Certain parameters, such as friction and the shaft spring constant/damping, can be
experimentally determined. With these parameters, we can develop a Simulink model of
the system, using the design parameters of the system and the measured coefficients from
the existing setup. In parallel, we will make the necessary modifications and additions to
the existing setup to achieve the specified design. Once that is complete, we will run a
series of tests to verify the model we created.
Once the model has been experimentally verified, we will begin to design the
primary controllers required for the system – the pan motor controller and the tilt motor
controller. With these two controllers, we should be able to implement first the open loop
1-D toss-and-catch, then the open loop 2-D toss-and-catch actions, and finally, the open
loop two ball juggle.
In parallel with all of these tasks, we will have been developing the ball tracking
vision system. This is broken into three tasks – developing the X-Y position tracking of
the ball, then tracking the Z position of the ball (height), and finally, developing the
ability to continually predict the trajectory of the ball based of that sensor data. When that
reaches fruition, it will be integrated with the basic system and an outer loop controller
will apply the feedback from the vision system to control both the pan and tilt loops. We
will then attempt a single ball 2-D toss and catch and then refine it to a closed loop two
ball juggle.
10
Verification In the task at hand we are required to simulate certain parameters and verify it in
the actual subsystem. These results will greatly affect our system performance. There are
certain specifications that need to be satisfied; we will simulate these parameters and
proceed to verify these in the actual subsystem. The precision of our system is dependent
on physical components. Changing the parameters of each mechanism yields particular
results affiliated with the influential capability that the device possesses on the overall
system. There are certain parameters we will not be able to exceed because the system
will become intolerant to the changes. I will attempt to identify to the reader the various
test procedures that are to take place in order to meet the system specifications. I will also
identify some of the tolerance issues we will face when constructing the mechanism.
Testing Procedures Our system requires extensive testing to determine the proper model parameters
and verify the accuracy of our model.
Friction Identification and Required Torque Some motor torque (or linear actuator force) is exhausted overcoming friction
forces. There will be two types of frictions that we will have to identify. One is coulomb
and the other is viscous. Initially we will have to input an impulse to the motor to break
the static friction. Then we will input a series of test voltages; we will apply these
voltages according to the motor specification sheets. We will have some expectation to
arrive at a certain angular accelerations at certain torques given by the relationship:
τα =+⋅ frictionI m
We will determine the final velocity from the shaft encoders. In the steady state, the
velocity is constant; that is when your torque applied equals the friction. This should
enable us to determine the coefficient of viscous friction. Afterwards when friction is
identified we should be able to identify the additional torque required to accomplish our
11
objective. We will also be able to identify the torque constant of the motor as a result of
these test procedures.
Oscillation To model the oscillations of the arm we would have to determine the spring
constant and the damping envelope. We will apply a measured force to the arm, and we
will also measure the displacement due to the force. Then we can solve for the spring
constant due to this relationship:
xkF ⋅=
where the force is equal to the spring constant times the displacement. We will also
measure the damping coefficient by this relationship:
aeA t =⋅ ⋅−α
A is the initial displacement, and a is some other displacement at time t; α is the
damping coefficient. At a given time if you know the initial displacement A and the
displacement a affiliated with time t then the equation becomes solvable forα , the
damping coefficient. The process of experimentation will be to record A and measure a
at time t after applying a certain force upon it. This will be repeated for a range of forces.
Range and Flight Time We will launch the ball from different angles to have the projectile arrive at the
other end of the arm, and within the catching grasp of the net. The range is also going to
be dependent on the initial velocity. We will vary the parameters of the launch angle and
velocity, but not simultaneously. We will hold one parameter constant while changing the
other.
The objective will be to generate a table with different variables such as angle of
launch, velocity, the range, and flight time. We will conduct a series of launch sequences
to determine different parameters that result from the particular launches. Based on that
data we will be able to pick our target points where we can program the machine to
follow a catching and launching algorithm. The series of tests mentioned above would
12
allow us to designate a suitable launch angle that yields maximum flight time and an
acceptable range for our objective.
Tilt Mechanism
This system will be used to move the end-effector (catching net) by the use of a
DC motor vertically via angular displacement. The mechanism will catch and launch the
ball. One of the main criteria this system is to fulfill is achieving substantial torque to
launch the ball without undesirable overshoot. We are also obligated to maintain a
minimal amount of recovery time; since the arm has to come back to the catching
position promptly after the launch, and having a large angular displacement to
accomplish the launch will increase the recovery time. We will apply a step input to the
controller and then we will measure the overshoot or undershoot, steady-state error and
the settling time using the shaft encoders. Then we will adjust the control system’s
parameters to achieve our desired requirements.
Pan Mechanism
This system will move horizontally in a circular motion via the use of a DC
motor. It will change its position according to the user defined trajectory algorithm. We
will follow the same procedure to experimentally verify the same parameters as the Tilt
mechanism.
Feedback system (Vision)
The purpose of the feedback system is to analyze the path of the ball and feed
back the correction information that is required for the end-effector to be positioned
correctly underneath the ball’s flight path so the ball can be tracked and the projectile can
be caught. We will test this with closed loop feed back and track a ball as we toss it. We
will observe the maneuverability of the end-effecter as it attempts to catch the ball. Then
we will adjust the gains to achieve our objective. We will calibrate the parameters of our
controller to track the projectile accurately with minimum delay. The vision system will
be adjusted to correctly ascertain the position of the ball, predict the height of the ball,
and also be able to correctly calculate the trajectory of the ball. In order to understand the
capability of the sensing device we would have to launch the projectile back and forth
13
and take snapshots with the camera. From that we can interpret when we should activate
the camera in order to yield the maximum productivity from the closed loop feedback
control.
Tolerance Below are the current working parameters of our system. We have identified
some tolerance issues based on these parameters. I would like to remind the reader that
until our actual physical system that is to be constructed, these parameters are subject to
change, but the tolerance issues affecting these parameters are certain to affect the system
we will build in the future.
Current Parameters: Ball mass: 2.5 grams Ball diameter: 3.81cm Arm length: 70cm Initial velocity: 5.4m/s Coefficient of drag: 0.5 Tolerance Parameters: Range, Flight time and Recovery, Accuracy Range: To achieve our goal we need to obtain a specific amount of range from our
projectile. The arm length currently stands at approximately .70 meters. As it stands now
we at least need to achieve approximately .7381 meters (arm length plus ball diameter) in
range from one end of the arm to the other end. The range is dependent on the particular
radius of the ball we use and air drag. The relationship can be arrived at from the
following equations:
14
Horizontal Range Air Drag
2
2
1tatvx xx ⋅⋅+⋅= ρ⋅⋅⋅= ArvDrag 2
2
1
where x is the horizontal displacement and r is the radius, and they are related to each
other via the x component of the velocity, which appears in the range equation and the
drag equation. Currently the ball we plan to use possesses a radius of .0195 meters. The
simulation result yields the following graph assuming an initial velocity of 5.4 m/s, and
coefficient of drag at .5. The range and radius was varied as everything else was held
constant. The point that corresponds to the radius of our ball is highlighted in the plot.
0.005 0.01 0.015 0.02 0.0250.55
0.6
0.65
0.7
0.75
0.8
0.85
0.9
0.95
1Radius Vs. Range ( Red is with drag, Green is without drag )
Radius-meters
Ran
ge-m
eter
s
X: 0.019Y: 0.6948
Drag
No Drag
The range is also dependent on the density of the ball, given by the equation: Equation of
density for a sphere 3
34
r
mass
⋅π
Where r influences drag and in turn the horizontal range. The plot of density vs. range is
shown below.
15
0 200 400 600 800 1000 1200 1400 1600 1800 20000.6
0.65
0.7
0.75
0.8
0.85
Density Vs. Range
Density-Kg/m3
Ran
ge-m
eter
s
X: 87.01Y: 0.6948
The issue of tolerance here is the radius of the ball, and the type of material we use. We
would have to be prudent when choosing the ball about the radius and the material that it
is made out of. We will have to choose a ball that has a suitable mass and radius
parameters to yield the required range. Currently, it appears that small variation in this
specification may have a slight effect on the range.
Flight time and recovery: The flight time can be derived from the equation provide below: y is the vertical displacement x is the horizontal displacement
2
2
1t
yx
tyx
yx
⋅⎥⎦
⎤⎢⎣
⎡⋅+⋅⎥
⎦
⎤⎢⎣
⎡=⎥
⎦
⎤⎢⎣
⎡
To understand the flight time we need to look at some of the same testing procedures that
were used to parameterize the range. As we can see from the above equation, since the
flight time is dependent upon velocity, and velocity is highly dependent on drag, a graph
can be generated to show the flight time that could be achieved given a range of ball
radius, velocity and density. A plot such as that is shown below.
16
0.005 0.01 0.015 0.02 0.0250.95
1
1.05
1.1
1.15
Radius Vs. Flighttime ( Red is with drag, Green is without drag )
Radius-meters
Flig
ht tim
e - Sec
onds
X: 0.019Y: 1.01
The critical point from the plot that matches our specification is labeled above.
The recovery of the arm is critical to our operation; we do not have too much time to
launch and recover to catch. It can be seen that we only have about 1 second to execute
this operation from the plot above undertaking the current parameters. As we can see if
we increased the radius of the ball too much the flight time will become shorter. We need
a certain amount of time for the arm to recover from the launch position, and get the ball
to our desired range.
In the plot below we can observe as the cycle time goes up the angular
displacement also goes up.
17
0 20 40 60 80 100 1200
1
2
3Launch Angular Displacement vs. Launch Cycle Time
Angular Displacement (degrees)
Laun
ch C
ycle
Tim
e (s
econ
ds)
0 10 20 30 40 50 60 70 80 90 1000
50
100
150Launch Angular Displacement vs. % of Flight Time
Angular Displacement (degrees)
Per
cent
age
(%)
The large angular displacement gives time to achieve high acceleration from the initial to
the final launch position, but in our case we need the high acceleration without having a
large angular displacement because the recovery time as we saw for our arm is very little.
The plot below shows the plot of how the required angular acceleration to accomplish our
task goes up dramatically as the angular displacement goes down.
0 20 40 60 80 100 1200
500
1000
1500
2000
2500Launch Angular Displacement vs. Required Acceleration
Angular Displacement (degrees)
Req
uire
d Ang
ular
Acc
eler
atio
n (rad
/s2 )
Accuracy:
18
There are certain types of accuracy we need to be concerned with in our project.
First of all we need to look at the error generated when we increase the length of the arm.
To reduce the error we need to reduce the length of the arm as shown by the plot below.
Our critical range of operation is given in the plot below.
0.5 1 1.5
10
15
20
Arm Length vs. Percent Range Error + and -10%
Length (meters)
Per
cent
Ran
ge E
rror
(%)
X: 0.7434Y: 11.43
0.5 1 1.5
-20
-15
-10
Length (meters)
Per
cent
Ran
ge E
rror
(%)
The length is also critical for our purpose, because as the length goes up so does the moment of inertia.
0.5 1 1.50
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
0.1
Length vs. Moment of Inertia
Length (meters)
y (K
g.m
2 )
X: 0.76Y: 0.02825
19
One other significant analysis for accuracy is to have the radius of the catching net
increase, this would increase the probability of the ball being caught but in the process we
also increase the inertia of the load.
0 0.05 0.1 0.15 0.2 0.25 0.3 0.350
0.02
0.04
0.06
0.08
0.1
0.12Accurracy Vs. Diameter
Diameter-meters
Acc
urac
y
X: 0.222Y: 0.092
20
Cost and Schedule PART COST
PART QUANTITY OUR PRICE COMMERCIAL PRICE
Motor 2 $125.00 (1) $125/each Carbon rod 1 $0 $11.30
Catching Net 1 $6.99 $6.99 Ball 6 $1.00/each $1.00/each
Camera 1 $0 $50.00 Timing Belt 1 $0 $4.00
TOTAL COST _$328.29______ TOTAL COST TO US _$137.99______ LAB EQUIPMENT, SHOP AND LAB COST
SERVICE TYPE
TIME DURATION
COST (Tuition)
TOTAL COST OF
SERVICE Lab Equipment use One semester $2000.00 $2000.00
Shop, Lab One semester $3000.00 $3000.00 Consulting One semester $4000.00 $4000.00
TOTAL COST OF SERVICES _$9000.00____ TOTAL COST TO US _$9000.00____
21
LABOR COST
NAME TOTAL ESTIMATED
HOURS
COST PER HOUR TOTAL COST PER
INDIVIDUAL John kua 112 $100 $11,200
Linda Rivera 112 $100 $11,200 Trinell Ball 112 $100 $11,200
TOTAL COST OF LABOR __$33,600_____ Schedule All assignments on the following Gantt chart are team leaders – all team members will be
participating in all phases of the project.
24
Bibliography Peter J. Beek and Arthur Lewbel, “The science of Juggling, Studying the ability to toss
and catch balls and rings provides insight into human coordination, robotics and
mathematics,” Scientific American, November, 1995, Volume 273, Number 5,
pages 92-97, http://www2.bc.edu/~lewbel/jugweb/science-1.html
25
Statement of Contribution This statement affirms that all three members of this team participated actively in
putting together this conceptual design memo. Each member contributed individually to
information included here. Linda Rivera was responsible for the Introduction and Objectives,
John Kua wrote the Design Strategy, Plan of Action, and Schedule sections, and Trinell Ball
authored the Verification and Costs sections.
_________________________________ John Kua __________________________________ Trinell Ball __________________________________ Linda Rivera