Docstoc

Insect Video Tracking Device Final Report

Document Sample
Insect Video Tracking Device Final Report Powered By Docstoc
					Design Review for the Insect
  Video Tracking Device
       September 1998 – May 1999
      Project Number (Project 99.05)

            Design Team Members:
                       George H. Sapna III
                        gsapna@udel.edu
                         (302) 837 8817
               219 Sussex Hall, Newark, DE 19717

                        Raymond Foulk
                       apostle@udel.edu
                        (302) 738 2884
              18 Madison Drive, Newark, DE 19711

                         Ryan McDonough
                        ryanmcd@udel.edu
                           (302) 369 9113
      329 East Main Street, Apartment 210, Newark, DE 19711

                           Justin Combs
                        juscom@udel.edu
                          (302) 737 7281
              29 East Park Place, Newark, DE 19711



                         Sponsor:
                         Keith Hopper
                       khopper@udel.edu
                        (302) 731 7330
           501 South Chapel Street, Newark, DE 19711
Table of Contents

Executive Summary                                                       3
Mission                                                                 3
Introduction                                                            3
Description of Problem                                                  4
Customers                                                               5
System Benchmarking                                                     11
Functional Benchmarking                                                 13
Derivation from Critical Functions                                      14
The Origin of Target Values                                             16
Concept Selection & Evaluation against Metrics                          16
Preliminary Concept Development                                         19
Calculations                                                            21
Proposed Concept Verification                                           23
Demonstration of Proposed Concept                                       23
Finalized Design for Prototype Construction                             25
Prototype Fabrication                                                   25
Prototype Assembly                                                      26
Prototype Testing                                                       26
Modifications to Finalized Design                                       30
Recommendations for Improvement                                         30
Expenditures and Budget                                                 30
Final Prototype                                                         31
Conclusion                                                              32
Appendix A (I.T. Technical Handbook)                                    33
        Introduction                                                    35
        Tutorial                                                        37
        Understanding the Software                                      48
        Understanding the Mechanical Hardware (Assembly Procedure)      54
        I.T. Control Panel Source Code                                  65
        Replacement Parts List (Complete Set of Engineering Drawings)   81
        Specifications                                                  108
        Tracking Parameter Charts                                       109
Appendix B (Budget)                                                     110
Appendix C (Calculations)                                               114
Appendix D (Machine Shop Worksheet)                                     119




                                                                              2
Executive Summary

         In Entomology research, it has been determined that tracking an insect over a large area is
something that is vitally needed. The final system is required to cost less than $3500 in addition
to the value of any existing hardware used. The specifications most desired are to track an insect
in a two-dimensional region approximately 1m by 1m, and to acquire the position of the insect
with respect to the area to within +/- 1mm. Over the past few months, many types of position
tracking systems were investigated, but with little doubt, the all-aluminum Cartesian tracking
system is the solution of choice for this problem. It contains two trolleys, one for each of the two
directions, which move by stepper motors that drive rack and pinion sets. The “x” directional
trolley travels atop the “y” directional trolley, while the “y” trolley travels atop a simple
rectangular frame elevated 0.5m above the insect walking surface. The system makes use of a
digital video camera and computer that had comprised the previous laboratory setup, and the
camera mounts to the “x” trolley. An algorithm, written in the “C” programming language,
interprets the images from the camera and then signals the stepper motors to move in accordance
with the goal of keeping the insect in the center of the screen. The position of the insect is
recorded in a file as an experiment is running. Performance specifications for the Cartesian
tracking system include an effective tracking area of 1.055m by 0.917m, a positional accuracy
within +/- 1 mm, and a maximum tracking speed in excess of 27 mm/s. Excluding the existing
hardware required to operate the Cartesian tracking system, the final cost was approximately
$3201.


Mission

         Our mission has been to design, construct, and refine an insect video tracking system for
agricultural research that provides our customers with a creative, realistic and performance-based
solution. Our strategy will be to gain an overall knowledge of the project and then to strive for a
solution by researching, benchmarking, and defining the customer’s wants and constraints.
Finally, using an iterative design synthesis process, our team will generate the best solution to
satisfy our customers.


Introduction

          The success of the agricultural industry relies heavily on pest control. A significant
amount of crops are damaged and millions of dollars are lost each year due to harmful insects.
Diuraphis noxia, a crop eating insect, is a major problem for the United States wheat industry.
         The use of pesticides is a traditional method for controlling such pests that works
reasonably well, but can lead to decreases in food quality, increased costs, and other harmful side
effects. Fortunately, pests can also be effectively controlled by the introduction of natural
predators, such as the Aphelinus asychas. One problem with this method of pest control,
however, is that of population establishment in order to maintain an ecological balance.
Therefore, it is necessary to understand the reproductive habits of beneficial insects if they are to
be used successfully in controlling destructive insects.
         Research is currently being conducted for the United States Department of Agriculture at
Stearns Laboratory at the University of Delaware on the reproductive habits of the Aphelinus
asychas species. One study is focused on the mechanism by which the males of the species are
attracted to the females. The female A. asychas deposits a sex pheromone trail wherever she
walks. The purpose of this is to lure the male A. asychas so that mating can take place. Simple
tests are performed to study the male response to this pheromone. The male’s walking patterns


                                                                                                    3
are compared to those of a female’s, which had earlier traversed the same area; therein lies the
necessity for a system to track the motion of the insects.
         Currently the insect movements are being observed using six 4-centimeter diameter
arenas. In each arena, a female deposits the sex pheromone as it walks on the glass floor. Then,
the female A. asychas is removed and a male A. asychas is introduced to the arena. The male
movements are compared to the female movements using a fixed CCD camera coupled with a
computer. A record of the insect movements is written to a data file as a time history of two-
dimensional space coordinates. In order to accomplish this, a computer program must digitize the
CCD analog image in real time, distinguish between the insects and the background, and compute
the positions of the insects relative to their starting positions as sets of x and y coordinates.
Records of the position coordinates are stored in files, which are later used in a program that
computes the discrete speeds and the average speeds of all six insects simultaneously. The
existing laboratory set-up is shown in Figure 1. The disadvantage of this system is that the
resolution of the camera prohibits the tracking of these insects over much larger areas. It has
been found that the 4-centimeter diameter arenas confine the insects, altering their otherwise
uninhibited walking behaviors. By broadening the arena domain, the insects’ movements will
better resemble their natural behavior and will allow for a better understanding of their
reproductive habits.




                         Figure 1: Existing Video Tracking System




Description of Problem

         Our primary customer, Keith Hopper, has expressed a strong desire for a system that
allows the insects to roam undisturbed in a large arena. He would also like to use the existing
camera, which means that the camera will have to move in accordance with the insect’s
movements due to the resolution problem discussed above. In order to follow the insect, the
insect’s position within the camera’s view must be identified at discrete time intervals; a
computer program could then decide how to move the camera based on this information. This
intermediate task, moving the camera to follow the insect, is the fundamental difference between


                                                                                                   4
the existing system and the proposed new system. Every picture taken will have to be correlated
with the global position and/or orientation of the camera relative to the arena. In this fashion, the
global position of the bug can be determined by the vector sum of the camera position and the
insect position relative to the camera frame.


Customers

        Keith Hopper, the sponsor of the project, is only one of many possible customers that
would be affected by an insect tracking system. Through talking with Dr. Hopper and our project
advisor, combined with some investigation of the problem, a list of potential customers was
generated as shown in Table 1.



                                   Table 1: Customer List


                 Keith Hopper                Entomologists/Researchers
                  Mike Smith                 Entomologists/Researchers
                Jim Tumlinson                Entomologists/Researchers
                  Tom Baker                  Entomologists/Researchers
               Richard Turcotte              Entomologists/Researchers
              Mr. & Mrs. Filasky           Agricultural Industry (Farmers)
                  Rex Mears                Agricultural Industry (Farmers)
                  Greg Frantz                         Consumer
                 Austin Short                            EPA
                Representative         Delaware State Department of Agriculture
                  Alice Kline                  Supermarket Businesses
               Anthony Wexler                     Environmentalists




Each customer in the list was presented with the following basic survey:

         Our project consists of a device, containing a camera or similar device, which recognizes
an insect (on a flat surface) and follows the movement of the insect while the position of the insect
is continuously recorded. This is a two dimensional device. The main purpose of this device is to
output the space coordinates of the insect with respect to time.

        1. How would you benefit from this insect tracking device? (examples: research work,
              reduction of pesticides, etc… Please be specific.)

        2. What are some of the characteristics/specifications that you would want to see
              included in such a device? (examples: covers a certain area, tracks certain sized
              insect, weighs less than..., costs less than..., uses infrared cameras, etc... Please
              be specific. Include target values when possible.)

        The responses to these questions were analyzed and the commonalties were extracted and
transformed into specific “customer wants”.




                                                                                                    5
                        As shown in Table 2, each customer is ranked on a scale of 0 to 5 according to his or her
                 importance to the project. The wants are listed in order of importance to the customer from left to
                 right.


                                                               Table 2: Table of Customers’ Wants


                                               10          0.4155              0.2443               0.1436             0.0845            0.0497             0.0292            0.0172             0.0101               0.006
               Na me       Orga niza tion     W.O.I.    1st Wa nt            2nd Wa nt           3rd Wa nt          4th Wa nt         5th Wa nt          6th Wa nt         7th Wa nt          8th Wa nt            9th Wa nt
                                                       Insec t tra c king Mea sure the      Not d isturb ing       Tra c k insec ts
                           Entom olog ists/            over la rg e       p osition/ sp eed the insec t's          for a t lea st 10- Use existing      Prog ra m m ing   Minim a l p ost-   Wireless             Interc ha ng a b l
Keith Hop p er             Resea rc hers        5      a rea s.           of the insec t.   b eha vior.            20 m inutes.       eq uip m ent      w ith C or C++    p roc essing .     m ec ha nism .       e c a m era .
                                                       Mea sure the                            Mea sure und er Red uc ed
                           Entom olog ists/            p osition/ sp eed Minim a l p ost-      va rious        usa g e of
Mike Sm ith                Resea rc hers        3      of the insec t.   p roc essing .        c ond itions.   p estc id es.

                           Entom olog ists/            No resp onse a s
Jim Tum linson             Resea rc hers        0      of 10/ 21/ 98.

                           Entom olog ists/            No resp onse a s
Tom Ba ker                 Resea rc hers        0      of 10/ 21/ 98. e
                                                       Wa nts d evic
                                                       to b e               Not d isturb ing                     Insec t tra c king Mea sure the
                           Entom olog ists/            a d a p ta b le to   the insec t's      Ea sy to lea rn   over la rg e       p osition/ sp eed
Ric ha rd Turc otte        Resea rc hers        4      other insec ts.      b eha vior.        user interfa c e. a rea s.           of the insec t.
                           Ag ric ultura l             Low er p ric ed / Red uc ed             Insec ts
                           Ind ustry                   b etter q ua lity usa g e of            unha rm ful to
Mr. & Mrs. Fila sky        (Fa rm ers)          2      p rod uc e.       p estc id es.
                                                                         Red uc ed             environm ent
                           Ag ric ultura l             Hig her           usa g e of            Insec ts
                           Ind ustry                   p erc enta g e    p estic id es         unha rm ful to
Rex Mea rs                 (Fa rm ers)          2      c orn yield .     (low er c osts).      environm ente
                                                                                               Wa nts d evic
                                                       Red uc ed            Benefits of       to b e
                                                       usa g e of           d evic e m ust    a d a p ta b le to
Greg Fra ntz               Consum er            1      p estic id es        outw eig h c ost. other insec ts.

                                                       No resp onse a s
Austin Short               EPA w a re
                           Dela                 0      of 10/ 21/ 98.
                           Sta te
                           Dep a rtm ent               No resp onse a s
Rep resenta tive           of Ag ric ulture     0      of 10/ 21/ 98.
                                                       Low er p ric ed /                   Red uc ed
                           Sup erm a rket              b etter q ua lity                   usa g e of
Alic e Kline               Businesses           1      p rod uc e.       Im p rove sa les. p estic id es.
                                                       Red uc ed                               Insec ts
                           Environ-                    usa g e of           Energ y            unha rm ful to
Anthony Wexler             m enta lists         2      p estic id es        effic ient         environm ent




                          Dr. Hopper is sponsoring the project and will ultimately be using the final device;
                 therefore, he received the maximum rank. The next most important customers are Mike Smith
                 and Richard Turcotte. These two additional customers represent a group of entomologists that
                 will also be using the device; therefore, their wants become very important compared to the
                 others. One important note is that Mike Smith’s wants were not available until after the last
                 presentation. This chart shows the newly added wants. Among the categories of customers,
                 Mike Smith, Richard Turcotte, and Dr. Hopper have expressed a strong desire for increasing the
                 size of the tracking area while accurately measuring the position and speed of an insect.
                          The contact with the customers occurred primarily by two methods. The first relied only
                 on the initial response to the questionnaire. In this case, the assumption was made that wants
                 were expressed in order of descending importance to that customer. This method was applied to
                 all the customers that received a ranking of 2 or less. The second method relied upon detailed
                 interviews that followed the initial questionnaire. After the wants were extracted, each customer
                 was consulted as to which were more important. This process was repeated until the customer
                 was satisfied with the order. Each customer’s prioritized wants were exponentially weighted as
                 suggested by the SpreadSheet Design process.
                          The customer’s rank was multiplied by the weight of each individual want. Wherever
                 there was a repeated occurrence of a want, the results were added. This list of wants and


                                                                                                                                                                                                              6
   corresponding composite weights was sorted in decreasing order of weight to yield a list of
   prioritized wants. The original top 10 prioritized wants are listed below.

             1.        Track the insect over large area
             2.        Measure position and speed of the insect
             3.        Adaptability to other types of insects
             4.        Not to disturb the insect’s behavior
             5.        Easy-to-learn user interface
             6.        Ability to record for 10 - 20 minutes
             7.        Maximize use of existing equipment
             8.        Benefits must out-weight costs
             9.        Preferred language is C/C++
             10.       Minimize post-processing of data

            Since the previous list was presented, Mike Smith’s wants were added to the table. Of
   course, this caused a change in the overall importance of the top wants, so the customer wants list
   was reworked to reflect this change. The revised customer wants list is shown in Table 4.



                   Table 3: Revised Customers’ Wants List with Ranking Values

                                              Abbrevia-     Final   Customer Performance Weight of    Percentage
              Want Description
                                                tion       Ranking Importance    Goal    Importance     Weight
   Measure the position/speed of the            Postion      1       2.67         5         13.33       30.18
   insect.
        Insect tracking over large areas.        Area        2       2.42         4         9.66        21.87
Wants device to be adaptable to other            Adapt       3       1.81         3         5.42        12.26
insects. Minimal post-                         Post-Pro      4       0.82         5         4.09        9.27
            processing.
      Not disturbing the insect's              Behavior      5       0.72         5         3.59        8.13
      behavior.to learn user interface.
           Easy                                  User        6       0.57         4         2.30        5.20
    Track insects for at least 10-20             Time        7       0.42         4         1.69        3.83
    minutes.Use existing                       Existing      8       0.25         5         1.24        2.81
             equipment
     Benefits of device must outweigh cost.    Benefits      9       0.24         4         0.98        2.21
           Programming with C or                  C++        10      0.15         5         0.73        1.65
           C++ Energy efficient                 Energy       11      0.49         1         0.49        1.11
       Measure under various                  Conditions     12      0.43         1         0.43        0.98
       conditions.
             Interchangable                    Camera        13      0.03         4         0.12        0.27
             camera.
              Wireless                         Wireless      14      0.05         2         0.10        0.23
              mechanism.
          Reduced usage of pestcides.         Pesticides     15      2.62         0         0.00        0.00
     Lower priced / better quality produce.      Price       16      1.25         0         0.00        0.00
       Insects unharmful to                    Unharm        17      0.86         0         0.00        0.00
       environment
          Higher percentage corn                 Corn        18      0.83         0         0.00        0.00
          yield. Improve sales.                  Sales       19      0.24         0         0.00        0.00



            The most noticeable change in the list is that the top two wants changes places. With the
   addition of Mike Smith’s input, the position/speed of the insect has become a top priority. Mike
   Smith was also very much concerned with post processing. This is also reflected in the top wants
   list. Most of the other wants did not change their ranking with respect to one another.
            Of the list of wants extracted from the customers, some had little engineering relevance:
   for instance “Higher percentage corn yield” and “reduced use of pesticides”. A performance goal
   was set to specify the engineering importance to the project. The team set this goal on the basis
   of engineering judgement. High performance goals were awarded to “Measure the position/speed
   of the insect”, “Not disturbing the insects behavior”, “Programming with C or C++” and many
   others. Lowly ranked wants on the list will be fulfilled if the research conducted by Dr. Hopper is



                                                                                                                   7
successful. By this reasoning, fulfilling our top customers’ wants will hopefully fulfill the wants
of those with performance goals of zero.
        The customers, primarily Keith Hopper, provided several constraints. These constraints
along with those imposed by New Castle Design Associates are listed and explained below.
These items are nonnegotiable and must be satisfied.

1. The project must be complete by the end of school year.
      This time constraint is a class requirement.
2. The project expenses must remain within several thousand dollars.
      The customer has limited our funding our funding to $3500.
3. The system must cover a larger area than that of the existing system.
      The sponsor changed his mind.
4. Work area must occupy only Stearns Laboratory.
      No equipment may be removed from the customer’s laboratory.

Notice that the budget was constrained to $3500. Dr. Hopper reevaluated his financial
requirements, which was reflected in a change of the budget for this project. Also notice the
wording of the third constraint. Originally, the size of the tracking area had to exceed one meter
squared. Again, Dr. Hopper realized that the exact size was not as important as simply having a
larger area than that of the existing system. This change was also reflected in the list of wants.
         Benchmarking was used to develop a list of metrics to specify the wants in engineering
quantities. The existing system served as one of the primary source of metrics. For example,
“Frequency of Acquisition” and “Variation in Luminance” were concerns of the existing system,
while others came from several benchmark sources. The “Feedback Delay” and “Accuracy”
metrics are both used in the robotics industry to measure process time. Other metrics were
obvious such as “Size of the Tracking Area” and “Desired Programming Language”. Table 4
shows a list of the original metrics, in order of importance.

                                     Qua lity Metrics
                                     Size of tra c king a rea
                                     Tota l a c q uisition time
                                     Ad a p ta b ility
                                     Frequency of aquisistion
                                     Feedback delay
     Table 4: Original List of       Desired p rog ra mming la ng ua g e
     Quality Metrics                 Ac c ura c y of p osition mea surements
                                     Dista nc e from d evic e to ob jec t
                                     Amount of existing eq uip ment used
                                     Simp le? (Y/ N)
                                     X,Y c oord ina tes of ob jec t? (Y/ N)
                                     Gra in size (smoothness) of surfa c e
                                     Va ria nc e in lumina nc e
                                     Wireless link? (Y/ N)
                                     Power c onsump tion
                                     Disturb a nc e to na ture (Y/ N)



         The list in Figure 5 does not reflect the addition of Mike Smith’s wants, nor does it show
the relationship of the metrics back to the wants from which they were derived. To correctly



                                                                                                      8
demonstrate the validity of the iterative process used throughout this report, the relationship
between the wants and the metrics was redefined as shown in Table 5.


                                Abbrevia-     Final  Percentage
                                                                                          Metrics
                                  tion       Ranking   Weight

                                                                  X,Y c o o rd ina te s o f o b je c t? (Y/ N)
                                                                  Insta nta ne o us e rro r
                                 Postion        1       30.18
                                                                  Ac c um ula tio n o f e rro r
                                                                  Ma xim um sp e e d o f m o tio n
                                  Area          2       21.87     Size o f tra c king a re a
                                                                  Inse c t size ra ng e
                                  Adapt         3       12.26
                                                                  Ma xim um sp e e d o f m o tio n
                                                                  To ta l a c q uisitio n tim e
                                 Post-Pro       4       9.27      Frequency of aquisistion
                                                                  Feedback delay
                                                                  Dista nc e fro m d e vic e to o b je c t
Table 5: Derivation of           Behavior       5       8.13      Sm o o thne ss o f surfa c e

Metrics from Wants                                                Va ria tio n in lum ina nc e

                                  User          6       5.20      De sire d p ro g ra m m ing la ng ua g e
                                                                  GUI? (Y/ N)
                                                                  To ta l a c q uisitio n tim e
                                  Time          7       3.83      Frequency of aquisistion
                                                                  Feedback delay
                                 Existing       8       2.81      Am o unt o f e xisting e q uip m e nt use d
                                 Benefits       9       2.21      Savings divided by costs
                                   C++         10       1.65      Pro g ra m m ing la ng ua g e
                                 Energy        11       1.11      Po we r c o nsum p tio n
                                                                  Dista nc e fro m d e vic e to o b je c t
                                Conditions     12       0.98      Sm o o thne ss o f surfa c e
                                                                  Va ria tio n in lum ina nc e
                                 Camera        13       0.27      Interchangable? (Y/N)
                                 Wireless      14       0.23      Wire le ss link? (Y/ N)
                                Pesticides     15       0.00      N/A
                                  Price        16       0.00      N/A
                                 Unharm        17       0.00      N/A
                                  Corn         18       0.00      N/A
                                  Sales        19       0.00      N/A



        The metrics listed in Table 5 have not changed since Table 4 was constructed, however,
more specific metrics were used in place of the originally general metrics. The previously
“Accuracy of position measurements” was replaced with “Instantaneous error” and
“Accumulation of error” so that the static error from the camera and the accumulation of error
from the device could be analyzed separately. A metric was added to the user interface want;
“GUI? (Y/N)”, which represents Graphical User Interface. This was added because it is
commonly known that graphically based interactions with computers are intuitively easier to use
than command line interactions. By measuring whether or not a graphical user interface is used,
the simplicity of the user interface is directly measured. The “GUI? (Y/N)” metric is really an
extension of the “Desired programming language”, but will have definite relevance during the
programming stage of the project.
        The next step was to cross correlate each metric with every want. The purpose of this
exercise is to gain a better understanding of which metrics are most important to the overall
project. Table 6 shows the results of the cross-correlation process. Notice that the percentages of
how important the metrics are to the overall project do not vary significantly. The greatest
difference in importance is only about 5.5%.




                                                                                                                 9
                                  Quality Metrics                                    Total         %
                                  Size of tracking area                               33         7.86%
                                  Distance from device to object                      31         7.38%
                                  X,Y coordinates of object? (Y/N)                    29         6.90%
                                  savings/costs                                       27         6.43%
                                  Maximum speed of motion                             25         5.95%
                                  Frequency of acquisition                            25         5.95%
                                  Feedback delay                                      25         5.95%
                                  Variation in luminance                              24         5.71%
Table 6: Cross-Correlation of     Total acquisition time                              23         5.48%
Metrics to Wants                  Desired programming language                        23         5.48%
                                  Smoothness of surface                               22         5.24%
                                  Amount of existing equipment used                   20         4.76%
                                  Insect size range                                   19         4.52%
                                  Wireless link                                       18         4.29%
                                  Accumulation of error                               18         4.29%
                                  Instantaneous error                                 17         4.05%
                                  Interchangable camera                               17         4.05%
                                  Graphical user interface                            14         3.33%
                                  Power consumption                                   10         2.38%




      From Table 5, the top three wants contain the following metrics:

                                                                X, Y coordinates of the object
         Measure the position and speed of the insect           Instantaneous Error
         Track insects over a larger area                      Accumulation of Error
         Remain adaptable to other insects                     Maximum Speed of Motion
                                                               Size of the tracking area
                                                               Insect size range

      Intuitively, these seem to be the most important metrics, which satisfy the top wants. Table 6
      does not support this intuition. “Instantaneous Error” and “Accumulation of Error” fall near the
      bottom of the cross-correlated list. The reason for this difference is that the error metrics only
      correlate strongly with the X, Y position of the insect, while most of the other metrics correlate
      well with several of the wants. Using the SpreadSheet Design process, this problem could not be
      fixed. However, from an engineering point of view, there is clearly no reason why these metrics
      should fall low on the list. In order to remedy the situation, the “Instantaneous Error” and
      “Accumulation of Error” metrics were moved to fourth and fifth places manually. This change
      was reflected later in the concept evaluation.




                                                                                                      10
System Benchmarking

        With the problem well defined, the next important step became researching how others
were dealing with similar problems. From this perspective, perhaps the most important
benchmark is the existing setup because it has the most in common with any possible solution;
specifically, the location of an insect within a given area over time. From this central node, the
search expanded to the World Wide Web, the local library, and certain University of Delaware
laboratories. It was found that there is an abundance of material available on real-time electronic
imaging, sensing, pattern recognition, and motion control; all of which are aspects of our
problem. While not all of the material found has application to the research of insect behavior,
much of it has similarities that are applicable to our situation. Some important examples, with
references and brief descriptions, are listed below.

Vertical Spin Tunnel
NASA Langley Research Center
http://fatboy.larc.nasa.gov/spintunnel/jmm20ft.html
Topics: Image Processing, Pattern Recognition, Motion Control




     Figure 2: Automated
     Tracking System (NASA)




        In an effort to study the vertical spin and stall characteristics of aircraft, a specialized
upward flowing wind tunnel has been developed at the NASA Langley Research Center. A scale
model aircraft is placed within the tunnel and is allowed to move as physics dictates; this is to
simulate the conditions of a vertical spin. An “Automated Video Tracking System” is used to
follow the unpredictable motion of the model. The system consists of a zoom-able digital camera
mounted on a dual-axis pivot. The apparatus is controlled via a computer, which adjusts the two
angles and the zoom factor. An image of the device is shown in Figure 8.
        The researchers at Langley are not concerned with locating the object in space, but in
simply viewing it in focus so that it’s orientation with respect to the airflow can be seen. True 3-
D spatial location would require two such devices working in tandem, much like human sight.
        This type of system is probably too complicated for the needs of this project because our
budget does not allow for such a system (metric and constraint). Another reason is that our
problem is focussed on 2-D motion with interest in measuring the X and Y coordinates of the
insect (metric). Furthermore, we are not concerned with the orientation of the insect or such


                                                                                                  11
complicated data processing. Nevertheless, significant similarities exist among the two
situations: specifically the type of the control system needed to move the camera and some of the
variables that are involved.


Map Learning and High-Speed Navigation in RHINO
Book: Artificial Intelligence and Mobile Robots
Topics: Image Processing, Pattern Recognition, Sensing, and Motion Control




                  Figure 3: Autonomous
                  Robot “RHINO”




         “RHINO” is the name of an autonomous robot created by a team of specialists. It is
capable of independently mapping out the hallways, doorways, and rooms of an arbitrary
building. This is accomplished through the use several computers acting in parallel and
employing various control and decision schemes. The robot uses multiple sensor types, such as
stereo optics, sonar, wheel encoders, and laser sensors, in order to gain the necessary information
about its environment. Such a robot could be used to perform a multitude of useful tasks within
an office environment. A picture of RHINO is shown in Figure 3.
         While it may seem that such complexity is beyond the scope of this project, a similar
robot of simpler design might be used to track an insect over a very large area. A camera could
be attached that would view the insect while the robot would traverse over the surface and
measure its own position.




                                                                                                 12
Semi-Automated Film/Video System
Amerinex Applied Imaging
http://www.aai.com/AAI/SAFVR/SAFVR.html
Topics: Image Processing, Pattern Recognition




Figure 4: Semi-Automated
Film/Video System




         Amerinex Applied Imaging has developed software to track and record the motion of
rigid bodies. This software is currently in use by the US Navy to evaluate the landings of fighter
jets on aircraft carriers. Key features of the jet are located and tracked as the jet is coming in; this
allows better advice to be given to the pilot in real-time. The recorded images can then be
reviewed at a later time. This is of interest due to the image processing and data recording
capabilities of the software, a task, which our final solution will most likely perform. The main
user interface of the program is shown in Figure 4.

         The system benchmarks that were explored each possessed certain aspects that were
relevant to the task at hand, but often lacked practicality in the sense that they were either too
expensive, complicated, or not directly applicable without significant modification. In fact,
practically nothing was found pertaining specifically to the tracking of insect’s movements on the
scale necessary for this project. Our sponsor himself, during one particular interview, mentioned
that he only knew of one other person performing such research, and that their particular
experimental setup was extraordinarily expensive.


Functional Benchmarking

        The search for material pertaining to specific functions was split into several basic
categories in anticipation of the various aspects that would potentially be incorporated into a final
solution. These categories were sensors, image processing and control algorithms, and motion &
position control. These broad categories were derived, primarily, from observations on how the
system benchmarks functioned and taking from the best characteristics of each.

            Sensors

         One of the most critical elements of the existing setup is the digital camera and image
acquisition hardware. As previously mentioned, a major problem with this system is the
resolution of the camera, which limits the accuracy to which the insect’s location can be
determined. During the initial research, it was hoped that a digital camera could be found with a


                                                                                                      13
high enough resolution to solve the entire problem in a simple manner. Unfortunately, not much
information on ultra-high resolution CCD cameras was found. The highest resolution that was
readily available was about 1280x1024 pixels and within the $10K to $20K cost range; exceeding
our budget.
         Anticipating the need to measure distance accurately, particularly with the example of an
autonomous robot, a variety of sensors were investigated including laser reflection devices,
ultrasound, and RADAR. Evidence from benchmarking suggested that RADAR was out of the
question for our application. Too much equipment would be required to do so and the relative
accuracy proved to be exceedingly poor in comparison to other methods. Lasers and ultrasound,
however, showed promise. Lasers, particularly, could easily attain very high accuracy at a
reasonably high scanning rate (up to 10 kHz depending on cost).

           Image Processing and Control

         A significant functional benchmark with respect to image processing and object
recognition is a simple algorithm used within the Automated Tow Placement project at the Center
for Composite Materials. It is desired to locate a torch nozzle with a digital image taken with an
infrared camera. Because the nozzle is much hotter than its surroundings, its edge can be located
by scanning the entire picture for an area where the difference between neighboring pixels is
relatively high. This same algorithm could be used to locate the insect within a normal digital
picture by comparing the contrast of neighboring pixels.
         With regard to controlling output hardware, such as electric motors, there are a number of
control algorithms and schemes available that would perform adequately. One such example
would be a conventional PID (Proportional/Integral/Derivative) control scheme, which is
applicable to most scenarios involving one input and output. Two such controllers (one per axis)
might be needed for Cartesian motion.

           Motion & Position Control

        The need to move a camera raises the question of how it will be moved. A number of
rotational and linear actuator types were studied. Among those that were found viable for our
application are stepper motors, servos, and helical or rack and pinion linear-to-rotational motion
converters.


Derivation from critical functions

         In order to generate concepts, the critical functions of the proposed system needed to be
defined. The most critical function in this case is to accurately locate an insect within as large an
area as possible. In a typical scenario, a digital camera with a controllable position and/or
orientation would be used to accomplish this. Other types of sensors, however, might also be
used.
         Overall, concept generation was accomplished in a variety of different ways. Some
concepts were wild ideas that simply came to mind. Some resulted from talking with
experts/customers and others were derived from system and functional benchmarks that
performed the critical functions. Numerous variations were proposed for certain designs in an
attempt to circumvent their limitations with respect to the metrics and wants.
         A computerized data acquisition and controlling hardware would be an inherent property
of most concepts. Wherever appropriate it will be assumed that such a system is available and
will be implemented as part of the total system. Further discussion will therefore focus on
mechanical aspects of each concept.


                                                                                                   14
           Cartesian Track

        One of the first concepts that came to mind upon initial introduction to the problem was a
system capable of translating the position of the camera in the horizontal plane over the area to be
viewed. This two-axis motion could be achieved by a variety of linear actuators, although this
would limit the tracking area. The location of the insect within the picture could be used to
determine how to move the actuators such that the camera would remain over the target. Re-
focusing of the camera would not be necessary, as it would remain at a constant distance from the
target.

           Polar Track

         The Polar Track is essentially the same idea as the Cartesian Track, but operates within
polar coordinates rather than Cartesian coordinates. One rotational actuator would adjust the
angle while one linear actuator would adjust the radius. It was soon discovered that there are
inherent difficulties with such a design. Positional accuracy would vary drastically as a function
of the radius. Also, there would be a singularity in the motion of such a device when the radius
becomes zero; this could cause further difficulties.

           Pivoted Camera

         In both the Cartesian and Polar tracks the cameras orientation remains constant while its
position is controlled. Another idea is to keep the position fixed while varying the orientation of
the camera. The system would consist of two rotational actuators: one for X-axis and one for Y-
axis rotation. This might be mechanically simpler and smaller in overall size than a linearly
translating system, but it suffers from the need to constantly refocus the camera as the distance to
the insect changes. The focal length would be an additional variable needed to compute the
position.

           Moving Substrate

        Another idea is to keep the camera stationary while moving a substrate upon which the
bug would be located. Essentially, this concept is the conjugate of the Cartesian track. In other
words it is a glorified treadmill for the insect. Although this concept does not move the camera,
the insect can be held in view by moving the substrate.

           Rotating Bubble

        This concept is similar to the moving substrate. Imagine the substrate as a very large
transparent sphere. The insect would walk on the inside of the sphere, while a camera would be
fixed on one axis. Motors would rotate the sphere about the other two axes. This would enable
the insect to be tracked over a virtually infinite area. The sphere would continue to rotate to keep
the insect under the camera.

           Mobile Robot

        Moving the camera over an almost infinite area would seem to be a great concept.
Hence, the mobile robot concept. Having a robot to position the camera over the insect would




                                                                                                  15
fulfill the two most important functions that need to be satisfied. A robot would “carry” the
camera around on a surface keeping track of its global coordinates as it changes position.

           Wide angle lens with high-resolution camera

        Implementing the camera with a wide-angle lens will allow the camera to remain
stationary while observing a larger area. This system is very simple and the mechanics are trivial
(There are no moving parts), but the resolution of the camera would necessarily need to be very
high in order to maintain good positional accuracy.

           Sensing Surface

         The idea of using some alternative form of tracking device other than a camera seemed to
be a possible solution. A skin-like membrane might be used to “feel” the position of an insect as
it moves about on the surface. Without the use of a camera or moving parts, the system is
mechanically simple. Such a system was found to exist. This sensing surface is typically used
for grippers on the end of robotic arms. This unique sensor can be acquired, roughly, per unit
area as a thin, flexible membrane although it was found to be extremely expensive. In addition,
the force required to trigger the surface’s sensing capability was far above the weight of a typical
insect.


The Origin of Target Values

         Target values are typically viewed as being derived from system benchmarking in an
attempt to improve what is being done in a particular field. The pioneering nature of our
particular situation, however, requires special attention. Most of our target values arrived as very
specific requests from our main customers (Entomologists). These expectations probably
stemmed from familiarity with the capabilities of the previous tracking system. Each want that
was expressed was often directly accompanied by a target value. Target values that were
acquired in this fashion were then checked against functional and system benchmark performance
to ensure that they were within the realm of possibility.
         Most target values are based on “the worst case scenario” originating from loose
discussions with the Entomologists. The target value of having the nearest moving object at least
0.5 meters away from the insect, for instance, relates to the longest possible sight distance of the
insects that would be studied. This corresponds to the want that the insects’ behavior not be
affected. Another example is the +/- 1 millimeter accuracy target value, which was based on the
smallest insects that might be studied, namely Aphelinus Asychus. This relates to the desire to
measure speed and position. The target values are listed in Table 7 next to the corresponding
metrics.


Concept Selection & Evaluation against Metrics

         The need to determine the “best” concept became very apparent. SSD provided an
iterative way to determine the concept that best satisfied the metrics. The concepts were
compared to the best benchmark, which was the existing system. The concepts were given a
score that rated it to how well it satisfied each metric relative to how well the best benchmark
satisfied each particular metric. The concepts fell into 4 categories: “better than benchmark”,
“same as benchmark”, “worse than benchmark”, or “unknown relationship to benchmark”.



                                                                                                   16
            Different weights were assigned to different categories. Table 7 shows the results of the final
            comparison.



                                               Table 7: Concept Evaluation




Quality                                                            Exist   Cart   Polar   Pivot   Wide   Subs   Robot   Bubble   Sense
Metrics                               %        Target value
Size of tracking area               7.86%        1m x 1m            0.2     1       1       1      1      1       1       1        1
Distance from device to object      7.38%           0.5m            0.2    0.2     0.2      1      1     0.2     0.2     -1       -1
X,Y coordinates of object? (Y/N)    6.90%           Yes             0.2    0.2     -1      -1     0.2    0.2     0.2     0.2      -1
savings/costs                       6.43%            >1             0.2     1      0.2     -1      1     -1      0.2     -1       -1
Maximum speed of motion             5.95%         15mm/s            0.2     1      -1       1      0      1       1      -1        0
Frequency of acquisition            5.95%           1 Hz            0.2    0.2     0.2     0.2    0.2    0.2     0.2     0.2      -1
Feedback delay                      5.95%             0             0.2    -1      -1      -1     0.2    -1      -1      -1       0.2
Variation in luminance              5.71%           <5%             0.2    0.2     0.2     0.2    0.2    0.2     0.2     0.2      0.2
Total acquisition time              5.48%          20 min           0.2    0.2     0.2     0.2    -1     0.2     0.2     0.2      -1
Desired programming language        5.48%         C, C++            0.2     1       1       1      1      1       1       1        1
Smoothness of surface               5.24%         <0.5mm            0.2    0.2     0.2     0.2    0.2    -1      0.2     0.2      -1
Amount of existing equipment used   4.76%          100%             0.2    0.2     0.2     -1     -1     0.2     0.2     0.2      -1
Insect size range                   4.52%   1mm - 4cm (crawling)    0.2     1       1       1      1      1       1      0.2      -1
Wireless link                       4.29%          Maybe             0      0       0       0      0      0       0       0        0
Accumulation of error               4.29%        +/- 1mm            0.2    0.2     0.2     0.2    0.2    0.2     -1      0.2       1
Instantaneous error                 4.05%        +/- 1mm            0.2    0.2     0.2     0.2    -1     0.2     -1      0.2       1
Interchangable camera               4.05%           Yes             0.2    0.2     0.2     0.2    -1     0.2     0.2     0.2       0
Graphical user interface            3.33%           Yes             0.2     1       1       1      1      1       1       1        1
Power consumption                   2.38%      <500 Watts           0.2    -1      -1      -1     -1     -1      -1      -1       -1

Better than benchmark
Worse than benchmark
Same as benchmark
Unknown relationship
                     Score                           %             100%    188%   56%     79%     110%   88%    109%     -6%     -113%




                     This process allowed the concept to be rated as better or worse than the existing system.
            A percentage was given to each concept depending on how well it satisfied the metrics when
            compared to the benchmark. Once the process was finished the concept that satisfied the metrics
            the best was the basis for further comparison. The process was iterated several times until the
            same concept surfaced on top. During the first phase of the design process, the mobile robot
            continually surfaced on top.
                     Analysis of the mobile robot was the next step in the process. The mobile robot was
            capable of spanning a very large area (5 m squared or greater) with reasonable ease, but
            positional accuracy was difficult to attain and the necessary hardware was complex and
            expensive. The relative position of the robot could be calculated by keeping a record of the
            rotational motion of wheel encoders. The accumulation of error could be corrected by using a
            rotating laser to measure the distance and orientation with respect to two specialized reflective
            panels. As one would imagine, the necessary control and data processing algorithms for such a
            scenario would be notably complex and expensive. Nevertheless, a few sketches were made, and
            a preliminary parts list was made. This parts list is shown in Appendix B-1. The robot would
            cost approximately $3300 if a laser-positioning device were to be used. Keith Hopper was
            contacted and informed of the best concept and some of the problems associated with it. While
            discussing the issue with Dr. Hopper, several new issues arose. Mike Smith, one of Dr. Hopper’s
            colleges, also a customer, made a few suggestions to Dr. Hopper. Dr. Hopper took these
            suggestions very seriously and subsequently provided some new wants. Mr. Smith stressed the
            point that the system needed to be adaptable to other insects, reduce the amount of post
            processing, and that it may to be desirable to track in three dimensions in the future. He wanted
            to be able to place additional apparatuses under the camera.


                                                                                                                                 17
         These new wants proposed many problems. The process described so far needed to be
redone with these new wants added. The idea of a three-dimensional tracking system proposed
an almost entirely new project. After consulting with our project advisor, it was decided that
three-dimensional tracking was introduced too late. The solution to this problem was to design
the project to allow for the addition of a third dimension in the future. Still the entire process had
to be done over so that we could be sure that the robot was still the best concept.
         The process of evaluating the customers wants was performed again. The tedious task of
tabulating the most important metrics was regenerated and to no surprise changed. The system
now needed to be more accurate than the previous system. It also had to allow the possibility of
using additional apparatuses under the camera. The same concepts were compared to the best
benchmark, which was still the existing system. Iterations were performed in the same fashion as
previously described. The concept that continuously surfaced on top was different from the
previous analysis. The Cartesian track now superceded the mobile robot, which now fell into
third place. The wide angle lens, although second, violated the budget constraint. A bar graph, in
Figure 5, was plotted to show how well each concept satisfied the requirements of the project.
The data was normalized to the highest score.




                              Figure 5: Relative Concept Quality
                                        Concept Selection Table


120%




100%




 80%




 60%




 40%




 20%




  0%
        Exist     Cart      Polar     Pivot     Wide     Subs      Robot     Bubble    Sense




         The mobile robot was capable of spanning a very large area (5 m squared or greater) with
reasonable ease, but positional accuracy was difficult to attain and the necessary hardware was
more complex. The relative position of the robot could be calculated by keeping a record of the
rotational motion of the wheel encoders. However, there would be an enormous accumulation of
error that would be corrected by using a rotating laser to measure the distance and orientation
with respect to two specialized reflective panels. A laser distance-measuring device within the




                                                                                                   18
budget constraint does not meet the accuracy target value. As one would imagine, the necessary
control and data processing algorithms for such a scenario would be notably complex.
         The Cartesian tracking system, in contrast, could more easily provide the necessary
positional accuracy and repeatability. In addition, the control system and necessary hardware
were comparatively simple, consisting mainly of three stepper motors with controllers. The
tracking area, however, would be limited and fixed. We also considered the idea of designing a
Cartesian system that could be expanded modularly. Not much benefit would be gained from this
because a designated lab area will be used to house the device. If the device is built to this
maximum size, then there will be no need to make the device any smaller and it will still be able
to track over any area smaller than this.
         After discussing these fine points with the main customers, it was determined that the
Cartesian tracking system was more than appropriate for their particular situation. The large-area
capability of the robotic design was unnecessary for the range and type of insects that would be
studied at Stearns lab (beetles and small hornets). The robot design proved to be bulky when it
met the "distance from insect" target value of 0.5 m. The lab area was not set up for this type of
solution. At this point, the Cartesian track clearly stood out as the best choice. This choice was
backed by an SSD analysis, an engineering analysis, and customer approval. The system was
built to encompass a reasonably large, though, fixed area. Before extensive design of the
Cartesian Tracking System was completed, a rough parts list was written using the controller card
and motors researched during the design of the robot. A preliminary budget was devised for the
Cartesian Tracking System. The budget was presented to Dr. Hopper for approval. He agreed
with the proposed cost of $3,404. This preliminary cost estimate is located in Appendix B-1.
         It was soon discovered that a company, Industrial Devices Corporation, sells ready-made
precision Cartesian systems. This company produced the system used at CCM for use with
ultrasonic scanning. Industrial Devices Corporation was contacted via telephone and a rough
estimate for a system that would fulfill our particular needs was obtained. The price of the
system is no less than $13,100. This cost would violate our budget constraint, so an alternative
needed to be found. It was decided that a similar system could be designed and built in house that
would perform adequately and cost much less.


Preliminary Concept Development

Development Process
        There were 4 major steps to our development process. First, we had to develop the
mechanical motion system that would move the camera in a two dimensional plane. Second, we
needed to design and develop an image analysis methodology. Third, we had to couple the
motion system to the image analysis algorithm so that the device would actually "follow" the
insect. And finally, we had to develop a way to extract the positional information from the
system and record it into a file.

Development of Motion System
         Developing the motion system was by far the most complicated part of this project.
There were two areas that we focused on during development. First, the geometry and structure
were considered. We were initially concerned with beam deflection, torsion, and things of this
nature. Once we got an idea of what the structure would look like, we started considering the
positional features. As more parameters were thrown in to the process, it was refined. Early in
the design process, we decided to use a trolley system that moved on rack and pinion gears driven
by stepper motors. The stepper motors provide a simple and reliable way to position something
without a feedback device. These motors were chosen because they offer a low cost solution to
part of the motion control problem. The rack and pinion gears were the best way (given our


                                                                                               19
metrics) to accurately move the trolleys, while providing the repeatability needed for running a
series of experiments.
         The entire mechanical system was designed around the camera, so we started with what
we call the "x-trolley". Please refer to the Technical Handbook included after the conclusion for
a description of the parts. Assembly drawings are also included. The purpose of the x-trolley is
to carry the camera in the x-direction. The x-trolley has one motor driving a set of pinion gears,
and a roller blade wheel on each side. This large wheel is used as a guide wheel, which keeps the
trolley from sliding off the rack. Figure 6 shows the prototype x-trolley in the center of the
picture.




                                                      Figure 6: Prototype X-
                                                      trolley




          The x-trolley moves relative to another trolley (it actually rides upon another trolley),
which is called the y-trolley. The y-trolley has rack gears mounted on beams to support the x-
trolley. There are two motors, one on each side of the y-trolley, that work together to provide the
torque needed to move the system and to keep the y-trolley from binding. Similar to the x-
trolley, the y-trolley has guide wheels that align relative to the base of the machine. One of the
key features of the both trolleys is that the axially aligned pinions are restricted from rotation,
because they are linked with a shaft that spans the distance between the pinions. This further
prevents binding and twisting of the trolleys.



                                                Figure 7: Prototype Y-
                                                trolley




                                                                                                 20
Development of the Image Processing Algorithm
         The second most important feature of our device is the image analysis that takes place to
find the position of the insect within the frame of the camera. The original concept was based on
the existing system. First, a black and white digital image is captured. Then, because the insect
is much darker than the background, we used the relative values of each pixel to discern the
insect. A key feature of the image processor is that it takes the discrete derivative of the image.
By isolating the regions with large local contrast, the center of the insect is computed. The
refined image processing technique we used is explained hereafter. First, the image is captured.
Then the algorithm locates the regions of large changes in pixel value. Finally, these locations
are averaged to find the centroid of the insect in the image. Please refer to the Technical
Handbook for a complete explanation of the image analysis.

Development of the Motion Control Algorithm
         The next development occurred with respect to motion control. Once we were successful
in determining the location of the insect in the image, we needed a methodology for instructing
the motion control system to move. We started with the following guidelines: keep the insect in
the middle of the screen., make proportional responses to the insect's movement , and don't move
the camera if it’s not necessary. The first idea was to have an action circle. The center of this
imaginary circle is placed at the center of the camera screen. When the insect walks outside of
this circle, then the system reacts and the motors move to return the insect to the center of the
circle. The second idea was to have an imaginary cone, which is also centered in the camera
screen. When the insect moves away from the axis of the cone, the reaction speed and
acceleration of the motors are proportionally adjusted as the insect moves further away. The
slope of this cone is adjustable and is referred to as the sensitivity. Before either of these ideas
was tried, a very simple algorithm was implemented. The camera would measure how far off the
insect was from the center of the screen. Then the motors would move camera such that the
insect was back in the center. This worked well for a first try at a control system. The vibrations
from the step moves caused the camera image to shake. This, intern, caused oscillations
whenever the insect was around the center of the screen. There were two problems that needed to
be addressed. First, the shaking had to be eliminated. Second, the control system did not need to
be active near the center of the screen. The solution was to combine the two original ideas. The
action circle kept the control system from oscillating, and the sensitivity cone, reduced the
shaking by instituting a ramp function instead of a step function. Please refer to the Technical
Handbook for a more complete explanation of the control theory.

Development of the Insect Position Algorithm
        With the first three problems solved, insect position algorithm was easy to devise. The
absolute position of the insect was computed by adding the insect's screen position components to
the corresponding position components of the trolleys relative to the base. In other words, the
camera “x” value was added to the trolley “x” value to get an absolute insect “x” position. The
same calculation was done for the y direction. The Technical Handbook also discusses the
positional computations in more detail.


Calculations

         In addition to selecting and designing parts of the tracking system, there were several
major concerns that needed to be addressed with calculations. First, the maximum angular
deflection of the shafts needed to be calculated. Appendix C-1 shows this calculation. Using a
shaft diameter of 0.5 in. for the y-trolley yields a maximum angular deflection of 0.21 degrees at
a maximum motor torque of 80 in-oz. The y-trolley shaft yields a greater angular deflection than


                                                                                                 21
the x-trolley shaft (due to its length). This deflection translates into a linear movement of
0.00183 in. Since the rack has a linear pitch distance of 0.0982 in., the y-trolley pinions will
rotate 1.86% of the pitch distance with respect to each other. This calculation insures that the
rack will not bind if one of the pinions gets stuck at maximum torque.
         Another important calculation is the static shear on the shafts, because the shafts will be
supporting the weight of the trolleys. With a safety factor of 3 for dynamic considerations, the
shafts experience a maximum shear stress of 1.53% of the yield strength in shear. This
calculation is in Appendix C-2.
         It was determined that the stepper motor selection of an 83 in-oz holding torque was
more than adequate for our application. Through estimating the mass of the x trolley at 5.1 kg,
the mass of the y trolley at 29.6 kg, and a maximum possible required acceleration of 1 m/s2 in
either direction. We arrived at a minimum overall necessary torque of 27 in-oz. per motor, which
is well within our limitations. Three identical motors were chosen (even though the x trolley does
not need as large a motor as the y trolley), because the power supply, motor controllers, and other
stepper motor hardware are different for differently sized motors. In this way, using one type of
stepper motor minimizes the cost of the motor hardware. This calculation is located in Appendix
C-3.
         The torsional shear of the shafts was computed using a maximum possible torque of 83
in-oz and a minimum possible diameter of 0.25 in. The maximum torsional shear is
approximately 5.02% of the yield strength in shear. This calculation is located in Appendix C-2.
         One other important issue that was considered was deflection of the beams. The
maximum deflection of the base beams is 0.00214 in. This was calculated using very generous
estimations. Similarly, the maximum deflection of the y-trolley beams was calculated to be
0.00186 in. Again, these calculations are located in Appendix C-3 and C-4.
         The positional resolution of the system is 0.2 mm using the selected stepper motor and
pinions. The chosen racks and the pinions provide 0.21 mm maximum accumulation of error
over the full range of motion. This calculation is located in Appendix C-4.
         The tooth strength and the backlash are also well within reasonable limits by at least a
factor of 10. Please refer to bottom Appendix C-5 for both of these calculations.




                                                                                                 22
Proposed Concept Verification

       The Cartesian tracking system, as designed above, satisfies all of the top metrics. This is
shown in the target value comparison chart, Table 8.


                          Table 8: Target Value Comparison




             Quality Metrics                Target Value         Cartesian Track
    Size of tracking area                     1m x 1m             1.14m x 0.978m
    Distance from device to object               0.5m                   0.5m
    X,Y coordinates of object? (Y/N)             Yes                    Yes
    savings/costs                                 >1                     2.9
    Maximum speed of motion                    15mm/s                  28 m/s
    Frequency of acquisition                     1 Hz                  <1 Hz
    Feedback delay                                 0                 Unknown
    Variation in luminance                       <5%                    <5%
    Total acquisition time                      20 min                 20 min
    Desired programming language               C, C++                     C
    Smoothness of surface                      <0.5mm              Not Applicable
    Amount of existing equipment used           100%                   100%
    Insect size range                    1mm - 4cm (crawling)   1mm - 4cm (crawling)
    Wireless link                               Maybe                    No
    Accumulation of error                     +/- 1mm               +/- 0.21mm
    Instantaneous error                       +/- 1mm                 +/- 1mm
    Interchangable camera                        Yes                    Yes
    Graphical user interface                     Yes                    Yes
    Power consumption                       <500 Watts               Unknown




There are several things to note about this table. First, the savings to cost ratio was calculated
using the cost of the IDC prefabricated x-y motion system. Second, the maximum speed of
motion is purely theoretical based on the characteristics of the motors. This calculation is shown
in Appendix C-2 under Motor Power Requirements. The feedback delay cannot be accurately
determined until the system is assembled. Considering the generous acceleration and maximum
speed of the trolleys, this should not be a problem. The “Smoothness of surface” metric does not
apply to the Cartesian tracking system because the substrate will be selected by the researcher
using the equipment.


Demonstration of Proposed Concept

        In order to demonstrate that the best concept works, three models were built. Each model
is capable of proving at least one major function of our concept. The first model is considered the
most critical. It is a position acquisition program capable of measuring the position of a small
object within the frame of a digital camera. A small (8” by 4”) sheet of paper containing a black
dot (approximately the size of a 1-mm insect) is moved around beneath the camera. As the dot


                                                                                                23
position changes, the coordinates of the dot are stored in a computer file. In addition to the
coordinates, a plot of the insect’s path appears on the screen, showing the physical meaning of the
stored coordinates. We feel that this demonstration proves that the position acquisition function,
dealing specifically with the image analysis of the camera, will work. As the position of the dot
is acquired from the camera, it will have two purposes: to determine the movement of the camera,
and to record the coordinates in a file. This model shows that our most important metric will be
satisfied. The equipment used for this model is pictured in Figure 1 at the beginning of this
report.
         The second model is a wooden representation of the full-scale assembly. This model
demonstrates the physical relationship between the individual parts. It is very helpful in
visualizing how the device is going to work and appear. This is pictured below in Figure 8.




                                                   Figure 8: Wooden Model




         The third model is a Lego model of the rack and pinion system shown in Figure 9.
Interestingly, some very important physical observations surfaced from testing this model. One
of the potential problems foreseen throughout our design process was the binding of the rack and
pinion gears. First, we built a Lego model where the pinions were free to rotate with respect to
the other pinions. We purposefully tried to bind the gears by applying forces far away from the
center of mass of the trolley. Even though it was very difficult to actually bind the gears, we did
notice that there was substantial trolley rotation. This could very well affect our positional
accuracy. To solve this problem, the axially aligned pinions were linked with shafts. The front
pinions were not linked to the back pinions. Between two axially aligned pinions, the only
allowable relative angular displacement was due to the lack of torsional rigidity in the shaft.
Again, we purposefully tried to bind the gears by applying force far away from the center of mass
of the trolley. We found that the trolley rotation was undetectable to our naked senses and the
trolley movement was smoother. In fact, the improvement was so significant that our doubts
about the validity of our solution vanished. Furthermore, we removed one of the shafts to test if it
was necessary. We did notice a slight decline in performance. We feel that the additional cost of
a second shaft is justifiable by the improved performance of the model.
The Lego model demonstrates several things. First, it proves that a rack and pinion system will
work for precisely positioning the camera. It also demonstrates that using a shaft to link the
axially aligned pinions in our device will prevent binding of the rack and pinion sets. A long shaft
could perform as well as a short shaft as long as their allowable angular deflections are the same.
Therefore, a large tracking area is possible, because the trolleys will perform similarly to the



                                                                                                 24
Lego trolley when the shafts are designed for the same angular deflection characteristics. The
Lego model is shown below in Figure 9.




       Figure 9: Lego Model




Finalized Design for Prototype Construction

         Before fabrication was started, the prototype design was changed. First, the stepper
motors initially budgeted were replace with a stepper motor package that offers the same
performance at a lower price. Several features were also added to parts such as more specific
fastener descriptions, modified hole dimensions for bolts, and modified hole locations. Legs were
also incorporated into the design. Other than slight changes in the features of the parts, the
finalized prototype incorporated the original drawings and parts list submitted in November of
1998. The drawing package in Appendix A (Technical Handbook) is a complete engineering
description of the parts that need to be manufactured. The replacement parts list included in the
Technical Handbook is a complete guide to the parts that need to be purchased in order to
assemble the complete system.


Prototype Fabrication

         Beginning on February 15, 1999 at 7:30 am the first part was machined in the shop.
Shop work continued until 2:00pm, April 9, 1999, when the last parts were cleaned for assembly.
Appendix D shows a copy of the original machine shop fabrication worksheet. In total, 212.5
hours were spent fabricating parts in the machine shop. According to one of the shop directors,
the rate for shop work in this area is about $45 per hour. At this rate, it would cost approximately
$9585 to contract the machining out to an independent firm. During fabrication in the shop, one
design problem arose with respect to the machinability of materials. The y-trolley shafts that link
the axially aligned pinion gears together were selected as hardened steel. Unfortunately, we
realized too late that hardened steel is not machinable with the tools in our shop. The shafts were
exchanged for shafts that did not need to be machined. The reason for choosing hardened
stainless steel was for its stiffness, corrosion resistance, and prefabricated mechanical properties.
There were also a few mistakes made on parts that required remaking them from scratch. This



                                                                                                   25
added about $20 material costs and about 24 hours of machine time. (Both insignificant in the
scope of the fabrication effort.)


Prototype Assembly

         Once all of the parts were completed, the system was assembled in approximately 25
hours using only a hex wrench set, a flat blade screw driver, a 3/8 inch socket wrench, a
measuring tape, and three custom tools. The first custom tool is a rack tooth alignment setting
block. The second custom tool is a parallel bar for aligning the racks with respect to their
mounting beams. Finally, the third custom tool is a short shaft used to align the roller blade
wheel grooves on the bottom of the beams on both the base and the y-trolley. Complete
assembly, disassembly, and partial disassembly storage procedures are located in the Technical
Handbook (Appendix A). Mechanical assembly is only part of the prototype assembly process.
At this point, the mechanics and the electronics/computer merged into one machine. This
required making a wiring harness that coupled the computer to the mechanical parts. Again, the
“assembly” of the electronic components with the mechanical components is discussed in the
Technical Handbook (Appendix A).


Prototype Testing

         Several tests were needed to verify that all of our specifications had been met. Below is a
list of materials that were needed to test the device.

        Ink Pen
        Several Sheets of White Paper
        Meter Stick
        Calculator
        Masking Tape
        Lego Gear Set With Motor
        Variable Voltage Power Supply
        Stopwatch

         The preliminary test was called the “Control Algorithm Test”. This test did not target
any specific metric, however, it was necessary to pass before any other test could be done. First,
an ink dot that was 1mm in diameter was placed in the center of a sheet of white paper and moved
beneath the camera. The control algorithm should respond to the movements and display
positional information on the computer screen. If the camera attempts to return the ink dot to the
center of the camera screen and the positional readout appears to be in the ballpark of the actual
movements, then the control algorithm is functioning properly. This test was only intended to
provide a “go” or “no go” for the following test procedures. The result of this test did show that
the assembled system did function well enough for practical testing.
         The first test in the test procedure, “Test 1: Size of Tracking Area” was meant to arrive at
a value for the “size of the tracking area” metric. The test was very simple to implement. First,
the trolleys were jogged to one corner of the base and the camera was completely zoomed out.
While the camera was operating, a small dot on a piece of paper, similar to the one used in the
preliminary test, was moved to the extreme corner of the camera screen. The paper was taped to
the tracking surface. The same procedure was used at the corresponding diagonal corner. Then,
a meter stick was used to measure the distance between the dots. If the tracking area’s
dimensions meet or exceed the dimensions specified by the target value, then the device satisfied


                                                                                                  26
this requirement. For this metric, the target value was 1 square meter. The results of our test
show that the device can track over a 0.96 square meter area. Although this number is below the
1 square meter target, it is well within the tolerance given by the customer. In fact, the customer
was surprised at the amount of space device required.
         The second test, “Test 2: Distance From Device to Insect”, was meant to arrive at a value
for the “distance from object to device” metric. This test was also very simple to implement. The
distance from the lowest point or surface of the moving parts of the device (which happened to be
the lens of the camera) to the substrate was measured using a meter stick. If the distance from the
device to the surface was greater than or equal to the target value, then the device satisfied this
requirement. The target for this metric was 0.5 meters. After verifying the distance several
times, the value of 0.505 meters was recorded. This test passed.
         The third test, called “Test 3 and Test 12: Static Object Position” was performed next.
Two ink dots (1 millimeter in diameter and spaced 800mm apart) were placed on the tracking
surface. The trolleys were jogged back and forth between the dots 10 times. At each dot, the
trolleys were stopped and the computer program was run to collect the static positional data for
60 seconds. For the “Static Object Position Test”, the 60 seconds of data collected at each stop
was analyzed to find the range in which a data point is guaranteed to fall. The ranges from each
stop were compared and the largest range was considered the uncertainty in the static positional
measurement. In this case, the target value was +/- 1mm. Our tests show an instantaneous
uncertainty of +/- 0.23mm. This is very reasonable considering that the camera was at minimum
zoom. At minimum zoom, there are fewer pixels to describe a millimeter in the image, so the
accuracy decreases. For example, when zoomed out completely, the 200x88-pixel image is
41mm square. This means that the camera can discern parts of an image down to 41/88mm,
which is 0.47mm or +/- 0.235mm. (This is very close to our physical measurements.) At full
zoom, the 200x88-pixel is 7.5mm square. This means that the camera can discern parts of the
image down to 7.5/88mm, which is 0.085mm or +/- 0.0425mm. Either way, the uncertainty in
the static positional measurements is well within the +/- 1mm limit.
         The fourth test, “Test 4: Maximum Speed of Motion” dealt with the metric “maximum
speed of motion”. This test was the most difficult to implement. A Lego winch, which contains a
DC motor powered by a variable voltage supply, was constructed using Lego gears to reduce the
speed of the motor. The variable voltage power supply allows for fine adjustments of the speed.
The Lego winch was wrapped with a piece of string, which was attached to a piece of paper with
a 1mm-dot. First, the speed at which the paper moved was correlated with the voltage that was
applied to the motor. The speed was measured using a stopwatch and a meter stick. Finally, the
test was implemented by moving the paper at a known speed underneath the camera, while the
tracking system was attempting to follow the dot. The direction chosen for the test was the y-
direction. The y-trolley is definitely the weak link in the system as far a acceleration is
concerned, because of its large mass. The maximum tracking speed is the maximum speed that
the dot moves while the tracking system can still keep up with the dot. If the system can track the
dot at speeds greater than or equal to the target value, then the device satisfies this requirement.
The target value for this metric was originally 15mm/s, but it has since been reduced to 5mm/s.
Nevertheless, the results of the test show that our device will track objects that move in excess of
27mm/s. Furthermore, there is a parameter in the program that controls the sensitivity of the
tracking system. We found that the maximum speed of motion is dependent on the sensitivity
level set in the program. At the end of the Technical Handbook (Appendix E), there is a table of
recommended sensitivity values for various insect speeds that will ensure that the system will
keep up with the insect.
         The fifth test, “Test 5: Frequency of Acquisition” simply measured the time delay
between images. This test corresponds to the metric “frequency of acquisition”, which has a
target value of 1Hz. This test was implemented by calculating the maximum time delay between
samples in all of the tracking data files. The frequency is just the inverse of this calculated time.


                                                                                                  27
The frequency of acquisition depended on the sensitivity and speed of motion during the test. We
implemented a test where an ant was tracked and the minimum frequency of acquisition was
recorded. The ant moved at an average speed of 20mm/s, and the worst case frequency of
acquisition was 2Hz. The program is also set up to ignore frequencies above 5Hz, so that the data
file does not contain unnecessary data. The results of this test were successful as the worst case
exceeded the target value of 1Hz.
          The next test, “Test 6: Variation in Luminance”, was a measure of the contrast over the
entire tracking area. This test corresponds to the “variation in luminance” metric. First, the
camera was moved to the center of the device. An image was captured and the maximum and
minimum pixel values were recorded. This procedure was repeated with the camera positioned at
the four corners of the tracking area. The overall maximum and minimum pixel values were
recorded and their difference was computed. The variation in luminance is this difference
divided by the maximum possible pixel value range (which is 0 to 255). In order to pass this test,
the variation in luminance must be in the range of the target value of 5% or less. Our test showed
a variation of 14.88%. We did not meet the target value. Originally, the metric was modeled
after the existing system, which used an image-processing algorithm that only considered
absolute pixel values. The image-processing algorithm in our system considers relative pixel
value changes, so subtle changes in pixel value for example, 14.88%, do not effect the insect
position calculation. We have eliminated the need for this metric entirely, by designing an
algorithm that compensates for variations in luminance automatically. Therefore, nothing was
changed to try and meet this target value.
          The seventh test, called “Test 7: Total Acquisition Time”, was designed to measure the
metric “total acquisition time”. In order to satisfy this test, the system has to successfully track an
insect for at least 20 minutes. We have tracked insects for 30 and 40 minutes. Basically, the
system will track until the data file becomes so large, that it fills the hard drive on the computer.
This is around 12 hours (based on the density of a tracking file and the amount of hard drive
space left on the computer ~20 MB). The size of the data file is approximately 1.6 MB per hour.
If infinite hard drive space were available, the tracking time would theoretically approach
infinity. For practical purposes, however, the official test time was documented as 25.3 minutes.
The test was stopped early, after satisfying the metric.
          The eighth test, named “Test 8: Desired Programming Language”, is very simple. If the
programming language is written in C or C++ then this metric is satisfied. Our program was
written in C.
          The next test, “Test 9: Amount of Existing Equipment”, is also very simple. The target
value is 100% of the existing equipment. We used all of the equipment. Therefore, we satisfied
this metric.
          The tenth test, “Test 10: Insect Size Range”, refers to the metric “insect size range”. This
test was implemented by attempting to track object that ranged from 1 to 40 millimeters. We
were successful at tracking objects that ranged in size from 1 to 55 millimeters.
          The eleventh test, “Test 11: Accumulation of Error”, refers to the metric “accumulation
of error”. The target value was +/- 1 millimeter. This test uses the data from test 3 to find the
error in measuring the distance between the two fixed dots. The maximum and minimum values
that the program computes over the ten tests will result in the maximum possible error in the
distance measurement. If this value is within the range of the +/- 1mm, then this requirement is
satisfied. Our test showed that the accumulation of error was around 1.98mm or +/- 0.99mm.
This is very close to our target value of +/- 1mm. The test involved a total travel distance of
8000mm. We have determined that this is the worst case error that will occur over 8000mm,
because the camera was zoomed out completely. Therefore, we are satisfied that we have met the
requirements for this metric. (Please read about “Test 3” for a continuation of the explanation.)




                                                                                                    28
         “Test 13: Interchangeable Camera” is a test that measures the “interchangeable camera”
metric. If it is possible to readily mount another camera to the x-trolley, then test thirteen results
in a value of “yes”, and this requirement is satisfied.
         The next test, “Test 14: User Friendly Interface” measures the friendliness of the user
interface. This metric used to be “graphical user interface”, but this metric could not be met due
to complication with writing a Windows based program. Basically, the motor controller card is
not designed to operate in Windows. We also learned that Windows based programs are not
always easier to use. Therefore, a simple DOS based program was written that satisfies the want
of being user friendly, without haven being written with a Windows format. Three independent
people were asked to run the program. They all agreed that it was user friendly. Therefore, this
requirement was satisfied.
         A simple test, “Test 15: Power Consumption”, measures the amount of power used by
tracking system. Excluding the computer itself, the system only requires about 200W to operate.
This is well within the target value of 500W. This test satisfied the metric “power consumption”.
         The sixteenth test, “Test 16: Feedback Delay” corresponds to the metric “feedback
delay”, which has a target value of 0.5s. The feedback delay is the time delay between the
camera position acquisition cycle and the corrective motion cycle. By inserting a system clock
function call after the image processing algorithm and another after the position correction
algorithm this will be measured. The difference between these two locations in the program is
the feedback delay. We were obtaining measurements of about 50ms. This requirement is
satisfied.
         Finally, the last test was implemented, “Test 17: Insect Tracking”. This test was a final
check to make sure that everything was working correctly. An insect was placed on the substrate
and tracked using the device. Everything worked as expected, therefore, the device can track an
insect. (This assumes that all of the other tests provide satisfactory results.) The results of the 12
most important tests are compiled here in Table 9. Note that the Accumulation of Error and
Instantaneous error results assume a standard deviation of 3 Sigma. The Total Acquisition time is
an arbitrary value from one of the tests. The system can track for much longer periods. The other
results are one-time measurements.


                                    Table 9: Test Results




Metric Rank          Metric Correlation            Target Value       Test Results       Pass/Fail
      1            Size of Tracking Area   1 square meter 0.96 square meter                pass
      2         Distance: Device to Object    0.5 Meter      0.505 Meter                   pass
      3               X-Y Coordinates            yes             yes                       pass
      4            Accumulation of Error       +/- 1mm       +/- 0.99mm                    pass
      5             Instantaneous Error        +/- 1mm       +/- 0.23mm                    pass
      6                Savings/Cost                1             0.77                      pass
      7         Maximum Speed of Motion        5 mm/s         >27 mm/s                     pass
      8          Frequency of Acquisition        1 Hz           2-5 Hz                     pass
      9               Feedback Delay            <0.5 s          0.07 s                     pass
     10           Variation in Luminance         <5%           14.88%                       fail
     11            Total Acquisition Time      >20 min         25.3 min                    pass
     12       Desired Programming Language    C or C++            C                        pass




                                                                                                     29
Modifications to Finalized Design

There were a few modifications to the original design. First, limit switches were added to the
trolleys. These added a cost of only about $20, making them the most cost effective addition to
the system. The limit switches allow the safe operation of the tracking system near its area limits.
The limit switches also provide a reliable and repeatable way to calibrate the coordinate system of
the moving trolleys. The second modification was to add support bearings to the y-trolley
following shaft (please refer to the Technical Handbook for a description of the mechanical
terms.) The shaft was causing unwanted vibrations during movement, so three bearings were
added to help support the shaft. The following pictures, Figure 10 and Figure 11, show the
addition of these two features.




                          Figure 10: Limit                             Figure 11: Bearing
                          Switches                                     Shaft Supports




Recommendations for Improvement

There are a few recommendations of improvement for future fabrication of this device. First, it is
recommended that the all sides of the beams, which support the racks, be machined. We did not
have the resources in our shop to continuously machine all of the parts. Instead, we had to rely
on shims to level the parts that attached to these beams. Second, we recommend using
servomotors and encoders in place of the stepper motors. The stepper motors are noisy and their
motion is not that smooth. Even though they fulfill the design requirements, the machine would
be more versatile with servomotors.


Expenditures and Budget

         Initially, the project budget was around $5000. The flexibility of the budget has changed
over time, however. When the robot cost estimate (see Appendix B-1) was presented to Dr.
Hopper on November 16; he stressed the significance of a low cost solution. The robot estimate
was $3,246.80. When pricing the Cartesian Tracking system, special attention was given to a
detailed component price list. It was apparent from Dr. Hopper that the estimate had to be more
specific and more work had to be done to extract maximum value from the components.




                                                                                                 30
         As expected, the Cartesian tracking system shared many of the components of the robot.
Both systems use the same control hardware including the stepping motors, the power-supply, the
controller card, and software libraries. In fact, the cost estimate of the two systems is not very
different. There is one major component in each system that is expensive. Interestingly, both of
the expensive components are the devices for finding the position of the camera with respect to an
absolute coordinate system. In the case of the robot, the major expense is a distance finding laser.
In the case of the Cartesian tracking system, the major expense it the precision racks.
         As of November 24 1998, the price estimate for the Cartesian tracking system is
$3,349.28. Dr. Hopper then placed a budget limit of $3500 on the project. Please refer to
Appendix B-2 for the estimated expenditures. This price accurately reflects the cost of the
materials and parts for constructing the Cartesian tracking system except for shipping costs and
the costs of bolts, washers, and nuts. The small hardware cost is approximated as $50. Shipping
will vary depending on the packaging, the weight of the product and the distance it has to travel.
There is $100 allocated to unpredictable expenses.
         An actual expenditure table for the model is located in Appendix B-3. It covers the cost
of the wooden model that was built as part of the demonstration. Dr. Hopper agreed to fully
reimburse us for these encountered costs of $43.93. The final expense sheet is located in
Appendix B-4



Final Prototype

Figure 12 shows a picture of the integrated system. The control computer is located on the left of
the picture, while the mechanical system is located in the center of the picture.




                                                                     Figure 12: Final
                                                                     Prototype




                                                                                                 31
Conclusion

         Any development process begins with the need for something that doesn’t exist. Our
sponsor’s requirements, in addition to those of other customers, were clearly expressed and
defined from the start.
         The tracking area has been expanded to be approximately one square meter while
maintaining less that one millimeter of positional uncertainty at near-real-time acquisition. The
experimental setup also remains adaptable to a variety of insects, encompassing a wide range of
possible speeds and sizes. A relatively user-friendly interface has been created to facilitate the
researcher in conducting experiments.
         Other potential design concepts, in contrast to the Cartesian system, would have suffered
from inherent design limitations ranging from excessive cost and complexity to poor accuracy.
The Mobile Robot, for instance, would have required an array of extra sensors and much more
complicated control software.
          As demonstrated through repeated testing of the prototype, it has been shown that the
original requirements have been fundamentally satisfied and, in some cases, exceeded. By it’s
sheer simplicity, the design has proven to be extremely robust, cost-effective, and adaptable to a
multitude of experimental situations.




                                                                                                32
Appendix A




                   I.T.
             Insect Video Tracking Device



              Technical
               Handbook
                         Spring 1999

                       Justin L. Combs
                     Raymond M. Foulk IV
                      Ryan S. McDonough
                      George H. Sapna III




                                            33
                                                                  Table of Contents


Introduction . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   1-1
     Background . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   1-1
     Using the Handbook   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   1-1
     Safety . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   1-1

Tutorial . . . . . . . . . . . . . . .                    .   .   .   .   .   .   .   2-1
     Power Up Procedure . . . . . . . .                   .   .   .   .   .   .   .   2-1
     Preparing the System for Tracking                    .   .   .   .   .   .   .   2-1
     Using the I.T. Control Panel . . .                   .   .   .   .   .   .   .   2-2
     Selecting Tracking Parameters . .                    .   .   .   .   .   .   .   2-4
     Calibrating the Coordinate System                    .   .   .   .   .   .   .   2-6
     Jogging the Tracking System . . .                    .   .   .   .   .   .   .   2-7
     Centering the Tracking System . .                    .   .   .   .   .   .   .   2-8
     Tracking an Insect . . . . . . . .                   .   .   .   .   .   .   .   2-9
     Understanding the Data File . . .                    .   .   .   .   .   .   .   2-10

Understanding the Software . . . . . . .                      .   .   .   .   .   .   3-1
     Introduction to I.T. Control Program                     .   .   .   .   .   .   3-1
     Initializing the Epix Video Card . .                     .   .   .   .   .   .   3-1
     Interpreting the Image . . . . . . .                     .   .   .   .   .   .   3-2
     Explanation of the Control Theory .                      .   .   .   .   .   .   3-3
     Troubleshooting the Software . . . .                     .   .   .   .   .   .   3-5

Understanding the Mechanical Hardware . . . . .                           .   .   .   4-1
     Introduction to the Mechanics . . . . . .                            .   .   .   4-1
     Assembly and Disassembly of the Mechanics                            .   .   .   4-5
     How to Store the Tracking Table . . . . .                            .   .   .   4-9
     Recommended Maintenance . . . . . . . . .                            .   .   .   4-10
     Troubleshooting the Mechanics . . . . . .                            .   .   .   4-10

I.T. Control Panel Source     Code        .   .   .   .   .   .   .   .   .   .   .   5-1
Replacement Parts List .      . . .       .   .   .   .   .   .   .   .   .   .   .   6-1
Specifications . . . . .      . . .       .   .   .   .   .   .   .   .   .   .   .   7-1
Tracking Parameter Charts     . . .       .   .   .   .   .   .   .   .   .   .   .   8-1




                                                                                            34
                                           Introduction   1-1


Background

The I.T. (Insect Tracking) System was developed by NCDA
Team 5 mechanical engineers as a means for observing and
recording the path of slow-moving, small insects over a
large free area. The device was created for use in a small
research laboratory. Careful attention was given to
accuracy, low cost, and simplicity.


Using the Handbook

The I.T. Technical Handbook is divided into 8 sections that
outline the important topics describing the operation of
the I.T. System. Please read the entire Introduction (1-1)
and Tutorial (2-1) sections carefully, as they include the
information that is rudimentary to the user’s
understanding.

Throughout this handbook and in the I.T. Control Panel
program, there are symbols used to denote the type of
information contained within a statement. Exclamation
marks (!) are used to alert the reader of warnings,
potential hazards, and errors. Bullets () are used to
bring attention to a statement.


Safety

As with most mechanical devices, a potential hazard exists
to users and observers during operation of the I.T.
Tracking System. The following regulations should be
practiced during operation of this device:

!   Stand clear of the tracking table whenever the system
    is being used.

!   Do not touch the racks or pinions during operation.
    (Please refer to section 4-1 for an explanation of the
    terminology.)




                                                             35
                                          Introduction     1-2


!   Keep foreign objects clear of the racks, pinions, and
    trolleys.

!   Do not modify the trolleys by attaching an unevenly
    distributed load. The motors are not powerful enough
    to handle additional payloads greater than 10 lbs.

!   Do not tamper with the limit switches. These switches
    protect the I.T. Tracking System from becoming damaged
    in the event of a user mistake or a control system
    malfunction.

!   Do not operate the I.T. Control Panel without
    preparing the system for tracking. (Please refer to
    section 2-1 for more details.)

!   Do not attempt to lift, tilt, or handle the tracking
    system without first properly disassembling it.
    Please refer to “Assembly and Disassembly of the
    Mechanics” for further details.

!   Do not disconnect any part of the electronic wiring
    while the system is in operation. All three of the
    stepper motors must always be connected during
    operation or damage may occur to the motion system.




Notice: These safety precautions are for the operator’s
protection in addition to preventing possible hardware
failure. Under no circumstances will the manufacturer
(NCDA Team 5) be held responsible for any injuries incurred
by operator negligence. By using this tracking system, the
operator and any bystanders assume full individual
responsibility.




                                                            36
                                               Tutorial     2-1


Power Up Procedure

The recommended start-up sequence is as follows.

   Ensure that the stepper motor and camera power
    supplies are plugged in.
   Turn on camera monitor, stepper motor power supply,
    and the computer.


Preparing the System for Tracking

In addition to power-up, the following steps are required
prior to operating the tracking system.

   Clear debris from the racks and trolley paths.

   Carefully move each of the trolleys back and forth by
    hand through approximately 10 centimeters to make sure
    the gears engage smoothly. Some “whining” may be
    evident when the trolleys are moved relatively
    quickly; this is normal. If mechanical problems are
    encountered, please refer to “Troubleshooting the
    Mechanics”.

   Remove the lens cap from the camera.

   Prepare the substrate (surface that the insect will be
    traversing) for the experiment.




                                                             37
                                               Tutorial   2-2


Using the I.T. Control Panel

For performance reasons, it is recommended that the program
be operated in a DOS environment. It may be operated under
Windows, although other programs may interfere with
operation of the tracking software. One important note is
that the MS-DOS window within Windows 95 is not considered
a DOS environment. To run the program from DOS, the
computer must be rebooted to DOS mode. This is done by
choosing “Command Prompt Only” at startup.

Getting Started

After booting the computer, either double click on the
“I.T. Control Panel” shortcut in Windows 95 or run “IT.EXE”
in DOS. If you are using Windows 95, the I.T. Control
Panel should appear in an MS-DOS shell window.




Figure 1.         Initialization Screen




                                                           38
                                               Tutorial   2-3


The first screen shows the initialization results as the
program checks the hardware and file system. The user will
notice that some lines are preceded with bullets, while
others may be preceded with exclamation marks. (Please
read section 1-1 for more information about line symbols.)
Quickly look through the initialization list for any
exclamation marks. These denote warnings and errors. If
there are any warnings or errors, please refer to the
“Troubleshooting the Software” section.

After initialization the program will wait for confirmation
to continue. If there are no serious errors, the program
will then display the main menu. If significant problems
occur, then the program will exit.




Figure 2.      Main Menu


To navigate through the menus, type the number
corresponding to the option you wish to choose. Under
every menu, the escape key corresponds to exiting the menu
(or returning to the main menu). When the program is in



                                                             39
                                               Tutorial     2-4


the main menu, the escape key will exit the program
entirely.

When the program is waiting for the user to input
information, an input arrow (->), will appear after a
statement. Follow the instructions on the screen at each
input prompt.

The following sections correspond to options displayed in
the main menu of the I.T. Control Panel software.


Selecting Tracking Parameters

Pressing “1” from within the main menu will select the
“edit I.T. parameters” menu. The screen will update with a
list of the parameter settings. This menu allows the user
to change the constants that adjust the tracking system’s
functions. These settings should be recorded as part of
the experimental conditions.




Figure 3.      Tracking Parameter Menu



                                                             40
                                                Tutorial   2-5


Options “1” and “2” within the parameters menu correspond
to the path and file name that specifies where the
experimental data will be written. Simply press the
numeral key to select the option and then input any changes
that are desired. Use 16 bit formatting (8 characters or
less, use tilde for long names, etc.). Also, Make sure
that the path ends with a backslash “\”. Here is an
example:

    path:                “c:\mydocu~1\tests\”
    file name:           “test1.log”

Options “3” and “4” set the size of the camera screen in
millimeters. This is an important feature as it relates to
the software’s ability to locate the absolute position of
the insect. Incorrect values will result in erroneous
experimental data. The following procedure explains how to
measure these values.

   Manually adjust the contrast, zoom, and focus using
    the dials located on the camera (Refer to the Pulnix
    camera manual for more information). Once a
    satisfactory setting is achieved, use masking tape or
    some other means to secure the dials from rotating.
    An easy way to do this is to run a length of tape down
    the side of the lens.

!   If the dials are not secured, then vibrations from the
    stepper motors will cause the camera to shift out of
    focus during tracking.

   Use a calibration grid in increments of millimeters or
    a thin metal 100-millimeter ruler to measure the
    screen height and width that are visible to the
    camera. Place the calibration grid or ruler on the
    tracking surface under the camera and read the
    distances off the camera monitor in millimeters.
    Enter these numbers into the parameter menu. The
    screen width is the horizontal dimension on the
    monitor, while the screen height is the vertical
    dimension on the monitor.

Option “5” is the tracking sensitivity. This determines
how quickly the system will react to insect movements. In


                                                            41
most cases, a sensitivity of around 5 will be sufficient.
Please refer to the “Tracking Parameters Chart” for
recommended values. A complete explanation of the tracking
sensitivity is given in the “Understanding the Software”
chapter.

Option “6” is the action circle diameter. This is a
unitless number describing the zone in which the insect may
reside without the mechanical system responding. The zone
is an imaginary circle centered within the camera screen.
This circle will be tangent to the sides of the smallest
screen dimension with a value of 1 and will decrease to a
point in the middle of the screen as the value approaches
0. In most cases, a value of 0.25 to 0.33 is sufficient.

Option “7” is the jog speed. This is the speed at which
the calibration, centering, and jogging movements will
occur in millimeters per second. Lower speeds are
recommended (20-40 mm/s). At much higher speeds, motor
“skipping” may occur, resulting in significant positional
errors.

Option “8” is the motor power level setting. Choosing a
power level of 2 limits the motor power to 60% capacity.
It is recommended that this setting be used as it prevents
excessive whining and vibration. Power level 3 provides
100% available motor power. Only use this setting in the
event of tracking a fast insect (speeds greater than 25
mm/s).

Pressing the <ESC> key will return the program to the main
menu.




                                                             42
                                               Tutorial     2-6


Calibrating the Coordinate System

Pressing “2” from within the main menu will select the
“automatic coordinate calibration” menu. The screen will
update with instructions for running the calibration
procedure. This procedure allows the mechanical system to
automatically synchronize with the software by taking
advantage of the limit switches’ functionality. The
trolleys will move to the extremities of their range, thus
finding the machine’s origin and maximum range of motion.
This procedure should be executed before every experiment
in order to ensure maximum repeatability of results.




Figure 4.      Automatic Coordinate Calibration Procedure




                                                             43
                                               Tutorial   2-7


Jogging the Tracking System

From the main menu, press “3” to select the “manual
jogging” menu. The screen will update with instructions
for jogging the trolleys. Use the arrow keys to move the
camera to a desired position and then press <ESC> to return
to the main menu.




Figure 5.      Manual Jogging Procedure




                                                           44
                                              Tutorial   2-8


Centering the Tracking System

Option “4” from within the main menu provides a convenient
way of automatically moving the camera to the center of
it’s movement range. It is expected that this will be a
common operation as the center is a good place to begin
most experiments. Simply follow the instructions displayed
on the screen.




Figure 6.      Centering Procedure




                                                          45
                                              Tutorial   2-9


Tracking an Insect

Option “5” from within the main menu will begin the actual
tracking procedure. After selecting this option, a warning
related to the log file path and name may appear. This
simply means that the file already exists and will be
overwritten if the path and/or name are not changed from
the present values. Pressing <ESC> at this point is the
last opportunity to do so before beginning an experiment.

!   If the program finds that the log file (this is the
    file to which the tracking data is written) already
    exists, it will warn the user. This warning means
    that the log file will be overwritten if the log file
    name is not changed.




Figure 7.      Tracking Procedure




                                                            46
                                                          Tutorial   2-10


The message “press any key to begin tracking” will then
appear. Once the insect is clearly in view of the camera,
press a key and tracking will begin. Iteration number,
time, and “x” and “y” positional information will be
written to the experimental log file. If the camera looses
sight of the insect at any point during an experimental
run, it will automatically begin tracking whatever is in
view due to the nature of the image-processing algorithm.
Press <ESC> at any time during tracking to close the log
file and return to the main menu.


Understanding the Data File

The log file created by the tracking procedure consists of
four numeric columns separated by tabs. The first column
is the control loop iteration number. Each iteration
corresponds to the capture of an image, image analysis, and
possibly a motion control decision. The second column is
the time (in seconds) when the image was captured relative
to the beginning of the tracking sequence. The third and
fourth columns, respectively, are the absolute “x” and “y”
coordinates (in millimeters) of the insect during the time
that the image was captured. A sample data file is shown
below.

            iter[#] time[sec] xpos[mm]       ypos[mm]

                  1         0   254.616186   880.742846
                  2      0.49   254.277959   880.633354
                  3      0.71   254.455232   880.627354
                  4      0.99    254.31205   880.753354
                  5      1.26    254.31205   880.753354
                  6      1.54   254.414323   880.663354
                  7      1.81   254.741595   880.795354
                  8      2.08   254.741595   880.795354
                  9      2.36   254.789323   880.648354
                 10      2.63   254.741595   880.795354
                 11      2.91   254.741595   880.795354
                 12      3.18   254.741595   880.795354
                 13      3.46   254.789323   880.648354
                 14      3.68   254.741595   880.795354
                 15      3.95   254.789323   880.648354



                                                                       47
                             Understanding the Software   3-1


Introduction to I.T. Control Program

The I.T. Control Panel software has been written in
standard “C” and is largely specific to the PC
(DOS/Windows95&98) due to the inclusion of certain function
libraries. Mostly important are those specific to the 4MEG
VIDEO card and the Quickstep controller card. The
following header files must be included in order to utilize
these libraries:

#include "m4obj.h"       /* 4MEG functions */
#include "is_cm.h"       /* InStep PC functions   */

The header file “m4obj.h” contains numerous sub-includes,
all of which must be present during compile in order to
avoid fatal errors. The libraries “M4OBB5DM.LIB” and
“IS_CMBL.LIB” were used in conjunction with the Borland 5.0
C/C++ compiler, although it’s conceivable that another
compiler might be used along with different libraries.
Although modifying the current version of the program may
cause this user’s manual to become irrelevant or
inapplicable, compilation would be accomplished with
following command:

BCC –mm IT.C M4OBB5DM.LIB IS_CMBL.LIB

The necessary libraries and header files must be present in
the %INCLUDE% environment variable for this to work
properly. It is recommended that copies of them be placed
in the working directory to insure success. Please refer
to the respective manuals for either of these
hardware/software packages for further details.


Initializing the Epix Video Card

Within the IT.C program, the EPIX 4MEG VIDEO card is
initialized using the pxd_m4open() function call. Before
this can be done successfully however, the system must be
configured properly. Above all, the PC’s BIOS should be
set to reserve the memory range 0D000 through 0DFFF
(hexadecimal) for ISA devices as this is the range used by
the 4MEG VIDEO card. If this is not done, the 4MEG card


                                                             48
                             Understanding the Software    3-2


will not work. Next, the 4MEG driver must be loaded into
memory at startup. This is accomplished by adding the
following lines to the CONFIG.SYS file in the root
directory:

DEVICE=C:\<path>\EPIX4M.SYS -Q 0x3 -R 0x280 -M 0xD0000

The arguments “-Q 0x3” force the card to occupy IRQ 3.
This should be consistent with the jumper setting on the
4MEG VIDEO card. The arguments “-R 0x280” force the IO
memory to be hexadecimal 280 and the “-M 0xD000” force the
Card to occupy the “D” memory range. In addition to this,
the AUTOEXEC.BAT file should contain the following line:

SET 4MEGVIDEO= -Q 0x3 -R 0x280 -M 0xD0000

This sets an environment variable that is used by the 4mobj
libraries. The arguments shown here are parallel to those
used in CONFIG.SYS.

After initializing the card via pxd_m4open(), pxd_close()
should always be called before a program exits. Failure to
do so either through a mistake in the source code or an
execution error will result in trashed (un-deallocated)
memory blocks both within the PC and the card itself. If
this occurs, it is recommended that the computer be
restarted.


Interpreting the Image

Once the 4MEG VIDEO card has been initialized, the
functions pxd_iopen() and pxd_io() can be used to acquire
an image in the form of a linear array of unsigned
characters. An unsigned character has a range from 0 to
255 (decimal). Greater depth is possible through more
advanced function calls, although it is not currently used
within IT.C. Please refer to the 4MOBJ manual for more
information pertaining to the available library functions.




                                                             49
                             Understanding the Software   3-3


In the interest of explaining the theory behind how the
IT.C program operates, we now turn from the specifics of
the card functionality and libraries to the tracking
algorithm itself. The image array, although linear within
computer memory, is addressed as a two-dimensional array
according to the number of pixels (bytes) per horizontal
line.

Another two-dimensional array is then created with the same
number of “pixels” in the x-dimension as the original
image, but with one less in the y-direction. This array is
filled with the differences in neighboring pixels in the x-
direction. This array is essentially a discrete map of the
partial derivative, with respect to x, of the image and is
referred to as the “x-differential image” within the source
code. An analogous array, possibly called the “y-
differential image”, could have been created and used, but
is unnecessary and would have required more CPU time per
iteration. The principal behind taking the discrete
derivative of the image is to filter out gradual changes in
lighting (due to shadows, uneven lighting, etc...) and to
isolate large, or rapid changes; such as those cause by an
insect or some other clearly defined object.

The x-differential image is then scanned for it’s maximum
and minimum values, these two values are average and the
result becomes the “threshold pixel difference”. The
locations of all “pixels” within the differential image
that are greater in magnitude than this threshold value are
averaged. Under normal circumstances, this will be the
approximate center of the object, relative to the camera’s
view, of the being tracked. It is important to note that
the screen coordinates within the program are inconsistent
with the coordinates of the mechanical system. There is a
specific location within the source code where the
coordinates are “fixed” so that they are consistent with
the mechanical system.


Explanation of the Control Theory

The major principle behind controlling the operation of the
mechanics is to attempt to keep an insect located near the
center of the camera view. For obvious reasons, this is


                                                            50
                             Understanding the Software     3-4


the simplest way to ensure that the insect is not lost by
the system. Exactly how this goal is achieved is up to the
designer of the algorithm.

The I.T. System uses a method, developed by the authors,
for commanding the mechanical device to move based on the
relative position of an insect in the field of view of the
camera. This method involves using an action radius that
is simply the radius of an imaginary circle, which is
placed at the center of the camera field of view. Whenever
the insect is within this “circle”, the control system will
not move the camera to re-center the insect in the field of
view. The reason behind this is to prevent unnecessary
movement of the mechanical system. When the insect does
leave the action radius, however, action must be taken to
return the insect to the center of the camera field of
view. The stepper motors give an appropriate response,
which is proportional to the distance from the center of
the camera field of view. Specifically, the sensitivity (a
setting under the “parameters menu” in the I.T. Control
Panel) is the gain of the motor speed. When the
sensitivity is high, the speed will increase by a factor of
the sensitivity value for every millimeter the insect is
away from the center of the camera field of view.

                                   Peak Speed




     Sensitivity                          Screen
     (Slope)                              Coordinates


           Action
           Circle




In order to be efficient (with time) in moving the camera
while not causing jerky motion, a velocity ramp up to a
maximum speed and then a velocity ramp down (meaning all
accelerated movement) is used instead of a simple step
response. Therefore, the acceleration rate is also
dependent on the sensitivity value.


                                                             51
                                   Understanding the Software       3-5


Troubleshooting the Software

Below is a troubleshooting guide to the software written
for the tracking system.


                        Software Troubleshooting Guide
                                            Error      Attempt to Solve
             Problem Description
                                            Code First Second Third Fourth
!   could not find "IT.PAR"                   0     A      -      -     -
!   could not create default "IT.par"         1     B      C      -     -
!   could not initialize quick step card      2     D      E      F     -
!   not enough memory for 4MEG VIDEO          3     G      H      -     -
!   could not initialize 4MEG VIDEO card      4     I      E      J     H
!   initialization failed                     -     K      -      -     -




A     If the program cannot find the parameter file, it will
      attempt to create one for itself. This is not a
      problem. This message simply alerts the user that
      something happened to original parameter file and that
      the default settings will be used in the new parameter
      file. The default parameter file name is “it.par”.

B     If the program cannot create the default “it.par”
      parameter file, then program execution will resume
      using default values. It is not advisable operate the
      program under this condition. If running Windows,
      close all other programs. Try to execute the software
      again.

C     Delete the “it.par” file from the directory which
      contains the “it.exe” file.

D     The software could not initialize the QuickStep card
      after multiple attempts. If running Windows, exit
      Windows and attempt to run the program in DOS mode.

E     Open the computer and make sure all cards are seated
      properly and that there is good electrical contact
      with all connections.

F     Refer to the QuickStep manual for troubleshooting.


                                                                      52
G   There is not enough free memory to initialize the 4MEG
    VIDEO card. Try rebooting the computer and attempt to
    run the software in DOS mode.

H   Refer to the Epix 4MEG VIDEO manual for
    troubleshooting.

I   Make sure the PC’s BIOS is set as described in
    “Initializing the Epix Video Card” within this
    handbook.

J   Windows may not recognize the 4MEG VIDEO card. Try
    rebooting the computer and attempt to run the software
    in DOS mode.

K   Fatal errors occurred during the initialization
    procedure, preventing further execution of the
    program. Refer to the proper error code number.




                                                         53
                  Understanding the Mechanical Hardware   4-1


Introduction to the Mechanics

The tracking table consists of three major components.
They are called the x-trolley, the y-trolley, and the base.
These components are shown in the full assembly below.


                CARTESIAN TRACKING SYSTEM




                                                           54
                        Understanding the Mechanical Hardware             4-2


   The x-trolley consists of the camera, stepper motor, guide
   wheels, pinions, shaft, limit switches, screws, and custom
   aluminum parts. These parts are labeled on the picture
   below.


                 X-trolley
                 Back Plate                     Camera
                              Camera            Beam


                                                              Stainless
       Stepper                                                Steel
       Motor                                                  Bearing

                                                             X-trolley
X-trolley                                                    Following
Drive Shaft                                                  Shaft



                                                          Pinion

    Support                                                              X-trolley
    Beam                                                                 Motor
                                                                         Plate

    Limit                                          Guide
    Switches                                       Wheel


       Screws                                     Guide
                                                  Wheel
                                                  Bolt

                                       Camera




                                                                           55
                                 Understanding the Mechanical Hardware            4-3


         The y-trolley consists of two stepper motors, racks, guide
   CARTESIAN TRACKING SYSTEM
         wheel groove sections, guide wheels, pinions, shafts, limit
         switches, screws, and custom aluminum parts. These parts
         are labeled on the picture below.


                                                                    Limit
                                                                    Switch      Y-trolley
                                                                    Stop        Assembly
                                                                                Brackets




                                                      Stepper
                                                      Motor



                            Stainless
                            Steel Rack
             Y-trolley
             Drive Shaft

                Screws
                                                                                   Y-trolley
          Stepper                                                                  Following
          Motor                                                                    Shaft




                                                                             Guide Wheel
                                                                             Groove
                                                        X-trolley            Section



                                           Limit       Y Beam
Pinion                                     Switches


 Y-trolley
 Plate

                            Stainless
                            Steel
   Guide                    Bearing
   Wheel            Guide
   Bolt             Wheel



                                                                                    56
                      Understanding the Mechanical Hardware   4-4


The base consists of 4 aluminum beams, 4 legs, stainless
steel racks, guide wheel groove sections, screws, and limit
stops. These parts are labeled on the picture below.




          Base Beams
         BASE ASSEMBLY


                                                       Stainless
                                                       Steel Racks




                                    Leg


                  Screws

                             Guide Wheel
                             Groove Sections




    Limit Stops                                  Leg




                                                                57
                   Understanding the Mechanical Hardware   4-5


Assembly and Disassembly of the Tracking Table

!     It is not recommended to disassemble the tracking
      table. However, under some circumstances, disassembly
      and re-assembly may be required.

There are 7 tools needed to assemble the tracking table.
Three of the tools are not standard. They are the Rack
Tooth Setting Block, the Rack Alignment Block, and the
Groove Alignment Shaft. The remaining tools include a
medium flat-blade screwdriver, a 3/8” socket wrench, a hex
wrench set, and a tape measure.

Base Assembly

1.    Layout top and bottom base beams along with left and
      right base beams upside down corresponding to the base
      assembly drawing.
2.    Line up legs at each corner with the corresponding
      holes.
3.    Insert machine screws and nuts and tighten. Repeat
      for all four legs.
4.    Invert base so that the legs support it.
5.    Approximately align the gear racks on the left and
      right base beams and start the screws. Use washers.
6.    On one side of the base, use the Rack Alignment Block
      to space the first rack from the inner side of the
      base beam. Tighten the screws to secure the rack
      section.
7.    Use the Rack Tooth Alignment Block to align the first
      rack to the second. Simultaneously use the Rack
      Alignment Block to space the second rack from the
      inner side of the base beam. While holding the two
      alignment blocks securely in place, tighten the screws
      to secure the second rack section.
8.    Repeat step 7 for the remaining racks on the initial
      side of the base.
9.    Use a tape measure to align the racks on the other
      side of the base with the first side. Make sure that
      outer edge of gear rack is 48” from outer edge of
      opposing gear rack.
10.   Apply step 7 to the other side of the base.




                                                             58
                     Understanding the Mechanical Hardware   4-6


11.   Approximately align the Guide Rail Groove sections and
      start the screws.
12.   Align the inner side of the first groove section to
      the inner side of the base.
13.   Tighten the screws to secure the first groove section.
14.   Place the Groove Alignment Shaft across the gap
      between the first and second guide rail grooves to
      align the second groove with the first.
15.   Tighten the screws to secure the second groove
      section.
16.   Repeat steps 14 and 15 for the remaining groove
      sections on this side of the base.
17.   Repeat steps 13 through 15 to the other side of the
      base.
18.   Install limit switch stops to one side of the base.
      Remove the nuts from the inner set of screws, which
      hold the legs in place. Insert the limit switch stops
      and thread the nuts back on to the screws.


Y-Trolley Assembly


The following picture shows an exploded assembly of the y-
trolley.




                     Understanding the Mechanical Hardware   4-7



                                                              59
                   Understanding the Mechanical Hardware   4-7


1.    Press fit the stainless steel bearings into the y-
      trolley plates, and the shaft supports brackets.
2.    Attach the to y-trolley plates to the y-trolley
      assembly brackets.
3.    Mount the racks and groove sections as explained in
      steps 5 through 17 of the base assembly procedure.
      The distance between the opposing outer edges of the
      gear racks should be 7”.
4.    Install limit switch stop brackets to the ends of one
      of the y-beams as described in step 18 of the base
      assembly procedure.
5.    Attach shaft support brackets.
6.    Mount the stepper motors by inserting the motor into
      the hole in the y-trolley plates with the wire facing
      inward and the motor mounting plate on the outer
      surface of the y-trolley plate.
7.    Slide the y-trolley support shaft through the y-plate
      and support bracket bearings.
8.    Slide the support shaft spacers over each end of
      support shaft (after it has been inserted into the y-
      plates) and slide a pinion gear over each end of the
      support shaft sandwiching the spacer against the y-
      plates.
9.    Tighten the pinion set screws to temporarily secure
      the pinions to the shaft.
10.   Attach the y-trolley drive shaft to the inner shafts
      of the stepper motors by using the shaft couplings.
11.   Slide a pinion over the end of each of the outer motor
      shafts. Temporarily secure the pinions by tightening
      the pinion set screws.
12.   Install the limit switches to y-trolley plate such
      that the switches face outward.




                                                            60
                     Understanding the Mechanical Hardware   4-8


X-Trolley Assembly

The following picture shows an exploded assembly of the y-
trolley.




1.   Press fit the stainless steel bearings into the x-
     trolley plates.
2.   Attach the x-trolley side plates to the camera and
     support beams as shown in assembly drawing.
3.   Mount the stepper motor in the manner described in
     step 6 of the y-trolley assembly.
4.   Connect the x-trolley drive shaft to inner shaft of
     the stepper motor with a shaft coupling.
5.   Slide support shaft through the other set of bearings.
6.   Slide spacers and then pinions over the ends of the
     shafts as described by steps 8 and 9.
7.   Mount the limit switches to x-trolley plate such that
     the switches face outward.




                                                              61
                   Understanding the Mechanical Hardware   4-9



System Level Assembly

1.    Lift the y-trolley and position it such that y-trolley
      pinions line up with the base racks.
2.    Move the y-trolley to one end of the base.
3.    Loosen the setscrews on all of the y-trolley pinions.
      Slightly nudge the trolley until it is square to the
      end of the base.
4.    Tighten the pinion set screws to secure them to the
      shafts.
5.    Mount the guide wheels to y-trolley so that contact
      occurs between wheel and groove section. It may be
      necessary to add or remove washers between the guide
      wheels and the y-trolley plates such that there is
      alignment with the grooves.
6.    Position x-trolley so that pinion gears also line up
      with gear racks. Apply steps 2 through 4 to the x-
      trolley with respect to the y-trolley.
7.    Mount the guide wheels to the x-trolley as described
      in step 5.
8.    Mount camera to camera beam.
9.    Attach the limit switch, motor power supply, and
      camera to the wiring harness.
10.   Clamp legs to table using L-shaped brackets and c-
      clamps.


How to Store the Tracking Table

In most cases, only partial disassembly is required for
storage. It is recommended that the x-trolley remains
attached to the y-trolley.

1.    Remove the y-trolley guide wheels and lift the x-
      trolley/y-trolley subassembly off the base.
2.    Replace the guide wheels on the y-trolley plates.
3.    Store the x-trolley/y-trolley subassembly in the
      horizontal position while supporting the y-trolley
      plates such that the y-trolley racks remain in the
      horizontal plane. This will prevent damage.
4.    Remove the legs from the base (only if necessary) and
      wrap the beams that contain the racks and grooves in
      paper.


                                                              62
                    Understanding the Mechanical Hardware            4-10


To reassemble the tracking table after storage, follow the
assembly procedure in this manual. When only the y-trolley
is disengaged from the base, only a partial system level
assembly is needed to reassemble the tracking table.


Recommended Maintenance

The following section describes some maintenance tips for
proper care of the I.T. system.

    Use pressurized air to blow debris and dirt from the
     rack gears once a month.

    Tighten the guide wheels against the v-shaped groove
     whenever the gears appear to be self-disengaging.
     (Self-disengagement is usually accompanied by a
     grinding noise during operation.)

    Perform the automatic coordinate calibration procedure
     before every tracking procedure.


Troubleshooting the Mechanics

Below is a troubleshooting guide to the mechanical aspects
of the tracking system.


                     Mechanical Troubleshooting Guide
                                         Attempt to Solve the Problem
        Problem Description
                                    First Second   Third   Fourth   Fifth
       Device does not move           A      B        E       I       -
Camera does not provide picture       A      C        D       -       -
Motors make noise, but no motion      A      B        C       F       I
   Camera vibrates excessively        G      H        I       J       -
 Subtrate vibrates excessively        J      G        I       -       -
 Gears grind/whine excessively        I      G        B       -       -




A    Check the initialization screen for warnings and
     errors. If a warning or error exists, refer to the
     “Troubleshooting the Software” section.


                                                                        63
                Understanding the Mechanical Hardware    4-11


B   Make sure the stepper motor power supply is turned on
    and the connections to the back of the power supply
    are making contact. Also check the stepper motor
    controller connector at the back of the computer.
    Ensure that it is seated properly. Affirm that the
    motors are plugged into the appropriate connectors at
    the tracking table and within the wiring harness near
    the back of the computer.

C   Remove the lens cap from the camera. Make sure that
    the camera power supply is plugged in and that the
    monitor is turned on.

D   Check the contacts of the BNC connectors at the
    camera, the back of the computer, and the back of the
    monitor.

E   Make sure the limit switches are   functioning properly.
    If a switch is stuck in the “on”   position, the
    tracking system will not move in   the direction
    corresponding to the stuck limit   switch.

F   Try changing the motor power level setting to “3”
    under the tracking parameters menu.

G   Try reducing the tracking sensitivity to a value below
    “5”.

H   Try increasing the screen size by zooming out from the
    insect.

I   Move the trolleys by hand. If the gears do not engage
    smoothly, then reassemble the racks, grooves and guide
    wheels (refer to the “Assembly and Disassembly of the
    Tracking Table”).

J   Check the padding under the legs. Make sure that
    there is adequate vibration suppression and also make
    sure that the legs are firmly clamped to a fixed
    object.




                                                            64
                                                  I.T. Control Panel Source Code   5-1


/**********************************/
/* I.T. CONTROL PANEL source code */
/* last modified: 4/25/1999       */
/*                                */
/* developed by NCDA team 5       */
/*                                */
/* Justin Combs                   */
/* Raymond Foulk                  */
/* Ryan McDonough                 */
/* George Sapna                   */
/**********************************/

/************************/
/* include header files */
/************************/

#include    <dos.h>
#include    <time.h>
#include    <math.h>
#include    <conio.h>
#include    <stdio.h>
#include    <string.h>
#include    <stdlib.h>
#include    <signal.h>
#include    <stdarg.h>
#include    "m4obj.h"
#include    "is_cm.h"

/****************************/
/* pre-compiler definitions */
/****************************/

#define    steps_per_mm          (double)5.01275411314
#define    oscfreq               (double)2000000
#define    minspeed 63
#define    numretry         5

#define    _FORMAT_   "RS-170"
#define    _CONFIG_   NULL
#define    _GLDISP_   0
#define    _GLDIGI_   1
#define    _DIGI_             'z'
#define    _DISP_             'p'
#define    _BLNK_             's'
#define    _READ_             'r'
#define    _HNDL_             1
#define    _BUFF_             1L
#define    _XRES_           200
#define    _YRES_           88
#define    _PIXMIN_   0
#define    _PIXMAX_   255

#define    POS1             16
#define    POS2             17
#define    POS3             18
#define    POS4             19
#define    OFFSET1          40
#define    OFFSET2          55

/*****************************************/
/* stack allocation and type definitions */
/*****************************************/

extern unsigned int _stklen=0x1000;

typedef struct
{
  double xpos;
  double ypos;
}
position;

/*********************************/
/* all main variables are global */
/*********************************/




                                                                                    65
                                          I.T. Control Panel Source Code   5-2


const int cardaddr=592;
const int cardtype=1;
const int keymode=0;
const int plexres=4;
long currentx=0;
long currenty=0;
long motor1,motor2,motor3,motor4;

/* parameter file format */
float sensitivity=5;
float actrad=0.25;
float jogspeed=45;
/* max_pos.xpos */
/* max_pos.ypos */
float xdist=41.0;
float ydist=41.0;
int trackpowlev=2;
char logpath[128]=".\\";
char logname[128]="it.log";
char logstr[128]="";

FILE *logfile;
FILE *parfile;
char *parname="it.par";
const char *erasestring="           ";
uchar *image;
uchar *jmage;
position cam_pos;
position rel_pos;
position bug_pos;
position old_bug_pos;
position max_pos;
double speed1,speed2,accel;
double slowest=(double)minspeed/steps_per_mm;

long newtime,oldtime,firsttime;
double curtime,deltime;
double bugspeed;

int threshcount;
int thresh;
int maxdiff,mindiff;
double xsum,ysum;
double xmid,ymid;
double xerr,yerr;
double xerrmag,yerrmag;
double errmag;
double mindist;

int numpix;
int xres,yres;
int xresm,yresm;
int i,j;
long iteration=0;
int menuoption;
int exitcond=0;
float fbuff;
int errorcode;
int errorcount;

/***********************************/
/* function & procedure prototypes */
/***********************************/

int main(void);
void menu1(void);
void menu2(void);
void menu3(void);
void menu4(void);
void menu5(void);
void drawvars(int);
int moverel(position);
int moveabs(position);
int rampmoveabs(position,double,double,double);
int rampmoverel(position,double,double,double);




                                                                            66
                                           I.T. Control Panel Source Code                       5-3


position getpos(void);
void setspeed(double);
void setpowlev(int);
long round(double);
int signof(double);

/******************/
/* main procedure */
/******************/

int main(void)
{
  /****************************************************/
  /* clear screen for messages and print title banner */
  /****************************************************/

 clrscr();
 printf("*******************************************************************************\n");
 printf("                              I.T. CONTROL PANEL                               \n");
 printf("                                   April 1999                                  \n");
 printf("      Justin Combs     Raymond Foulk      Ryan McDonough     George Sapna      \n");
 printf("*******************************************************************************\n");
 printf("\n");

 /*********************************/
 /* begin initialization sequence */
 /*********************************/

 errorcount=0;

 /***********************************/
 /* open/create main parameter file */
 /***********************************/

 if((parfile=fopen(parname,"r"))==NULL)
 {
   printf(" ! could not find \"%s\"\n",parname);
   if((parfile=fopen(parname,"w"))==NULL)
   {
     printf(" ! could not create default \"%s\"\n",parname);
     errorcount=1;
   }
   else
   {
     printf(" %c default \"%s\" created\n",(char)249,parname);
     fprintf(parfile,"%ld\n",currentx);
     fprintf(parfile,"%ld\n",currenty);
      max_pos.xpos=874.75;
     fprintf(parfile,"%f\n",max_pos.xpos);
      max_pos.ypos=1013.60;
     fprintf(parfile,"%f\n",max_pos.ypos);
     fprintf(parfile,"%f\n",xdist);
     fprintf(parfile,"%f\n",ydist);
     fprintf(parfile,"%f\n",sensitivity);
     fprintf(parfile,"%f\n",actrad);
     fprintf(parfile,"%f\n",jogspeed);
     fprintf(parfile,"%d\n",trackpowlev);
     fprintf(parfile,"%s\n",logpath);
     fprintf(parfile,"%s\n",logname);
     fclose(parfile);
   }
 }
 else
 {
   printf(" %c reading parameters from \"%s\"\n",(char)249,parname);
   fscanf(parfile,"%ld",&currentx);
   fscanf(parfile,"%ld",&currenty);
   fscanf(parfile,"%f",&fbuff);
     max_pos.xpos=(double)fbuff;
   fscanf(parfile,"%f",&fbuff);
     max_pos.ypos=(double)fbuff;
   fscanf(parfile,"%f",&xdist);
   fscanf(parfile,"%f",&ydist);
   fscanf(parfile,"%f",&sensitivity);
   fscanf(parfile,"%f",&actrad);




                                                                                                 67
                                            I.T. Control Panel Source Code                         5-4


    fscanf(parfile,"%f",&jogspeed);
    fscanf(parfile,"%d",&trackpowlev);
    fscanf(parfile,"%s",&logpath);
    fscanf(parfile,"%s",&logname);
    fclose(parfile);
}

/*****************************/
/* initialize Quickstep card */
/*****************************/

issetmultiplex(&plexres);
issetkeyboardint(&keymode);
i=0;
do
{
  ischeckcard(&cardaddr,&j);
  i++;
  if(i>numretry) errorcount=2;
}
while(j==0&&i<=numretry);

if(errorcount==2)
{
  printf(" ! could not initialize quickstep card\n");
}
else
{
  printf(" %c quickstep card initialized\n",(char)249);
  issetcardtype(&cardtype);
  setpowlev(1);

    /*******************************/
    /* set current camera position */
    /*******************************/

    motor1=currentx;
    motor2=currenty;
    motor3=-currenty;
    motor4=0;
    isloadcount(&motor1,&motor2,&motor3,&motor4);
    cam_pos=getpos();
    printf(" %c current camera position is set to %f,%f\n",(char)249,cam_pos.xpos,cam_pos.ypos);
}

/******************************/
/* initialize 4MEG VIDEO card */
/******************************/

if(pxd_chkstack(1)<0)
{
  printf(" ! not enough memory for 4MEG VIDEO\n");
  errorcount=3;
}
else
{
  printf(" %c enough memory for 4MEG VIDEO\n",(char)249);
}

if((errorcode=pxd_m4open(_FORMAT_,_CONFIG_))<0)
{
  printf(" ! could not initialize 4MEG VIDEO card\n");
  printf(" ! pxd_m4open() returned %d\n",errorcode);
  errorcount=4;
}
else
{
  printf(" %c 4MEG VIDEO card initialized\n",(char)249);

    /******************************/
    /* configure 4MEG VIDEO card, */
    /* report status,             */
    /* allocate image buffers     */
    /******************************/




                                                                                                    68
                                            I.T. Control Panel Source Code                       5-5


    printf(" %c image memory size is %lu kilobytes\n",(char)249,pxd_imsize());
    pxd_vidparm(_XRES_,1,-1,_YRES_,1,-1,0);
    xres=pxd_xdim();
    yres=pxd_ydim();
    printf(" %c image resolution is %d x %d pixels\n",(char)249,xres,yres);

    xresm=xres-1;
    yresm=yres-1;
    numpix=xres*yres;
    xmid=(double)xres/2;
    ymid=(double)yres/2;

    printf(" %c screen width is set to %f mm\n",(char)249,xdist);
    printf(" %c screen height is set to %f mm\n",(char)249,ydist);
    image=(uchar *)malloc(xres*yres*sizeof(uchar));
    jmage=(uchar *)malloc(xresm*yres*sizeof(uchar));
    printf(" %c local image buffers allocated\n",(char)249);
    pxd_video(_DIGI_,_BUFF_);
    printf(" %c digitizing into card buffer %d\n",(char)249,_BUFF_);
}

if(errorcount>1)
{
  printf(" ! initialization failed\n");
  printf(" ! last error code was %d\n",errorcount);
  printf(" %c please refer to \"Troubleshooting the Software\" in the I.T. Technical Handbook\n");
  printf("\n");
  printf(" %c press any key to exit program ->");
  getch();
  printf("\n");
  free(jmage);
  free(image);
  exit(errorcount);
}
else
{
  printf(" %c initialization successful\n",(char)249);
  printf("\n");
  printf(" %c press any key to enter main menu -> ",(char)249);
  getch();
  printf("\n");
}

do
{
  exitcond=0;
  clrscr();
  printf("*******************************************************************************\n");
  printf("                              I.T. CONTROL PANEL                               \n");
  printf("                                  MAIN MENU                                    \n");
  printf("*******************************************************************************\n");
  printf("\n");
  printf(" 1.\tedit I.T. parameters\n");
  printf(" 2.\tautomatic coordinate calibration\n");
  printf(" 3.\tmanual jogging\n");
  printf(" 4.\tmove to center position\n");
  printf(" 5.\tbegin tracking\n");
  printf(" <ESC>\texit this program\n");
  printf("\n");
  printf(" %c press the key corresponding to your choice -> ",(char)249);
  menuoption=getch();
  printf("\n");
  switch(menuoption)
  {
    case (int)'1':
     menu1();
     exitcond=0;
     break;
    case (int)'2':
     menu2();
     exitcond=0;
     break;
    case (int)'3':
     menu3();
     exitcond=0;




                                                                                                     69
                                              I.T. Control Panel Source Code                       5-6


       break;
      case (int)'4':
       menu4();
       exitcond=0;
       break;
      case (int)'5':
       menu5();
       exitcond=0;
       break;
      case 27:
       exitcond=1;
       break;
      default:
       exitcond=0;
       break;
      }
    }
    while(exitcond==0);

    /***************************/
    /* save current parameters */
    /***************************/

    remove(parname);
    if((parfile=fopen(parname,"w"))==NULL)
    {
      printf(" ! could not save parameters to \"%s\"\n",parname);
    }
    else
    {
      isreadcount(&motor1,&motor2,&motor3,&motor4);
      currentx=motor1;
      currenty=motor2;
      fprintf(parfile,"%ld\n",currentx);
      fprintf(parfile,"%ld\n",currenty);
      fprintf(parfile,"%f\n",max_pos.xpos);
      fprintf(parfile,"%f\n",max_pos.ypos);
      fprintf(parfile,"%f\n",xdist);
      fprintf(parfile,"%f\n",ydist);
      fprintf(parfile,"%f\n",sensitivity);
      fprintf(parfile,"%f\n",actrad);
      fprintf(parfile,"%f\n",jogspeed);
      fprintf(parfile,"%d\n",trackpowlev);
      fprintf(parfile,"%s\n",logpath);
      fprintf(parfile,"%s\n",logname);
      fclose(parfile);
      printf(" %c parameters saved to \"%s\"\n",(char)249,parname);
    }

    /*********************/
    /* clean up and exit */
    /*********************/

    free(jmage);
    free(image);
    pxd_close();
    setpowlev(0);
    printf(" %c finished\n",(char)249);
    return(0);
}

/*********************/
/* global procedures */
/*********************/

void menu1(void)
{
  do
  {
    exitcond=0;
    clrscr();
    printf("*******************************************************************************\n");
    printf("                              I.T. CONTROL PANEL                               \n");
    printf("                            TRACKING PARAMETER MENU                            \n");
    printf("*******************************************************************************\n");




                                                                                                    70
                                              I.T. Control Panel Source Code                   5-7


     printf("\n");
     printf(" 1.\tchange log file path\t\t\"%s\"\n",logpath);
     printf(" 2.\tchange log file name\t\t\"%s\"\n",logname);
     printf(" 3.\tchange screen width\t\t%f\t[mm]\n",xdist);
     printf(" 4.\tchange screen height\t\t%f\t[mm]\n",ydist);
     printf(" 5.\tchange tracking sensitivity\t%f\t[1/s]\n",sensitivity);
     printf(" 6.\tchange action circle diameter\t%f\t[#]\n",actrad);
     printf(" 7.\tchange jog speed\t\t%f\t[mm/s]\n",jogspeed);
     printf(" 8.\tchange motor power level\t%d\t\t[#]\n",trackpowlev);
     printf(" <ESC>\texit this menu\n");
     printf("\n");
     printf(" %c press the key corresponding to your choice -> ",(char)249);
     menuoption=getch();
     printf("\n");
     switch(menuoption)
     {
       case (int)'1':
        printf(" %c type the new log file path -> ",(char)249);
        scanf("%s",&logpath);
        exitcond=0;
        break;
       case (int)'2':
        printf(" %c type the new log file name -> ",(char)249);
        scanf("%s",&logname);
        exitcond=0;
        break;
       case (int)'3':
        printf(" %c input a new value for screen width -> ",(char)249);
        scanf("%f",&xdist);
        if(xdist<0) xdist=0;
        exitcond=0;
        break;
       case (int)'4':
        printf(" %c input a new value for screen height -> ",(char)249);
        scanf("%f",&ydist);
        if(ydist<0) ydist=0;
        exitcond=0;
        break;
       case (int)'5':
        printf(" %c input a new value for sensitivity (0 to Inf) -> ",(char)249);
        scanf("%f",&sensitivity);
        if(sensitivity<0) sensitivity=0;
        exitcond=0;
        break;
       case (int)'6':
        printf(" %c input a new value for action radius (0 to 1) -> ",(char)249);
        scanf("%f",&actrad);
        if(actrad>1) actrad=1;
        if(actrad<0) actrad=0;
        exitcond=0;
        break;
       case (int)'7':
        printf(" %c input a new value for jog speed (%.2f to 50.00) -> ",(char)249,slowest);
        scanf("%f",&jogspeed);
        if(jogspeed<slowest) jogspeed=slowest;
        if(jogspeed>50) jogspeed=50;
        exitcond=0;
        break;
       case (int)'8':
        printf(" %c input a new value for tracking power level (2 or 3) -> ",(char)249);
        scanf("%d",&trackpowlev);
        if(trackpowlev>3) trackpowlev=3;
        if(trackpowlev<2) trackpowlev=2;
        exitcond=0;
        break;
       case 27:
        exitcond=1;
        break;
       default:
        exitcond=0;
        break;
     }
    }
    while(exitcond==0);
}




                                                                                                71
                                           I.T. Control Panel Source Code                         5-8



void menu2(void)
{
  clrscr();
  printf("*******************************************************************************\n");
  printf("                              I.T. CONTROL PANEL                               \n");
  printf("                       AUTOMATIC COORDINATE CALIBRATION                        \n");
  printf("*******************************************************************************\n");
  printf("\n");
  printf(" ! CAUTION\n");
  printf("\n");
  printf(" ! make sure all objects are clear of tracking area\n");
  printf(" %c press <ESC> twice to abort movement at any time during calibration\n",(char)249);
  printf("\n");

 printf(" %c press any key to begin calibration -> ",(char)249);
 getch();
 printf("\n\n");
 cam_pos.xpos=-2000;
 cam_pos.ypos=-2000;
 setpowlev(3);
 setspeed(jogspeed);
 errorcode=moverel(cam_pos);
 if(errorcode==1)
 {
   /* should be 1 */
   cam_pos.xpos=0;
   cam_pos.ypos=-2000;
   moverel(cam_pos);
 }
 else
 {
   /* should be 3 */
   cam_pos.xpos=-2000;
   cam_pos.ypos=0;
   moverel(cam_pos);
 }
 motor1=0;
 motor2=0;
 motor3=0;
 motor4=0;
 isloadcount(&motor1,&motor2,&motor3,&motor4);
 cam_pos=getpos();
 printf(" %c current position is %f,%f [mm]\n",(char)249,cam_pos.xpos,cam_pos.ypos);
 delay(500);

 cam_pos.xpos=2000;
 cam_pos.ypos=2000;
 setspeed(jogspeed);
 errorcode=moverel(cam_pos);
 if(errorcode==2)
 {
   /* should be 2 */
   cam_pos.xpos=0;
   cam_pos.ypos=2000;
   moverel(cam_pos);
 }
 else
 {
   /* should be 4 */
   cam_pos.xpos=2000;
   cam_pos.ypos=0;
   moverel(cam_pos);
 }
 max_pos=getpos();
 printf(" %c current position is %f,%f [mm]\n",(char)249,max_pos.xpos,max_pos.ypos);
 delay(500);

 cam_pos.xpos=max_pos.xpos/2;
 cam_pos.ypos=max_pos.ypos/2;
 setspeed(jogspeed);
 moveabs(cam_pos);
 setpowlev(1);
 cam_pos=getpos();
 printf(" %c current position is %f,%f [mm]\n",(char)249,cam_pos.xpos,cam_pos.ypos);




                                                                                                   72
                                              I.T. Control Panel Source Code                       5-9


    delay(500);

    printf("\n");
    printf(" %c press any key to exit calibration procedure -> ",(char)249);
    getch();
    printf("\n");
}

void menu3(void)
{
  int jogoption;
  double jogdist=25;

    clrscr();
    printf("*******************************************************************************\n");
    printf("                              I.T. CONTROL PANEL                               \n");
    printf("                           MANUAL JOGGING PROCEDURE                            \n");
    printf("*******************************************************************************\n");
    printf("\n");
    printf(" %c is +y\n",(char)30);
    printf(" %c is -y\n",(char)31);
    printf(" %c is +x\n",(char)16);
    printf(" %c is -x\n",(char)17);
    printf(" %c press <ESC> to exit jogging procedure\n",(char)249);
    gotoxy(1,POS1);
    printf(" %c absolute camera coordinates [mm]",(char)249);

    /* setspeed(jogspeed); */
    setpowlev(3);
    do
    {
      fastloop:
      jogoption=getch();
      switch(jogoption)
      {
        case 72:
         rel_pos.xpos=0;
         rel_pos.ypos=jogdist;
         break;
        case 80:
         rel_pos.xpos=0;
         rel_pos.ypos=-jogdist;
         break;
        case 75:
         rel_pos.xpos=-jogdist;
         rel_pos.ypos=0;
         break;
        case 77:
         rel_pos.xpos=jogdist;
         rel_pos.ypos=0;
         break;
        case 27:
         rel_pos.xpos=0;
         rel_pos.ypos=0;
         break;
        default:
         goto fastloop;
         break;
      }
      rampmoverel(rel_pos,slowest,jogspeed,2*jogspeed);
      cam_pos=getpos();
      gotoxy(OFFSET1,POS1);
      printf("%s",erasestring);
      gotoxy(OFFSET2,POS1);
      printf("%s",erasestring);
      gotoxy(OFFSET1,POS1);
      printf("%f",cam_pos.xpos);
      gotoxy(OFFSET2,POS1);
      printf("%f",cam_pos.ypos);
    }
    while(jogoption!=27);
    setpowlev(1);
}

void menu4(void)




                                                                                                    73
                                              I.T. Control Panel Source Code                         5-10


{
    clrscr();
    printf("*******************************************************************************\n");
    printf("                              I.T. CONTROL PANEL                               \n");
    printf("                            MOVE TO CENTER POSITION                            \n");
    printf("*******************************************************************************\n");
    printf("\n");
    printf(" ! CAUTION\n");
    printf("\n");
    printf(" ! make sure all objects are clear of tracking area\n");
    printf(" %c press <ESC> twice to abort movement at any time\n",(char)249);
    printf(" %c press any key to move to center position -> ",(char)249);
    getch();
    printf("\n");
    cam_pos.xpos=max_pos.xpos/2;
    cam_pos.ypos=max_pos.ypos/2;
    setpowlev(3);
    setspeed(jogspeed);
    moveabs(cam_pos);
    setpowlev(1);
    cam_pos=getpos();
    printf(" %c current position is %f,%f [mm]\n",(char)249,cam_pos.xpos,cam_pos.ypos);

    printf("\n");
    printf(" %c press any key to exit centering procedure -> ",(char)249);
    getch();
    printf("\n");
}

void menu5(void)
{
  clrscr();
  printf("*******************************************************************************\n");
  printf("                              I.T. CONTROL PANEL                               \n");
  printf("                              TRACKING PROCEDURE                               \n");
  printf("*******************************************************************************\n");
  printf("\n");

    /*************************************/
    /* determine smaller screen distance */
    /*************************************/

    if(xdist<ydist)
    {
      mindist=xdist;
    }
    else
    {
      mindist=ydist;
    }

    /************************************************/
    /* check to see if logfile exists and warn user */
    /************************************************/

    strcpy(logstr,"");
    strcat(logstr,logpath);
    strcat(logstr,logname);
    if((logfile=fopen(logstr,"r"))!=NULL)
    {
      printf("\n");
      printf(" ! warning: log file \"%s\" already exists\n",logstr);
      printf(" ! log file will be overwritten if path & name are not changed\n");
      fclose(logfile);
      printf(" %c press <ESC> to return to main menu or any other key to continue -> ",(char)249);
      if((int)getch()==27) goto finish;
      printf("\n");
    }

    /****************************/
    /* open logfile for writing */
    /****************************/

    remove(logstr);
    if((logfile=fopen(logstr,"w"))==NULL)




                                                                                                       74
                                              I.T. Control Panel Source Code          5-11


{
  printf(" ! could not create/overwrite %s\n",logstr);
}
else
{
  printf(" %c \"%s\" created/overwritten\n",(char)249,logstr);
}

fprintf(logfile,"iter[#]\ttime[sec]\txpos[mm]\typos[mm]\n\n");

/************************/
/* draw tracking screen */
/************************/

printf("\n");
printf(" ! make sure all objects are clear of tracking area\n");
printf(" %c press any key to begin tracking -> ",(char)249);
getch();
printf("\n");
printf(" %c press <ESC> to exit tracking procedure\n",(char)249);
gotoxy(1,POS1);
printf(" %c absolute camera coordinates [mm]",(char)249);
gotoxy(1,POS2);
printf(" %c relative object coordinates [mm]",(char)249);
gotoxy(1,POS3);
printf(" %c absolute object coordinates [mm]",(char)249);
gotoxy(1,POS4);
printf(" %c iteration number and time [sec]",(char)249);

/****************************/
/* begin main tracking loop */
/****************************/

iteration=0;
setpowlev(trackpowlev);
do
{
  iteration++;

    del=clock();

    /******************************************/
    /* read in one image and get current time */
    /******************************************/

    pxd_iopen(_HNDL_,_BUFF_,0,0,xres,yres,_READ_);
    pxd_ioc(_HNDL_,image,numpix);

    if(iteration>1)
    {
      oldtime=newtime;
      newtime=clock()-firsttime;
    }
    else
    {
      oldtime=0;
      newtime=0;
      firsttime=clock();
    }

    curtime=(double)newtime/1000;
    deltime=(double)(newtime-oldtime)/1000;

    /********************************************/
    /* calculate x-differential image and       */
    /* find maximum & minimum pixel differences */
    /********************************************/

    maxdiff=_PIXMIN_-1;
    mindiff=_PIXMAX_+1;
    for(j=0;j<yres;j++)
    {
      for(i=0;i<xresm;i++)
      {
        jmage[i+j*xresm]=(uchar)abs((int)image[(i+1)+j*xres]-(int)image[i+j*xres]);




                                                                                        75
                                             I.T. Control Panel Source Code             5-12


        if((int)jmage[i+j*xresm]>maxdiff) maxdiff=(int)jmage[i+j*xresm];
        if((int)jmage[i+j*xresm]<mindiff) mindiff=(int)jmage[i+j*xresm];
    }
}

/*************************************/
/* scan through x-differential image */
/* and find above-threshold pixels   */
/*************************************/

thresh=round((double)(maxdiff+mindiff)/2);
threshcount=0;
xsum=0;
ysum=0;
for(j=0;j<yres;j++)
{
  for(i=0;i<xresm;i++)
  {
    if((int)jmage[i+j*xresm]>thresh)
    {
      xsum+=(double)i;
      ysum+=(double)j;
      threshcount++;
    }
  }
}

if(threshcount>0)
{
  /**************************************/
  /* calculate realtive object position */
  /**************************************/

    xsum/=(double)threshcount;
    ysum/=(double)threshcount;
    xerr=xdist*(xsum-xmid)/((double)xres);
    yerr=ydist*(ysum-ymid)/((double)yres);
    /* swap coordinates using "errmag" as a buffer */
    errmag=-yerr;
    yerr=xerr;
    xerr=errmag;
    /* coordinates now conform to device */
    xerrmag=fabs(xerr);
    yerrmag=fabs(yerr);
    errmag=sqrt(xerrmag*xerrmag+yerrmag*yerrmag);

    /********************************/
    /* get absolute camera position */
    /********************************/

    cam_pos=getpos();

    /***************************************************/
    /* calculate absolute object coordinates and speed */
    /***************************************************/

    old_bug_pos.xpos=bug_pos.xpos;
    old_bug_pos.ypos=bug_pos.ypos;
    bug_pos.xpos=cam_pos.xpos+xerr;
    bug_pos.ypos=cam_pos.ypos+yerr;

    /**********************/
    /* write data to file */
    /**********************/

    fprintf(logfile,"%ld\t%f\t%f\t%f\n",iteration,curtime,bug_pos.xpos,bug_pos.ypos);

    /***********************************/
    /* draw current tracking variables */
    /***********************************/

    drawvars(0);

    /***************/
    /* take action */




                                                                                          76
                                                 I.T. Control Panel Source Code        5-13


         /***************/

         if(errmag>actrad*0.5*mindist)
         {
           speed1=slowest;
           if(xerrmag>yerrmag)
           {
             speed2=sensitivity*xerrmag;
             if(xerrmag==0)
             {
               accel=slowest;
             }
             else
             {
               accel=(double)2*(speed2-speed1)*(speed1+0.5*(speed2-speed1))/xerrmag;
             }
           }
           else
           {
             speed2=sensitivity*yerrmag;
             if(yerrmag==0)
             {
               accel=slowest;
             }
             else
             {
               accel=(double)2*(speed2-speed1)*(speed1+0.5*(speed2-speed1))/yerrmag;
             }
           }
           if(speed2<speed1) speed2=speed1;
           rel_pos.xpos=xerr;
           rel_pos.ypos=yerr;
           rampmoverel(rel_pos,speed1,speed2,accel);
         }
         else
         {
           /*****************************************/
           /* limit frequency of aquisition to 5 Hz */
           /*****************************************/

             delay(200);
         }
     }
     else
     {
       /********************************/
       /* get absolute camera position */
       /********************************/

         cam_pos=getpos();

         /***********************************/
         /* draw current tracking variables */
         /***********************************/

         drawvars(1);
     }
    }
    while(!kbhit());
    getch();
    setpowlev(1);
    fclose(logfile);
    finish:
}

void drawvars(int nullswitch)
{
  /************************************/
  /* draw absolute camera coordinates */
  /************************************/

    gotoxy(OFFSET1,POS1);
    printf("%s",erasestring);
    gotoxy(OFFSET2,POS1);
    printf("%s",erasestring);




                                                                                         77
                                             I.T. Control Panel Source Code   5-14


    gotoxy(OFFSET1,POS1);
    printf("%f",cam_pos.xpos);
    gotoxy(OFFSET2,POS1);
    printf("%f",cam_pos.ypos);

    /************************************/
    /* draw relative object coordinates */
    /************************************/

    gotoxy(OFFSET1,POS2);
    printf("%s",erasestring);
    gotoxy(OFFSET2,POS2);
    printf("%s",erasestring);
    if(nullswitch==0)
    {
      gotoxy(OFFSET1,POS2);
      printf("%f",xerr);
      gotoxy(OFFSET2,POS2);
      printf("%f",yerr);
    }
    else
    {
      gotoxy(OFFSET1,POS2);
      printf("_NULL_");
      gotoxy(OFFSET2,POS2);
      printf("_NULL_");
    }

    /************************************/
    /* draw absolute object coordinates */
    /************************************/

    gotoxy(OFFSET1,POS3);
    printf("%s",erasestring);
    gotoxy(OFFSET2,POS3);
    printf("%s",erasestring);
    if(nullswitch==0)
    {
      gotoxy(OFFSET1,POS3);
      printf("%f",bug_pos.xpos);
      gotoxy(OFFSET2,POS3);
      printf("%f",bug_pos.ypos);
    }
    else
    {
      gotoxy(OFFSET1,POS3);
      printf("_NULL_");
      gotoxy(OFFSET2,POS3);
      printf("_NULL_");
    }

    /**********************************/
    /* draw iteration number and time */
    /**********************************/

    gotoxy(OFFSET1,POS4);
    printf("%s",erasestring);
    gotoxy(OFFSET2,POS4);
    printf("%s",erasestring);
    gotoxy(OFFSET1,POS4);
    printf("%ld",iteration);
    gotoxy(OFFSET2,POS4);
    printf("%f",curtime);
}

/***************************/
/* accessory functions ... */
/***************************/

int moverel(position relpos)
{
  long go1,go2,go3,go4;
  int errorcode=0;
  go1=round(steps_per_mm*relpos.xpos);
  go2=round(steps_per_mm*relpos.ypos);




                                                                                78
                                               I.T. Control Panel Source Code   5-15


    go3=-go2;
    go4=0;
    ismover(&go1,&go2,&go3,&go4,&errorcode);
    return(errorcode);
}

int moveabs(position abspos)
{
  long go1,go2,go3,go4;
  long cur1,cur2,cur3,cur4;
  int errorcode;
  isreadcount(&cur1,&cur2,&cur3,&cur4);
  go1=round(steps_per_mm*abspos.xpos)-cur1;
  go2=round(steps_per_mm*abspos.ypos)-cur2;
  go3=-go2;
  go4=0;
  ismover(&go1,&go2,&go3,&go4,&errorcode);
  return(errorcode);
}

int rampmoveabs(position abspos,double speed1,double speed2,double accel)
{
  long go1,go2,go3,go4;
  long cur1,cur2,cur3,cur4;
  int _speed1=round(steps_per_mm*speed1);
  int _speed2=round(steps_per_mm*speed2);
  long _accel=(long)round(steps_per_mm*accel);
  int errorcode;

    isreadcount(&cur1,&cur2,&cur3,&cur4);
    go1=round(steps_per_mm*abspos.xpos)-cur1;
    go2=round(steps_per_mm*abspos.ypos)-cur2;
    go3=-go2;
    go4=0;

    setspeed(speed2);
    isprofile(_speed1,_speed2,_accel);
    isrampset();
    ismover(&go1,&go2,&go3,&go4,&errorcode);
    return(errorcode);
}

int rampmoverel(position relpos,double speed1,double speed2,double accel)
{
  long go1,go2,go3,go4;
  int _speed1=round(steps_per_mm*speed1);
  int _speed2=round(steps_per_mm*speed2);
  long _accel=(long)round(steps_per_mm*accel);
  int errorcode;

    go1=round(steps_per_mm*relpos.xpos);
    go2=round(steps_per_mm*relpos.ypos);
    go3=-go2;
    go4=0;

    setspeed(speed2);
    isprofile(_speed1,_speed2,_accel);
    isrampset();

    ismover(&go1,&go2,&go3,&go4,&errorcode);
    return(errorcode);
}

position getpos(void)
{
  position currentpos;
  long m1,m2,m3,m4;
  isreadcount(&m1,&m2,&m3,&m4);
  if(m2!=-m3)
  {
    printf(" ! error: y motors out of sync\n");
  }
  currentpos.xpos=(double)m1/steps_per_mm;
  currentpos.ypos=(double)m2/steps_per_mm;
  return(currentpos);




                                                                                  79
                                         I.T. Control Panel Source Code   5-16


}

void setspeed(double speed)
{
  /********************/
  /* speed is in mm/s */
  /********************/

    int stepdelay;
    speed*=steps_per_mm;
    if(speed<minspeed) speed=minspeed;
    stepdelay=(int)(oscfreq/speed);
    issetspeed(&stepdelay);
}

void setpowlev(int powlev)
{
  const int powlev0=0;
  const int powlev1=10;
  const int powlev2=5;
  const int powlev3=15;
  switch(powlev)
  {
    case 0:
     ispowerinit(&powlev0);
     break;
    case 1:
     ispowerinit(&powlev1);
     break;
    case 2:
     ispowerinit(&powlev2);
     break;
    case 3:
     ispowerinit(&powlev3);
     break;
    default:
     ispowerinit(&powlev0);
     break;
  }
}

long round(double num)
{
  return(floor(num+0.5));
}

int signof(double num)
{
  return((int)round(num/fabs(num)));
}




                                                                            80
                                                            Replacement Parts               6-1


  The following table provides general part replacement
  information for the tracking system. Most parts, however,
  were custom manufactured in a machine shop. Following the
  replacement parts table, a series of drawings is provided
  for the re-manufacture of the various custom-made parts.


                                        Parts List
Quantity                      Component                         Supplier             Stock #
    1      QuickPhase Evaluation Package                  Microkinetics          99-3600-100
    1      Power Supply                                   Microkinetics
    1      QuickPhase Motion Controller Card              Microkinetics
    3      23M80 Stepper Motor w/ 2 Shafts                Microkinetics          w/ 2 Shafts
    1      Wiring Harness                                 Microkinetics
    1      Software Libraries                             Microkinetics
    8      1/4" Bore 32 Pitch Derlin Pinion w/ S.S. Hub   Allied Devices Corp.   DAG331
   18      10.9956" 416 Stainless Steel 32 Pitch Rack     Allied Devices Corp.   DF18T32
    6      2" x 1" x 6' 6061 Al Stock for Y Beams         McMaster-Carr          8975K237
   25      Lb. Stock Aluminum                             Machine Shop           Stock
    1      Assorted Fasteners                             Machine Shop           Stock
    1      0.25" (Dia) x 12" 440C S.S. X Shaft            McMaster-Carr          6253K12
    2      0.25"(Dia) x 48" 440C S.S. Y Shaft             McMaster-Carr          6253K16
   12      0.25"(I.Dia) Flanged/Shielded Ball Bearings    McMaster-Carr          57155K167
    4      1" x 3/4" x 6' 6061 Al Stock for Grooves       McMaster-Carr          8975K112
    4      80mm(Dia) Roller Blade Wheel (86A Hardness)    Skate Pro Sports       Hyper 250
    8      ABEC-5 Roller Blade Wheel Bearings             Skate Pro Sports       ABEC-5
    4      Spacers for Idler Wheels                       Skate Pro Sports       Spacers
    3      1/4" Bore Rigid Steel Coupling w/ Set Screw    Grainger Supplies      6L012
    3      5 Pin Din Connector Plug                       Radio Shack            274-003 A
    3      5 Pin Din Connector Jack                       Radio Shack            274-006 A
    3      24 AWG 4 Conductor Shielded Cable              Radio Shack            278-777
    2      Solderless BNC Male Connector                  Radio Shack            278-115
    2      BNC to BNC Coaxial Extension Cable             Radio Shack            278-965
    4      Limit Switch Connector Pairs                   Radio Shack
    4      Wire Clips                                     Radio Shack
    2      5" Wire Ties                                   Radio Shack
    1      4" Wire Ties                                   Radio Shack
    2      1/2" x 5' Tubing                               Radio Shack
    1      100 ft. Spool Two Conductor Speaker Wire       Radio Shack
    1      Borland C++ Software Package Upgrade           Radio Shack
    1      CCD Video Camera (Existing)                    USDA                   Existing    Equip.
    1      Gateway PC                                     USDA                   Existing    Equip.
    1      EPIX Video Capture Card                        USDA                   Existing    Equip.
    1      Borland C++ Software Package                   USDA                   Existing    Equip.




                                                                                              81
Replacement Parts   6-2




                     82
Replacement Parts   6-3




                     83
Replacement Parts   6-4




                     84
Replacement Parts   6-5




                     85
Replacement Parts   6-6




                     86
Replacement Parts   6-7




                     87
Replacement Parts   6-8




                     88
Replacement Parts   6-9




                     89
Replacement Parts   6-10




                      90
Replacement Parts   6-11




                      91
Replacement Parts   6-12




                      92
Replacement Parts   6-13




                      93
Replacement Parts   6-14




                      94
Replacement Parts   6-15




                      95
Replacement Parts   6-16




                      96
Replacement Parts   6-17




                      97
Replacement Parts   6-18




                      98
Replacement Parts   6-19




                      99
Replacement Parts   6-20




                     100
Replacement Parts   6-21




                     101
Replacement Parts   6-22




                     102
Replacement Parts   6-23




                     103
Replacement Parts   6-24




                     104
Replacement Parts   6-25




                     105
Replacement Parts   6-26




                     106
Replacement Parts   6-27




                     107
                                                 Specifications     7-1


The following chart contains some of the specifications of
the I.T. System. Wherever possible, the tolerance and
reliability are shown. These specifications represent the
results of a series of tests performed under ideal
conditions. The specification, tolerance, and reliability
values may not be true under different conditions. The
conditions include the following. The system was tracking
a 1mm-diameter ink dot placed on a white sheet of paper. A
sensitivity setting of “5” was used in all cases except for
the maximum trackable speed test, in which a setting of
“10” was used. The camera screen was set to 38mm by 38mm.
And, the motor power level was set to “3”.


                      Tracking System Specifications
         Specification          Specification Tolerance [+/-] Reliability
Trackable Area [mm]               1055 x 917        1.00           99%
Camera Height [mm]                  505.00          5.00           99%
Accummulation of Error [mm]           0.00          0.42          100%
Static Error [mm]                     0.00          0.23          100%
Maximum Trackable Speed [mm/s]       27.00          3.00           N/A
Frequency of Acquisition [Hz]     2 < f < 5          N/A           N/A
Feedback Delay [s]                    0.07           N/A           N/A
Variation in Luminance [%]             15            N/A           N/A




                                                                     108
                                  Tracking Parameter Charts       8-1


This section suggests the parameters that may be
appropriate when tracking different insects. There are two
certain characteristics for which the parameters will
change: the insect’s maximum speed and the insect’s body
length. Without a doubt, there may be many other factors
that take part in parameter optimization, such as body size
aspect ratio, leg length, wing size, etc. However, this
type of fine-tuning is better left to the experimentalist.
The following charts provide a starting point for parameter
selection.



                 Insect Length Dependant Parameters
       Length of Insect, L [mm]        L<0.5 0.5<L<5   L>5
       Action Radius                    0.25   0.33    0.50
       Screen Width & Height             8      24      42




                  Insect Speed Dependant Parameters
 Maximum Insect Speed, u [mm/s] u<5   5<u<10 10<u<15 15<u<20 20<u<30
Jog Speed                        15     30      45     45      45
Tracking Sensitivity              1      3       5     10      20
Motor Power Level                 3      3       3      3       3




                                                                   109
           Appendix B-1 (Budget Sheet 1)

                                                   Robot Cost Estimate
Quantity              Component                               Supplier                  Model #        Unit Price       Sub-Total
  2        Drive Wheel Stepper Motor               Microkinetics                   23M80              $     65.00   $       130.00
  1        NEMA Size 17 Stepper Motor              AMSI, Inc.                      406-SM             $     50.00   $        50.00   ?
  1        36VDC, 10A Power Supply                 Microkinetics                   PWR36              $ 180.00      $       180.00
  1        OptiStep Motion Controller              Microkinetics                   OptiStep Plus      $ 249.00      $       249.00
  1        OptiDriver Stepper Motor Driver         Microkinetics                   OptiDriver Plus    $ 399.00      $       399.00
  1        Breakout For Controller                 Microkinetics                   Breakout-25-OP     $     45.00   $        45.00
  1        InStep Software Libraries               Microkinetics                   InStep             $     99.00   $        99.00
  1        Distance Measuring Laser                Phase Laser Systems, Inc.       PM30               $ 1,490.00    $     1,490.00
  1        Right Angle Aluminum Mirror             Edmund Scientific               F45595             $     53.00   $        53.00
  50       6061 Aluminum Per Pound                 Machine Shop                    Stock              $      3.00   $       150.00   ?
  1        Caster Wheel                            Unknown                         N/A                $     10.00   $        10.00   ?
  2        Rubber Drive Wheel                      Unknown                         N/A                $     10.00   $        20.00   ?
  1        Reference Wall Materials                Unknown                         N/A                $ 200.00      $       200.00   ?
  2        Reflective Tape Roll (4"x30')           McMaster-Carr                   5997T88            $     35.90   $        71.80
  1        Misc. Nuts/Bolts                        Unknown                         N/A                $ 100.00      $       100.00   ?
                                                Total Estimated Cost                                                $ 3,246.80
           Note: ?'s denote estimated values.




                               Preliminary Cartesian Track Cost Estimate
Quantity                Component                               Supplier                 Stock #       Unit Price       Sub-Total
  2        X-Y Stepping Motor                         Microkinetics                 23M80              $ 70.00      $       140.00
  1        36VDC, 10A Power Supply                    Microkinetics                 PWR36              $ 180.00     $       180.00
  1        OptiStep Motion Controller                 Microkinetics                 OptiStep Plus      $ 249.00     $       249.00
  1        OptiDriver Stepper Motor Driver            Microkinetics                 OptiDriver Plus    $ 399.00     $       399.00
  1        Breakout For Controller                    Microkinetics                 Breakout-25-OP     $ 45.00      $        45.00
  1        InStep Software Libraries                  Microkinetics                 InStep             $ 99.00      $        99.00
  8        Drive/Following Pinion                     Allied Devices Corporation    DF39T32            $ 18.37      $       146.96
  25       X-Y Rack                                   Allied Devices Corporation    DAG331             $ 37.30      $       932.50
 200       6061 Aluminum Per Pound                    Machine Shop                  Stock              $    3.75    $       750.00 ?
  1        12" X Following Shaft                      McMaster-Carr                 6253K12            $ 15.35      $        15.35
  1        48" Y Following Shaft                      McMaster-Carr                 6253K16            $ 61.40      $        61.40
  2        6" X Drive Shaft                           McMaster-Carr                 6253K11            $    7.68    $        15.36
  2        24" Y Drive Shaft                          McMaster-Carr                 6253K14            $ 30.70      $        61.40
  4        Rubber Idler (Inline Skate Wheels)         Skate Pro Sports              Hyperformance      $    7.00    $        28.00
  4        Idler Bearings                             Skate Pro Sports              ABEC-7             $    2.50    $        10.00
  1        Idler Spacers (pkg)                        Skate Pro Sports              Steel Spacers      $ 11.95      $        11.95
  6        Shaft Ball Bearings                        McMaster-Carr                 57155K57           $    5.08    $        30.48
  8        Flanged Shaft Ball Bearings                McMaster-Carr                 57155K167          $    7.86    $        62.88
  4        8" Threaded Rod                            McMaster-Carr                 93255A443          $    6.76    $        27.04
  4        Round Nut For Legs                         McMaster-Carr                 95066A213          $    9.78    $        39.12
  1        Miscellaneous Nuts/Bolts                   Unknown                       N/A                $ 100.00     $       100.00 ?
                                                Total Estimated Cost                                                $ 3,404.44
           Note: ?'s denote estimated values.




                                                                                                                    110
          Appendix B-2 (Budget Sheet 2)




                   Itemized Parts List And Budget For Cartesian Video Tracking System
Part # Quantity                             Component                                     Supplier             Stock #      Unit Price       Sub-Total
  1       3     6 Lead Center Tapped 0.57 N-m H.T. Stepping Motor                  Microkinetics          23M80             $ 70.00      $       210.00
  2       1     36VDC, 10A Power Supply for Multi-Axes Drivers                     Microkinetics          PWR36             $ 180.00     $       180.00
  3       1     OptiStep 4-Axis Motion Controller Card (PCI)                       Microkinetics          OptiStep Plus     $ 249.00     $       249.00
  4       1     OptiDriver 3-Axis Stepper Motor Driver                             Microkinetics          OptiDriver Plus   $ 399.00     $       399.00
  5       1     Breakout for Controller Card (Wiring Terminal)                     Microkinetics          Breakout-25-OP    $ 45.00      $        45.00
  6       1     InStep Software Libraries (C Functions for Controller)             Microkinetics          InStep            $ 99.00      $        99.00
  7       8     1" P.D. Pinion for Drive and Following Shafts                      Allied Devices Corp.   DF39T32           $ 18.37      $       146.96
  8      18     10.9956" 416 Stainless Steel 32 Pitch Rack                         Allied Devices Corp.   DAG331            $ 37.30      $       671.40
  9       2     2" x 1.5" x 6' 6061 Al Stock for Y Beams                           McMaster-Carr          8975K253          $ 84.78      $       169.56
 10       2     2" x 1" x 6' 6061 Al Stock for Y Beams                             McMaster-Carr          8975K237          $ 56.60      $       113.20
 11       2     2" x 1" x 6' 6061 Al Stock for X Beams                             McMaster-Carr          8975K237          $ 56.60      $       113.20
 12      2.6    Lb. 2(0.25"(Thk) x 6.75" x 7.625") 6061 Al Plate for X Trolley     Machine Shop           Stock             $    3.75    $         9.75
 13       1     Lb. 2(0.5" x 2" x 4.5") 6061 Al for Camera Beam                    Machine Shop           Stock             $    3.75    $         3.75
 14      0.4    Lb. 2(0.5" x 0.5" x 7.625") 6061 Al for X Trolley Re-Beam          Machine Shop           Stock             $    3.75    $         1.50
 15      8.1    Lb. 2(0.375"(Thk) x 13.75" x 7.813") 6061 Al Plate for Y Trolley   Machine Shop           Stock             $    3.75    $        30.38
 16      1.6    Lb. 8(0.25"(Thk) x 2" x 2" Angle) 6061 Al Angle Bracket            Machine Shop           Stock             $    3.75    $         6.00
 17       1     0.5(Dia) x 12" 440C S.S. X Following Shaft                         McMaster-Carr          6253K52           $ 15.76      $        15.76
 18       2     0.625"(Dia) x 48" 440C S.S. Y Shaft                                McMaster-Carr          6253K42           $ 81.51      $       163.02
 19       1     0.5" (Dia) x 6" 440C S.S. X Drive Shaft                            McMaster-Carr          6253K51           $    7.88    $         7.88
 20       4     80mm(Dia) x 1" (W) Rubber Idler Wheel                              Skate Pro Sports       Hyperformance     $    7.00    $        28.00
 21       4     Bearings for Rubber Idler Wheel                                    Skate Pro Sports       ABEC-7            $    2.50    $        10.00
 22       1     Package of Spacers for Idler Wheels                                Skate Pro Sports       Steel Spacers     $ 11.95      $        11.95
 23       8     0.25"(I.Dia) Flanged/Shielded Precision Ball Bearings              McMaster-Carr          57155K167         $    7.86    $        62.88
 24       4     8" Threaded Rod                                                    McMaster-Carr          93255A443         $    6.76    $        27.04
 25       4     Round Nut for Legs                                                 McMaster-Carr          95066A213         $    9.78    $        39.12
 26     100 #6-32, #10-24 Threaded Nuts                                            Machine Shop           Stock             $    0.20    $        20.00
 27     100 Assorted (L) #6-32, #10-24 Threaded Bolts                              Machine Shop           Stock             $    0.30    $        30.00
 28     300 Per Foot 18 AWG Shielded Wire (2 Strand)                               McMaster-Carr          72195K66          $    0.14    $        42.00
 99     120 Estimated Shop Time (Hours)                                            Team 5 Staff           N/A               $     -      $          -
 101      1     CCD Video Camera (Existing)                                        Keith Hopper           Existing Equip.   $     -      $          -
 102      1     Gateway PC                                                         Keith Hopper           Existing Equip.   $     -      $          -
 103      1     EPIX Video Capture Card                                            Keith Hopper           Existing Equip.   $     -      $          -
 104      1     Borland C++ Software Package                                       Keith Hopper           Existing Equip.   $     -      $          -
 105      2     Fluorescent Lighting Fixtures                                      Keith Hopper           Existing Equip.   $     -      $          -
 201      1     Supplies for Wooden Model (See Model Expenditure Sheet)            (See M.E.S.)           (See M.E.S.)      $ 43.93      $        43.93
 301    100 Estimated Shipping Per Pound (Average)                                 N/A                    N/A               $    3.00    $       300.00
 401      1     Miscellaneous (Unexpected Expenses)                                Machine Shop           Stock             $ 100.00     $       100.00
                                                     Total Estimated Cost                                                                $ 3,349.28




                                                                                                                                 111
   Appendix B-3 (Budget Sheet 3)




                                       Model Cartesian Track Expenditures
Quantity            Component                   Description              Supplier    Stock #     Purchased By Unit Price   Sub-Total
  1        Maxwell GX VHS T120      Video Tape For Demonstration        CVS         N/A        Ryan McDonough $    3.79    $   3.79
  7        Screws, Nuts and Bolts   Hardware for Model                  Hechinger   4122222    Raymond Foulk  $    0.79    $   5.53
  1        Ultility Knife Blade     Knife Blade for Model Contruction   Hechinger   5366182    Raymond Foulk  $    1.25    $   1.25
  2        Wood Craft               Wood for Model Contruction          AC Moore    D11        Raymond Foulk  $    1.85    $   3.70
  1        Wood Craft               Wood for Model Contruction          AC Moore    D11        Raymond Foulk  $    2.11    $   2.11
  8        Wood Craft               Wood for Model Contruction          AC Moore    D11        Raymond Foulk  $    1.70    $ 13.60
  6        Wood Craft               Wood for Model Contruction          AC Moore    D11        Raymond Foulk  $    0.75    $   4.50
  3        Wood Craft               Wood for Model Contruction          AC Moore    D11        Raymond Foulk  $    0.63    $   1.89
  5        Wood Craft               Wood for Model Contruction          AC Moore    D11        Raymond Foulk  $    0.25    $   1.25
  3        Wood Craft               Wood for Model Contruction          AC Moore    D11        Raymond Foulk  $    0.99    $   2.97
  1        Art Supply               Paint for Model Construction        AC Moore    D10        Raymond Foulk  $    2.96    $   2.96
  2        Wood Craft               Wood for Model Contruction          AC Moore    D11        Raymond Foulk  $    0.19    $   0.38
                                                                                                              $     -      $    -
                                                                                                              $     -      $    -
                                                                                                              $     -      $    -
                                                                                                              $     -      $    -
                                                                                                              $     -      $    -
                                                                                                              $     -      $    -
                                                                                                              $     -      $    -
                                                                                                              $     -      $    -
                                                                                                              $     -      $    -
                                                     Total Amount                                                           $ 43.93




                                                                                                                           112
            Appendix B-4 (Budget Sheet 4)




           Itemized Parts List And Expenditures For Cartesian Video Tracking System
Quantity                               Component                            Supplier              Stock #      Unit Price   Sub-Total
   1       QuickPhase Evaluation Package                             Microkinetics          99-3600-100        $ 499.00     $ 499.00
   1       Power Supply                                              Microkinetics                             $     -      $    -
   1       QuickPhase Motion Controller Card                         Microkinetics                             $     -      $    -
   3       23M80 Stepper Motor w/ 2 Shafts                           Microkinetics          w/ Double Shafts   $    5.00    $ 15.00
   1       Wiring Harness                                            Microkinetics                             $     -      $    -
   1       Software Libraries                                        Microkinetics                             $     -      $    -
   8       1/4" Bore 32 Pitch Derlin Pinion w/ Stainless Steel Hub   Allied Devices Corp.   DAG331             $ 18.37      $ 146.96
  18       10.9956" 416 Stainless Steel 32 Pitch Rack                Allied Devices Corp.   DF18T32            $ 37.30      $ 671.40
   6       2" x 1" x 6' 6061 Al Stock for Y Beams                    McMaster-Carr          8975K237           $ 84.78      $ 508.68
  25       Lb. Stock Aluminum                                        Machine Shop           Stock              $    3.75    $ 93.75
   1       Assorted Fasteners                                        Machine Shop           Stock              $ 15.00      $ 15.00
   1       0.25" (Dia) x 12" 440C S.S. X Shaft                       McMaster-Carr          6253K12            $ 15.76      $ 15.76
   2       0.25"(Dia) x 48" 440C S.S. Y Shaft                        McMaster-Carr          6253K16            $ 81.51      $ 163.02
  12       0.25"(I.Dia) Flanged/Shielded Precision Ball Bearings     McMaster-Carr          57155K167          $    7.86    $ 94.32
   4       1" x 3/4" x 6' 6061 Al Stock for Grooves                  McMaster-Carr          8975K112           $ 26.53      $ 106.12
   4       80mm(Dia) Roller Blade Wheel (86A Hardness)               Skate Pro Sports       Hyper 250          $    6.50    $ 26.00
   8       ABEC-5 Roller Blade Wheel Bearings                        Skate Pro Sports       ABEC-5             $    1.63    $ 13.04
   4       Spacers for Idler Wheels                                  Skate Pro Sports       Aluminum Spacers   $     -      $    -
   3       1/4" Bore Rigid Steel Coupling w/ Set Screw               Grainger Supplies      6L012              $    3.65    $ 10.95
   3       5 Pin Din Connector Plug                                  Radio Shack            274-003 A          $    1.99    $   5.97
   3       5 Pin Din Connector Jack                                  Radio Shack            274-006 A          $    1.99    $   5.97
   3       24 AWG 4 Conductor Shielded Cable                         Radio Shack            278-777            $    8.99    $ 26.97
   2       Solderless BNC Male Connector                             Radio Shack            278-115            $    1.99    $   3.98
   2       BNC to BNC Coaxial Extension Cable                        Radio Shack            278-965            $    9.99    $ 19.98
   4       Limit Switch Connector Pairs                              Radio Shack                               $    1.99    $   7.96
   4       Wire Clips                                                Radio Shack                               $    1.79    $   7.16
   2       5" Wire Ties                                              Radio Shack                               $    1.99    $   3.98
   1       4" Wire Ties                                              Radio Shack                               $    1.59    $   1.59
   2       1/2" x 5' Tubing                                          Radio Shack                               $    3.99    $   7.98
   1       100 ft. Spool Two Conductor Speaker Wire                  Radio Shack                               $    6.99    $   6.99
   1       Borland C++ Software Package Upgrade                      Radio Shack                               $ 495.00     $ 495.00
   1       CCD Video Camera (Existing)                               Keith Hopper           Existing Equip.    $     -      $    -
   1       Gateway PC                                                Keith Hopper           Existing Equip.    $     -      $    -
   1       EPIX Video Capture Card                                   Keith Hopper           Existing Equip.    $     -      $    -
   1       Borland C++ Software Package                              Keith Hopper           Existing Equip.    $     -      $    -
   1       Supplies for Wooden Model (See Model Expenditure Sheet)   (See M.E.S.)           (See M.E.S.)       $ 43.93      $ 43.93
   1       Total Shipping Costs                                      N/A                    N/A                $ 184.15     $ 184.15
                                             Total Expenditures                                                $            3,200.61




                                                                                                                    113
Appendix C-1 (Calculation Sheet 1)

Angular Deflection of Shafts

       Assumptions:
       Clamped End – Free End Model of Shaft
       (Worst case; 1 pinion is prevented from moving, y-trolley shaft will deflect more)

              T  80 in - oz.
              d  0.5 in.
              l  48 in.
              G  171.2 Mega oz per square inch
                    0.54
              J       6.136E  3
                  32
              
                 TL
                    
                           8048          0.003655 rad  0.21degrees
                 JG 6.136E - 3171.2 E6 


Maximum Angular Deflection Compared to Linear Pitch Length

       Assumptions:
       1 Inch Pitch Circle Diameter
       32 Pitch Precision 1 Gear Set
       Worst Case Angular Deflection (from above)

                            0.003655 rad
                          rpinion  0.5 in.
                          Plinear(rack)  0.0982 in.
                          s  rpinion  0.50.003655  0.00183 in.
                          1.86% of liner pitch




                                                                                            114
Appendix C-2 (Calculation Sheet 2)

Static Shear on Shafts

        Assumptions:
        Weight of x-trolley: 11.2 lb.
        Weight of y-trolley + x-trolley: 65.3 lb.
        Safety Factor of 3

                    yield  65 kpsi for 440C S.S.
                         F
                    
                         A
                   Fy  shaft  48.975 lb. per shaft end with safety factor of 3
                                48.975
                    worst case         997.7 psi
                               0.1252
                   1.53% of yield strength


Torsional Shear

        Assumptions:
        Worst Case Torque = 80 in-oz

                                 yield  32,500 psi
                                      Tr
                                
                                      J
                                 worst case 
                                                  800.125  1630.6 psi
                                                    0.254
                                               32
                                5.02% of yield strength




                                                                                   115
Appendix C-3 (Calculation Sheet 3)

Motor Power Requirements

       Assumptions:
       Mass of x-trolley: 5.1 kg
       Mass of y-trolley + x-trolley: 29.6
       Maximum Acceleration: 1 m/s2

                              Fx trolley  m x a
                              Fx trolley  5.11  5 N
                              Fy trolley  m y a
                              Fy trolley  29.61  30 N
                              T  Fr
                              Tx  5 N 0.0127 m   0.065 Nm
                              T y  30 N 0.0127 m   0.381 Nm

Base Beam Deflection

       Assumptions:
       Simply Supported Beams (for worst case analysis)

                       F  33 lb. each side
                       L  60 in.
                                 F  L3 
                       y m ax       
                                3EI  16 
                                     
                                          33            603 
                       y m ax                                  0.0214 in.
                                             1        
                                                   3   16 
                                                               
                                  310.4 E6  2  
                                              12    




                                                                                116
Appendix C-4 (Calculation Sheet 4)

Y-Trolley Beam Deflection

       Assumptions:
       Simply Supported Beams (for worst case analysis)

                          F  5.6 lb. each side
                          L  48 in.
                                      F  L3 
                          y m ax         
                                     3EI  16 
                                          
                                           5.6           483 
                          y m ax                                0.00186 in.
                                              1        
                                                    3   16 
                                                                
                                   310.4 E6  2  
                                               12    

Accumulation of Error

               Length of y-track = 55in
               Length of x-track = 44in
               x-trolley travel = 45.25-6.75 = 38.5in
               y-trolley travel = 55-10.125 = 44.875in

       x-trolley error:
                                     0.002in
                    (38.5in)(                )  0.007in
                                      11in
       y-trolley error:
                                     0.002in
                 (44.875in)(                 )  0.0082in
                                      11in

       max. accumulated error = 0.0082in = 0.21mm




                                                                                  117
Appendix C-5 (Calculation Sheet 5)

Backlash

           racklength 10 .9956                      in
                                 9.73062 E  2
              # teeth      113                    tooth
           pinionlength 2 (0.5)                       in
                                    9.81747 E  2
               # teeth        32                     tooth
           difference  backlash  8.6857 E  4in  0.022 mm


Tooth Strength

              M m ax   Fl  (6.74)(0.061)  0.41lb  in
                                           0.0491
                         (0.41in  lbs)(         )
                My                            2
                 
                I         0.23in
                           (     )(0.0491) 2
                             12
               4,448.9 psi
              failure  45,000 psi


Camera Error

Resolution  200 x 88 pixels
Screen Size  42 x 42 mm
                                           42
Worst Case Positiona l Resolutio n            0.477 mm  0.239 mm
                                           88




                                                                       118
    Appendix D-1 (Machine Shop Worksheet 1)


                   1999 Machine Shop Worksheet
Team Member Date Start Time Finish Time Hours Part No. Supervisor
 All members 15-Feb 7:30 AM     2:45 PM    7.3  5, 6      Art
 All members 16-Feb 7:30 AM     2:45 PM    7.3  5, 6      Art
    George   17-Feb 7:45 AM     9:30 AM    1.8  3, 4      Art
    George   17-Feb 10:45 AM 11:45 AM      1.0  3, 4      Art
    George   17-Feb 1:05 PM     1:40 PM    0.6  3, 4      Art
     Ryan    17-Feb 1:05 PM     4:00 PM    2.9  3, 4      Art
    George   18-Feb 7:40 AM 11:30 AM       3.8  3, 4      Art
     Justin  18-Feb 7:40 AM 10:00 AM       2.3    9       Art
     Ryan    18-Feb 10:50 AM 11:45 AM      0.9    3       Art
    George   18-Feb 1:10 PM     2:22 PM    1.2    3       Art
     Justin  18-Feb 2:00 PM     3:05 PM    1.1    3       Art
    George   19-Feb 7:40 AM 11:45 AM       4.1  3, 9      Art
    George   19-Feb 1:00 PM     3:45 PM    2.8    9       Art
      Ray    19-Feb 1:00 PM     3:00 PM    2.0 20, 21     Art
    George   22-Feb 7:35 AM     8:00 AM    0.4    9       Art
     Justin  22-Feb 7:45 AM 12:00 PM       4.3    9       Art
     Justin  22-Feb 1:00 PM     3:30 PM    2.5    9       Art
     Ryan    22-Feb 1:00 PM     3:45 PM    2.8    9       Art
    George   23-Feb 7:30 AM     7:50 AM    0.3    9       Art
     Justin  23-Feb 7:45 AM 10:00 AM       2.3    9       Art
    George   23-Feb 9:45 AM 11:55 AM       2.2    9       Art
      Ray    23-Feb 11:10 AM 11:55 AM      0.8 22, 23     Art
      Ray    23-Feb 1:15 PM     3:55 PM    2.7 22, 23     Art
    George   23-Feb 1:15 PM     2:30 PM    1.3    4       Art
     Justin  23-Feb 1:50 PM     2:30 PM    0.7    9       Art
    George   24-Feb 7:35 AM     9:20 AM    1.8 22, 23     Art
     Ryan    24-Feb 7:45 AM 10:50 AM       3.1 22, 23     Art
    George   24-Feb 10:50 AM 11:50 AM      1.0    4       Art
      Ray    24-Feb 1:10 PM     2:00 PM    0.8  1, 18     Art
    George   24-Feb 1:10 PM     2:00 PM    0.8  1, 18     Art
     Ryan    24-Feb 1:30 PM     3:50 PM    2.3 22, 23     Art
    George   25-Feb 8:00 AM 10:45 AM       2.8   23       Art
      Ray    25-Feb 9:30 AM 11:55 AM       2.4   22       Art
     Ryan    25-Feb 10:40 AM 11:55 AM      1.3  3, 4      Art
    George   25-Feb 1:10 PM     1:45 PM    0.6  3, 4      Art
      Ray    25-Feb 1:10 PM     1:25 PM    0.3  3, 4      Art
       -        -        -          -       -     -        -
       Appendix D-2 (Machine Shop Worksheet 2)


                  1999 Machine Shop Worksheet
Team Member Date Start Time Finish Time Hours Part No. Supervisor
   George   26-Feb 9:45 AM 11:50 AM       2.1    12       Art
   George   26-Feb 1:10 PM     4:00 PM    2.8    12       Art
   George    1-Mar 7:45 AM     9:30 AM    1.8    18       Art
   Justin    1-Mar 7:40 AM 11:00 AM       3.3    22       Art
    Ray      1-Mar 9:27 AM 10:00 AM       0.6    18       Art
   George    1-Mar 10:50 AM 11:50 AM      1.0    18       Art
   Justin    1-Mar 11:15 AM 11:50 AM      0.6    19       Art
    Ryan     1-Mar 1:00 PM     3:55 PM    2.9    22       Art
   Justin    1-Mar 1:10 PM     3:55 PM    2.8    22       Art
   George    1-Mar 2:30 PM     3:55 PM    1.4   12, 1     Art
   George    2-Mar 7:35 AM     8:00 AM    0.4     1       Art
   George    2-Mar 9:00 AM 12:05 PM       3.1     1       Art
    Ryan     2-Mar 10:50 AM 12:00 PM      1.2     1       Art
    Ryan     3-Mar 1:40 PM     4:00 PM    2.3    19       Art
   George    4-Mar 7:35 AM 12:00 PM       4.4    19       Art
    Ray      4-Mar 7:45 AM 12:00 PM       4.3    25       Art
   Justin    4-Mar 7:45 AM 12:00 PM       4.3    34       Art
    Ryan     4-Mar 7:45 AM     9:20 AM    1.6    19       Art
    Ryan     4-Mar 10:40 AM 11:45 AM      1.1    19       Art
   George    4-Mar 1:00 PM     3:00 PM    2.0    19       Art
    Ray      4-Mar 1:00 PM     3:00 PM    2.0  25, 19     Art
   Justin    4-Mar 2:45 PM     5:00 PM    2.3    34       Art
   George    4-Mar 3:45 PM     5:00 PM    1.3  19, 34     Art
    Ryan     4-Mar 3:45 PM     5:00 PM    1.3    19       Art
   George    5-Mar 7:35 AM 12:00 PM       4.4    19       Art
   George    5-Mar 1:00 PM     2:15 PM    1.3    19       Art
    Ray      5-Mar 2:00 PM     5:00 PM    3.0  19, 31     Art
   George    8-Mar 7:30 AM     9:30 AM    2.0    31       Art
    Ray      8-Mar 7:30 AM     8:30 AM    1.0    31       Art
   Justin    8-Mar 8:00 AM 11:45 AM       3.8    31       Art
   George    8-Mar 10:45 AM 11:45 AM      1.0    19       Art
   George    8-Mar 1:05 PM     5:50 PM    4.8    31       Art
   Justin    8-Mar 1:05 PM     6:30 PM    5.4    31       Art
    Ryan     8-Mar 1:05 PM     6:30 PM    5.4    19       Art
   George    9-Mar 10:45 AM 11:45 AM      1.0    25       Art
    Ray      9-Mar 10:45 AM 11:45 AM      1.0    19       Art
      -        -        -          -       -      -        -
                                                            120
 Appendix D-3 (Machine Shop Worksheet 3)


                  1999 Machine Shop Worksheet
Team Member Date Start Time Finish Time Hours Part No. Supervisor
   George    9-Mar 1:00 PM     7:00 PM    6.0   25        Art
    Ray      9-Mar 1:00 PM     7:00 PM    6.0   25        Art
    Ryan     9-Mar 1:00 PM     2:50 PM    1.8   19        Art
   Justin    9-Mar 2:00 PM     5:25 PM    3.4   19        Art
    Ryan     9-Mar 5:15 PM     7:00 PM    1.8   19        Art
   Justin    9-Mar 6:30 PM     7:00 PM    0.5   34        Art
   George   10-Mar 7:30 AM     9:30 AM    2.0   34        Art
    Ray     10-Mar 9:00 AM 11:00 AM       2.0   34        Art
   George   10-Mar 10:45 AM 11:45 AM      1.0   34        Art
   George   10-Mar 1:00 PM     3:30 PM    2.5   34        Art
    Ryan    10-Mar 2:00 PM     3:30 PM    1.5   34        Art
   Justin   25-Mar 8:45 AM 10:45 AM       2.0   36        Art
   George   25-Mar 10:45 AM 11:45 AM      1.0   36        Art
   George   25-Mar 1:00 PM     2:45 PM    1.8   36        Art
   Justin   25-Mar 1:50 PM     2:45 PM    0.9   36        Art
   George    5-Apr 10:45 AM 11:45 AM      1.0    4        Art
   George    5-Apr 1:05 PM     2:50 PM    1.8    4        Art
    Ryan     5-Apr 2:30 PM     5:15 PM    2.8    4        Art
   George    5-Apr 3:20 PM     5:45 PM    2.4    4        Art
    Ray      6-Apr 1:45 PM     3:30 PM    1.8   all       Art
   George    7-Apr 10:30 AM 11:45 AM      1.3   all       Art
   George    7-Apr 1:00 PM     6:00 PM    5.0   all       Art
    Ray      7-Apr 5:00 PM     6:00 PM    1.0   all       Art
   George    9-Apr 1:00 PM     1:50 PM    0.8   all       Art
      -        -        -          -       -     -         -
      -        -        -          -       -     -         -
      -        -        -          -       -     -         -
      -        -        -          -       -     -         -
      -        -        -          -       -     -         -
      -        -        -          -       -     -         -
      -        -        -          -       -     -         -
      -        -        -          -       -     -         -
      -        -        -          -       -     -         -
      -        -        -          -       -     -         -
      -        -        -          -       -     -         -
      -        -        -          -       -     -         -
      -        -        -          -       -     -         -


                                                          121

				
DOCUMENT INFO
Categories:
Tags:
Stats:
views:29
posted:5/22/2012
language:English
pages:121