the university of south alabama school of ...chair of thesis committee: dr. michael v. doran...
TRANSCRIPT
THE UNIVERSITY OF SOUTH ALABAMA
SCHOOL OF COMPUTER AND INFORMATION SCIENCES
AN ADAPTIVE LEARNING SYSTEM:
THE USE OF A ROBOTIC PUTTER
By
Jason A. Alfano
A Thesis
Submitted to the Graduate Faculty of the University of South Alabama
in partial fulfillment of the requirement for the degree of
Master of Science
In
Computer Science
August 2001
Approved: Date: ________________________________________________________________________ Chair of Thesis Committee: Dr. Michael V. Doran ________________________________________________________________________ Member of Committee: Dr. David D. Langan ________________________________________________________________________ Member of Committee: Dr. Jeffrey P. Landry ________________________________________________________________________ Member of Committee: Dr. Thomas G. Thomas Jr. ________________________________________________________________________ Director of Graduate Studies: Dr. Roy J. Daigle ________________________________________________________________________ Dean of Computer and Information Sciences: Dr. David L. Feinstein ________________________________________________________________________ Dean of Graduate School: Dr. James L. Wolfe
AN ADAPTIVE LEARNING SYSTEM:
THE USE OF A ROBOTIC PUTTER
A Thesis
Submitted to the Graduate Faculty of the University of South Alabama in partial fulfillment of the requirement for the degree of
Master of Science
In
Computer Science
By Jason A. Alfano
B.S., University of South Alabama, 2000 August 2001
< Dedication>
ii
ACKNOWLEDGEMENTS
I’d like to thank the Academy and all my fans.
iii
TABLE OF CONTENTS
LIST OF TABLES............................................................................................................. vi
LIST OF FIGURES .......................................................................................................... vii
ABSTRACT..................................................................................................................... viii
Chapter 1: Introduction....................................................................................................... 9
Chapter 2: Background ..................................................................................................... 13
2.1 Robotics .......................................................................................................... 13 2.1.1 Hardware.............................................................................................. 14 2.1.2 Wheeled vs. Legged Robots ................................................................ 14 2.1.3 The Robotic Putter ............................................................................... 15
2.2 Planning .......................................................................................................... 16 2.3 Learning .......................................................................................................... 17
2.3.1 Types of Learning ................................................................................ 18 2.3.2 Neural Networks .................................................................................. 18
2.4 Computer Vision............................................................................................. 20 2.4.1 Color Segmentation ............................................................................. 20 2.4.2 Lens Distortion..................................................................................... 21
2.5 Path Planning .................................................................................................. 22 2.5.1 A* Search............................................................................................. 22 2.5.2 Quasi-Time-Optimal Path Planning Method ....................................... 25 2.5.3 The Quadtree Method .......................................................................... 27 2.5.4 Sub-Optimal Obstacle Avoidance........................................................ 29 2.5.5 Shortest Path Planning for Tethered Robots........................................ 32
2.6 ARNIE P ......................................................................................................... 34 2.7 Conclusion ...................................................................................................... 35
Chapter 3: Methodology ................................................................................................... 36
3.1 The Baseline Test............................................................................................ 36 3.1.1 Method of the Baseline Test ................................................................ 37
iv
3.1.2 Results of the Baseline Test ................................................................. 37 3.2 The Environment ............................................................................................ 38 3.3 The Software................................................................................................... 40
3.3.1 The Vision System............................................................................... 41 3.3.2 PuttSoft ................................................................................................ 44
3.4 Experiments .................................................................................................... 53 3.4.1 Experiment 1 ........................................................................................ 53 3.4.2 Experiment 2 ........................................................................................ 55
Chapter 4: Results and Analysis ....................................................................................... 58
4.1 Results and Analysis of Experiment 1 ............................................................ 58 4.2 Results and Analysis of Experiment 2 ............................................................ 60
4.2.1 Results of Experiment 2 on Course 1 .................................................. 62 4.2.2 Results of Experiment 2 on Course 2 .................................................. 64
Chapter 5: Conclusions..................................................................................................... 67
Chapter 6: Future Directions............................................................................................. 69
REFERENCES ................................................................................................................. 72
APPENDICES
Appendix A – Default Grid Values ...................................................................... 75 Appendix B – Experiment 2 Course 1 Raw Data Listing..................................... 80 Appendix C – Experiment 2 Course 2 Raw Data Listing..................................... 98
VITA............................................................................................................................... 114
v
LIST OF TABLES
Table 3.1 - Right-handed Baseline Test Results............................................................... 37
Table 3.2 - Left-handed Baseline Test Results ................................................................. 38
Table 3.3 - Momentum Loss Test Results ........................................................................ 46
Table 3.4 - Baseline Test Results for the Modified Putt On Fabric.................................. 54
Table 4.1 - Experiment 1 Results for Left-handed First Putt............................................ 59
Table 4.2 - Experiment 1 Results for Right-handed First Putt ......................................... 59
Table 4.3 - Experiment 2 Results for Course 1................................................................. 61
Table 4.4 - Experiment 2 Results for Course 2................................................................. 62
vi
LIST OF FIGURES
Figure2.0.1 - The Configuration-Space Transformation .................................................. 24
Figure 2.2 - Path Planning by Cell Decomposition .......................................................... 26
Figure 2.3 - An Example of the Quadtree Method ........................................................... 28
Figure 2.4 - Avoidance of One Obstacle .......................................................................... 30
Figure 2.5 - Avoiding Infinite Loops................................................................................ 31
Figure 2.6 - Algorithm SP (Xavier, 1999) ........................................................................ 33
Figure 3.1 - The Putting Environment .............................................................................. 40
Figure 3.2 - Orientation Markers ...................................................................................... 43
Figure 3.3 - Learning Grid................................................................................................ 44
Figure 3.4 - Vector Projection .......................................................................................... 49
Figure 3.5 - Experiment 2 Course 1.................................................................................. 56
Figure 3.6 - Experiment 2 Course 2.................................................................................. 57
Figure 4.1 - Optimal Putt for Course 1 ............................................................................. 63
Figure 4.2 - Optimal Putt for Course 2 ............................................................................. 65
vii
ABSTRACT
Alfano, Jason, M.S. University of South Alabama, August 2001. An Adaptive Learning System: The Use of a Robotic Putter. Chair of Thesis Committee: Dr. Michael V. Doran
Artificial intelligence is a rapidly expanding area within the field of computer
science. An important aspect of artificial intelligence is the concept of computer adaptive
learning. The purpose of this research was to apply the concept of computer adaptive
learning to a new domain through the use of robotics. More specifically, this project
involved the design and implementation of a learning algorithm, which allowed a robotic
putter to adapt to the layout of a putting surface and to improve its putting accuracy. The
design of this algorithm was based on learning, using recorded putts on a specific course.
The algorithm adapted based on past behavior. The results of using such a method
showed that the putter improved its performance over time as it adapted to the terrain of
the course. The use of the adaptive learning methods in this thesis might be applied to
other areas.
viii
Chapter 1: Introduction
This research explores the methods needed to implement a system that can adapt
to its surrounding environment and learn from mistakes without human interaction.
Before this task could be accomplished, the following research question had to be
answered. Can existing knowledge of adaptive learning be applied to the domain of
robotics, allowing a robot to improve its putting accuracy over a number of trials?
There are several reasons why this topic serves as a promising research area.
Learning constitutes one of the biggest challenges in the control of mobile robots. We
have achieved the concept of learning by direct input-output associations, but much still
remains to be achieved in dealing with the question of how to completely utilize a robot's
sensory perceptions (Nehmzow, 2000).
To meet the goals of this research, an experiment was conducted using a robotic
putter. The putter was expected to play miniature golf on a course unknown to the robot.
When humans play miniature golf, they first visually scan the course to develop a plan
for making a putt. A person must locate the hole and identify obstacles on the path in
order to determine the most efficient putt. Unless they have played that hole before, their
first attempt is usually not perfect. The robotic putter, although not currently capable of
competing on a human level, was able to learn and adapt to a course in the same manner
9
as a human. This required the use of a vision system to locate the robot, the ball, and any
obstacles on the putting surface. The input from the vision system provided the cognitive
software with the ability to examine the course, make a putt, track the path of the ball,
make corrections for future putts on that course, and observe whether or not the putt was
successful.
Numerous other studies have been conducted that involve game playing.
Andersson (1998) developed a robot ping-pong player. Andersson gives a number of
technical and non-technical reasons for the integration of game playing and robotics. His
non-technical reasons include that most games are easy to understand, and that they allow
progress in a machine’s performance to be easily observed. Ping-pong and other games
also provide fairly stable problems, which will not soon become obsolete. On a more
technical level, the real-time characteristics and precise calculations required to play
ping-pong allow the problem to be generalized across many areas of robotics, from
sensing, to processing, to actuation, and to system design. The system must be accurate
and able to adapt to its changing environment. The overall complexity of ping-pong
makes it a good experimental task for a robot to master.
Webster and Wei (1992) introduced the idea of robotic putting with the intelligent
golfing system ARNIE P (Automated Robotic Navigational unit with Intelligent Eye and
Putter). ARNIE P was developed to explore the problems of robotic performance using
hand-eye coordination and intelligent feedback mechanisms. These researchers state that
there are four main reasons for choosing robot golf as a research area. The first reason is
that putting is difficult for humans and requires many years of practice to be proficient.
For that reason, putting is assumed to be a difficult task for a robot to accomplish as well.
10
Secondly, putting requires a clever algorithm for hand-eye coordination. The third
reason is it requires a learning algorithm in order to improve performance. Lastly, it is a
constrained environment to conduct experiments with artificial intelligence and robotics
(Webster, 1992).
Technology similar to this research is already being applied in useful situations.
Urban search and rescue (USAR) is currently developing robots that can perform
searches through collapsed or damaged structures for human survivors (Murphy, 2000).
The military has developed completely autonomous four-wheelers that can track an
enemy tank and destroy it with deadly accuracy (Pioneer, 1999). NASA is currently
building wheeled rovers to explore new terrain on planets that humans cannot explore.
The rover is completely autonomous and has the capabilities of functioning even when
flipped on its back (Pioneer, 1999).
Although the study of robotics and artificial intelligence is very popular, we still
do not have what many humans would consider to be "intelligent robots" (Nehmzow,
2000). The adaptive learning algorithm for the robotic putter has the capabilities of being
generalized, reused, and improved upon to implement similar algorithms in the process of
controlling future robots. The scope of miniature golf requires this project to incorporate
many aspects of computer science. The vision system used by the software provides an
accurate layout of the environment. This information was interpreted to plan a putt based
on the location of the ball and navigate the putter around the environment. The vision
system was able to track the ball and the robot, providing feedback to the system for
improvement. The algorithms used to achieve these tasks might expand to wider
domains, particularly in the areas path planning and object tracking.
11
12
Chapter 2: Background
This research relied on several areas of computer science. Each area contributed
to the overall direction and success of the research project. An understanding of each
area was necessary and how each contributed to this research will be discussed. It
required the application of each topic to form an adaptive system to solve this problem.
The following areas will be discussed: robotics, planning, machine learning, computer
vision, path planning, and the heuristics used by Webster and Wei (1992). Each will be
examined in consideration of how it factored into the solution to the problem.
2.1 Robotics
The study of mobile robotics is an interesting research area for several reasons.
One reason is that the ability to turn a computer on wheels into an intelligent agent that
can recognize its surroundings, navigate, and adapt from experience requires the
application of several disciplines. Also, there are many practical uses for mobile robots,
including transportation, exploration, surveillance, inspection, and cleaning (Nehmzow,
2000). This section will briefly cover some areas to consider when studying robotics.
13
2.1.1 Hardware
Robots must have a way of interacting with their environment. Depending on the
desired functionality of the robot, different actuators and sensors may be used to build the
robot. The most commonly used actuators are electric motors. They are easy to control
and provide reasonable torques and satisfactory control (Nehmzow, 2000).
Sensors are physical devices that can measure properties of the robot’s
environment. They deliver low-level information about the surroundings that can be
interpreted into meaningful data. Sensors cover a range of devices from tactile bumpers,
which detect physical contact, to cameras, which can provide the robot with sight
(Nehmzow, 2000).
Every type of sensor has its advantages and disadvantages. Sensors such as
tactile bumpers must be mounted onboard. This gives the robot a local perspective,
allowing it only to observe part of its surroundings at a time. Vision can be implemented
both globally and locally. While more difficult to decipher, the input from a global
vision system can provide a robot with knowledge of its entire surroundings without
having to tolerate the restrictions associated with several onboard sensors (Kruse &
Wahl, 1998).
2.1.2 Wheeled vs. Legged Robots
Before a robot can perform a task, it must first be able to move. The physical
structure of a robot depends on the operations it can perform. Wheeled robots are the
simplest to control. They are physically stable machines and can move very quickly on
14
most level surfaces. Unfortunately, they are limited by rough terrain such as stairs or
rocky surfaces. For this reason, wheeled vehicles are only used in situations where speed
and stability are key factors and there is little or no need for difficult exploration
(Pioneer, 1999).
Another design approach is that of a legged robot. When they are properly
designed and built, legged robots are far more versatile than the wheeled platforms. The
number of legs used on a robot will depend on its desired functionality. More legs give a
robot more stability and better control. However, this is a trade-off for agility, speed,
weight, and power needed to run the machinery (Pioneer, 1999).
2.1.3 The Robotic Putter
The robotic putter used in this research was constructed from a small PVC
platform, a plastic putting arm, three wheels, and four Hobbico CS-51 Standard servos,
which are the actuators that control the movements of the robot. An onboard servo
controller activates the servos by receiving commands from the workstation to which the
robot is connected. Two of the wheels are controlled by servos, while a third caster
wheel maintains the balance for the platform. The remaining two servos provide the
robot with base rotation and arm motion to make two independent axes of movement for
putting. However, the base servo was never used in this research because rotating it
often hindered the robot’s ability to swing the putting arm without hitting the platform.
For this reason, the base servo was always set to align the putting arm perpendicular to
the facing direction of the robot.
15
The servos have a range of 255 discrete positions [0…254], which spans
approximately 190° of motion. The putting arm is controlled by moving its servo from
one extreme to the other with a rest position of 126. The servos that control the wheels
were modified to allow continuous rotation. Instead of having a range of positions, the
modified servos have a range of approximately 40 speeds [127…166] and [86…125]. A
value greater than 126 produces a clockwise spin while a value less than 126 produces a
counterclockwise spin. Turning the wheels at the same speed in the same direction
moves the putter forward or backward. The robot can also turn by moving one wheel
faster than the other or spin by rotating the wheels in the opposite direction of each other.
2.2 Planning
In order for a robot to make decisions it must have the ability to form a plan to
reach a particular goal (Andersson, 1988). The word "plan" suggests a sequence of
actions that when followed, leads to a desired goal. Two basic methods involved in
planning in artificial intelligence are the STRIPS method and the use of situation
variables (Winston, 1992; Fikes, Hart, & Nilsson, 1972).
The STRIPS method uses a set of assertion additions and deletions to reflect
physical movements. For example, the deletion of ON (LAMP, TABLE) and the
addition of ON (LAMP, FLOOR) represent the action of moving the LAMP from the
TABLE to the FLOOR. Using assertions such as these we can create a plan that will
achieve a specific goal by searching for a set of operations that will lead from an initial
set of assertions to a goal set of assertions (Fikes, Hart, & Nilsson, 1972).
16
By a process called backward chaining, the effort put forth to reach a goal state
can be reduced. Backward chaining is the act of starting at the goal state and searching
backwards through operators for a particular addition pattern. Once found, the addition
pattern becomes the new goal state and the process continues until all prerequisites of the
operator are satisfied. (Fikes, Hart, & Nilsson, 1972).
Another method of planning is through the use of situation variables in logic. In
cases where situations change over time, situation variables prove to be useful in
developing a plan of action. For example, ON (LAMP, TABLE) would become ON
(LAMP, TABLE, S) where S represents a situation where the LAMP is on the TABLE.
For any other situation we cannot say that the statement ON (LAMP, TABLE) is true.
With the use of situation variables, planning in a time/state changing environment is
possible, which allows the incorporation of planning into robotics (Winston, 1992; Fikes,
Hart, & Nilsson, 1972).
2.3 Learning
One result of human learning is interaction with the surrounding environment.
The majority of the skills used to move around within the environment are learned at a
very early age. When an infant plays, crawls, or looks around, it has no explicit teacher,
but it does have a direct sensorimotor connection to its surrounding environment (Barto
& Sutton, 1998). By exercising this connection, the child learns what happens to its
surroundings as a result of its actions and vice versa. In the same manner as a child, a
robot can learn by recording and processing feedback data from its environment.
17
2.3.1 Types of Learning
Two basic types of learning are supervised learning and unsupervised learning.
Supervised learning is learning by following examples provided by an outside source.
Although important, this type of learning is not adequate for training machines through
interaction (Barto & Sutton, 1998). Unsupervised learning is more flexible and is ideal
for machine learning through interaction with the environment.
One approach to unsupervised learning, reinforcement learning, is more focused
on reaching a goal by interacting with surroundings than are other methods of machine
learning. By using this method, a robot learns so as to maximize a numerical reward
signal (Barto & Sutton, 1998). The robot must discover which actions result in the
greatest rewards by performing them in a trial-and-error fashion. In some cases, the
actions performed affect the next reward and subsequent rewards to come, called the
search and delayed reward. The trial-and-error and search and delayed characteristics are
very important aspects of reinforcement learning.
2.3.2 Neural Networks
To understand what a neural network is and how it works, we must first
understand the concept of an artificial neuron. We can think of an artificial neuron as a
device or node that receives one or more input lines. These devices are called neurons
because they mimic the activity of neurons in the human brain. A neuron’s input lines
18
can carry signal strengths represented by a pattern of numbers, which implies that the
order of these numbers is important (Bharath & Drosen, 1994).
The neuron converts the inputs signals into a net input. The net input is usually
calculated using what is called an activation function. One simple activation function
passes the sum of the input values through a threshold function, which determines the
value of the output. For example, the output of a node is one if the sum is greater than
the specified threshold value or zero if the sum is less than the threshold value (Winston
1992).
An artificial neural network is a network of interconnected artificial neurons
(Bharath & Drosen, 1994). Neural networks are usually viewed in layers where the
layers are fully interconnected, but the neurons within a layer have no interconnection
between them. One of the most widely used neural networks is the multi-layer feed-
forward network. This type of network consists of an input layer of neurons, one or more
hidden layers of neurons (they are considered hidden because their outputs are not
observable), and an output layer of neurons. Each neuron calculates its output based on
the sum of its inputs and its activation function.
In order for a neural network to learn, it must be trained. During the training
process, the weights associated with each link in the network are manipulated to produce
a desired output. By training a neural network, it can mimic both supervised and
unsupervised types of learning (Jain, Johnson, & Rooij, 1996).
In the supervised form of learning, a target value is provided as a part of the
training data. In this case, the training data is the set of inputs values along with its
associated output value for a specific training cycle. During the training process, these
19
values are fed back into the network until the weights are sufficiently adjusted to produce
an output within the desired range of the target value (Jain, Johnson, & Rooij, 1996).
Unlike supervised learning, there is not a specified target value to reach while
training under unsupervised learning. Instead, the set of input data and output data are
repeatedly applied to the network until a stable system is reached (Jain, Johnson, &
Rooij, 1996).
2.4 Computer Vision
“The more a robot knows about its environment, the more efficiently it can
operate” (Kruse & Wahl, 1998). Using an external camera-based vision system, a global
mapping of the robot’s environment can be continuously updated, allowing path planning
and collision avoidance to be done efficiently. This section describes some techniques
used in detecting objects by color and issues with camera lens distortion.
2.4.1 Color Segmentation
Vision systems using object segmentation by color are crucial in real-time mobile
robot applications where a dynamic environment is required. The leading techniques
required to accomplish this include linear color thresholding, nearest neighbor
classification, color space thresholding, and probabilistic methods (Bruce, Balch, &
Veloso, 2000).
Linear thresholding is the process of dividing the color space into 3-dimensional
planes. Each pixel is classified according to the plane it lies in. Nearest neighbor
20
classification is performed by classifying a pixel according to a pre-determined set of
values that have a distinct location in color space. Color space thresholding uses a set of
constant thresholds that classify a color class as a rectangular block in color space. The
last method mentioned uses a pixel’s individual color components as indices in a multi-
dimensional histogram. The real number at this location specifies the probability of
membership within a particular color class. Each of these methods has advantages and
disadvantages in efficiency and effectiveness. Bruce et al (2000) developed a color
segmentation system that was used in this research, which utilizes all of these techniques
with emphasis on efficiency.
2.4.2 Lens Distortion
A desktop camera often exhibits a certain amount of lens distortion, especially
radial distortion (Zhang, 2000). There are two types of radial distortion: barrel distortion,
which occurs when the off-axis magnification is weaker than at the center, and
pincushion distortion, which occurs when the opposite is true. In order to get accurate
locality information on objects within the robot’s environment, radial distortion must be
corrected.
Polynomial approximations of radial distortion follow the form
r = ρ + k1ρ3 + k2ρ5
where r is the radius of the undistorted image, ρ is the radius of the distorted image, and
k1 and k2 are coefficients of radial distortion. The distortion can usually be approximated
using only the first and third power of ρ (Walton, 1995). The radius of the undistorted
21
image can be used to compute the undistorted pixel coordinates given the known
distorted pixel coordinates.
2.5 Path Planning
“Motion planning that designs a path to connect initial position and final position
is one of the most essential problems in robotics” (Yamamoto, Iwamuri, & Mohri, 1999).
It is important that a path-planning algorithm is chosen based on the instance of the
problem and the constraints provided by the physical robot itself. Robots can rely on a
number of different types of sensors from vision to onboard tactile sensors. The way a
robot perceives its environment can impact how a path-planning algorithm will behave in
that environment. This section explores five potential avenues of robot path-planning
problems.
2.5.1 A* Search
To understand the A* search, we must first take a brief look at two other
concepts: the branch-and-bound method and the dynamic-programming principle. The
branch-and-bound method always keeps track of partial paths that could possibly lead to
the shortest possible path. The shortest partial path is extended one level to the
neighboring nodes of its terminal node. These new paths are added to the set of partial
paths and the process is repeated until the goal is reached or all paths have been
exhausted. To ensure that the shortest path is found, the process should terminate when
22
the shortest partial path is longer than the shortest complete path instead of terminating
when the goal is reached (Cormen, Leiserson, & Rivest, 1990).
The dynamic-programming principle holds that “the best way through a
particular, intermediate node is the best way to it from the starting node, followed by the
best way from it to the goal. There is no need to consider any other path to or from the
intermediate goal” (Winston, 1992).
The A* Search is a combination of a smart branch-and-bound search and the
principle of dynamic programming. The term smart here means that the branch-and-
bound method can estimate the remaining distance to the goal. If the estimated
remaining distance is a lower bound on the actual distance, then the A* Search produces
an optimal solution to the problem. Generally the estimate may be assumed to be a lower
bound on the actual distance (Winston, 1992). The algorithm is as follows:
• Form a queue containing the root node • Until the a path in the queue terminates at the goal or the queue is empty
o Dequeue a path, and extend path by all neighbors of its terminal node o Reject all new paths with loops o If two or more paths reach a common node, keep only the one with the
minimal cost o Sort the entire queue by the sum of the path length and a lower-bound
estimate of the cost remaining, with least-cost paths in front. o If the goal node is found, announce success; else, announce failure
(Winston, 1992)
23
Initial Position
Desired Position
Initial Position
Desired Position
Initial Position
Desired Position
Initial Position
Desired Position
Initial Position
Desired Position
Initial Position
Desired Position
Figure2.0.1 - The Configuration-Space Transformation
Figure 2.1 illustrates a robot motion-planning problem in a simple environment
consisting of a triangular robot and two obstacles. To apply the A* Search procedure to
robot path planning, the problem must be described in a simpler representation. The new,
simpler representation involves navigating a point around virtual obstacles called
configuration-space obstacles (Winston, 1992).
Ordinary obstacles can be transformed into configuration-space obstacles by
sliding the robot around the obstacle, keeping track of an arbitrary tracing point as the
robot is moved. As the tracing point is moved around the obstacle, the boundary of the
24
configuration-space obstacle is created. If the point remains outside this boundary the
robot will be able to maneuver around the object collision-free (Winston, 1992).
To find the shortest path, a graph is created. In this case, edges between nodes
are only placed when there is a clear line of sight between the nodes, creating what is
called a visibility graph. From where the robot is, it can either see the goal position or it
cannot. If it can see the position, the shortest path is a straight line between it and the
goal. Otherwise, it must move to a visible vertex (Winston, 1992).
The A* search algorithm is fairly straightforward and simple to follow. However,
some assumptions must be made in order for this method to successfully work. Unless
the robot is perfectly round, this method assumes no rotation of the robot will take place.
If the robot is allowed to or requires rotation during its navigation, several configuration
spaces must be made, corresponding to the various degrees of rotation for the robot. This
makes the search more difficult, involving motion not only through individual
configuration-spaces, but also from space to space.
2.5.2 Quasi-Time-Optimal Path Planning Method
Yamamoto et al (1999) propose a path planning method to control a mobile
platform with two independently driven wheels. They introduce the idea of a path
parameter to simplify planning when dealing with dynamics and kinematics constraints.
Using the path parameter, they divide the problem into two sub-problems: time-
optimization of a trajectory along a specified path and a search for an optimal path. The
remainder of this section will only cover their research on searching for an optimal path.
25
Start
Goal
(a) (b)
(c)Start
Goal
(d)
Start
Goal
(a) (b)
(c)Start
Goal
(d)
Figure 2.2 - Path Planning by Cell Decomposition
The path searching method uses B-spline control points to generate a path using
navigation time as a cost. The cost is calculated using the MTTPSP (Minimum Time
Trajectory Planning with Specified Path) algorithm (Yamamoto, Iwamuri, & Mohri,
1999). First, multiple paths are generated based on a global view of the environment.
Cell decomposition is used to generate the multiple initial paths. Searching the B-spline
control points then optimizes them. The method to generate multiple, collision-free paths
consists of four steps:
26
1. Capture the robot within a circle that covers its entire area. Extend the area of the obstacles by the radius of the circle. This reduces the robot to a point. Then, approximate the collision areas of the environment using polygons. – Figure 2.2(a)
2. Connect the nearest vertices of the polygons together except to other vertices belonging to the same polygon. This decomposes the environment into a set of convex cells. – Figure 2.2(b)
3. Search through all sequences of the cells from the cell containing the start point to the cell containing the goal point. – Figure 2.2(c)
4. For each sequence, connect the midpoints of the boundaries of the adjacent cells to create a set of paths made up of polygonal lines. Place control points on the lines to generate the possible robot paths using B-spline curves. – Figure 2.2(d) (Yamamoto, Iwamuri, & Mohri, 1999)
2.5.3 The Quadtree Method
Ghoshray and Yen (1996) present an obstacle avoidance algorithm that generates
a point-to-point path for a robot to follow in a given workspace. The algorithm uses a
concept they call a quadtree to map a workspace into a grid. A quadtree is a spatial
mapping in which a given region is divided into four contiguous squares called
quadrants. The quadtrees can then be treated as nodes in a graph. Each quadtree is
given a color of black or white, where black represents a quadtree that contains an
obstacle or part of an obstacle, and white represents a quadtree that does not.
Before the quadtree is constructed, the resolution λ of the quadtree is determined
by projecting the maximum configuration of the robot onto the x-y coordinate plane. A
root node is created which represents the entire environment. From this node, the
environment is hierarchically decomposed until the leaf nodes reach a resolution of λ. At
this point all leaf nodes should be marked white or black (Ghoshray & Yen, 1996).
The white node covering the starting position will be the robot’s start node, and
the white node covering the destination position will be the target node. A tree is
27
constructed containing only the start node. Searching the four adjacent nodes located to
the top, bottom, left and right of the start node expand the tree. If these nodes are black
or fall outside the workspace, they are pruned from the tree. This process is repeated on
all remaining nodes until the target node is reached or there are no white nodes left
unexplored (Ghoshray & Yen, 1996).
Start Position
TargetPosition
TargetNode
StartNode
Start Position
TargetPosition
Forbidden Region
Obstacle Region
Free Region PathOptimal Path
Start Position
TargetPosition
TargetNode
StartNode
Start Position
TargetPosition
Forbidden Region
Obstacle Region
Free Region PathOptimal Path
Figure 2.3 - An Example of the Quadtree Method
Ghoshray and Yen (1996) define an O-corner as the intersection between the x-
axis and y-axis at the robot structure in such a way that the lengths of the robot’s parts
are measured based on O-corner as the origin. After all paths have been determined, the
O-corner of each of the robot’s possible configurations is placed at the center of each of
the white nodes in the tree. If there is any intersection between the robot and the node,
the node is removed from the list of feasible collision-free nodes, and all paths using the
28
node are also deleted. At this point, all possible collision-free paths have been generated
from the start node to the target node. Once this is accomplished, the path with the
minimum distance is chosen as the optimal collision-free path. Figure 2.3 illustrates an
example of the quadtree workspace and the optimal path(s) chosen from it.
2.5.4 Sub-Optimal Obstacle Avoidance
Shiller (1999) presents an on-line planner for sub-optimal obstacle avoidance. It
generates near-shortest paths incrementally by avoiding obstacles one at a time.
Shiller first demonstrates the optimal avoidance of one planar obstacle, which is
called OB in Figure 2.4. The obstacle only affects the shortest paths from points within a
free-space called the shadow. The shadow is created by a point light source at
destination o. The tangent points along the edge of OB are called exit points since any
shortest path originating in the shadow must pass through them.
29
xo
a
b
o
OB
Shadow xo
a
b
o
OB
Shadow
Figure 2.4 - Avoidance of One Obstacle
The algorithm presented applies to environments satisfying the following
assumptions:
1. The free-space is connected (There are no obstacles with holes). 2. The boundary of each obstacle is a piecewise smooth closed curve. 3. The number of obstacles is finite, and the obstacles are non-intersecting, finite in
size, and do not overlap with the goal. In case of overlapping obstacles, they are represented as one obstacle (Shiller, 1999).
30
xo
o
xo
o
(a) (b)
xo
o
xo
o
(a) (b)
Figure 2.5 - Avoiding Infinite Loops
An earlier version of this algorithm also required that the goal lie outside the
convex hull of the union of all obstacles. This problem made the algorithm fall into an
infinite loop as seen in Figure 2.5(a). The latest version takes care of this requirement by
tracking exit points from which a shortest path was computed and choosing the next
shortest path as seen in Figure 2.5(b). They are stored in an ordered list Q with elements
Qi = {p, k} where p is an exit point and k is the number of times the point was visited.
The following algorithm shows how this is used:
Step 1. Initialize x = x0, i = 0 Step 2. Search Q for x
a. If none: i. Add the current point to Q, set i = i +1 (index for points in Q)
ii. k = 1, and Qi = {x, k} b. Else:
i. Remove all elements Qi, i > j, until Qj ={x, k}, set the current x and k to the values in Qj, k = k + 1, and update k in Qj
Step 3. Select the current obstacle Obm, from x to o a. If none:
i. Go to Step 5. Step 4. (Avoid Obm)
31
a. Compute and follow the kth distinct shortest path that avoids Obm to o until clearing Obm (reaching the exit point pm), set x = pm, and go to Step 2
Step 5. Move along (x, o) to o Step 6. Stop (Shiller, 1999)
2.5.5 Shortest Path Planning for Tethered Robots
Xavier (1999) considers a problem of planning shortest paths for tethered robots
with a tether of finite length in an environment with polygonal obstacles. For the
purposes of his research, an infinitely flexible tether is assumed that is always drawn
tight. However, the research should still be applicable in cases where tethers have
bounded curvature.
An instance if the shortest path planning problem for a tethered robot is defined as
I(O, L, X, u, s, g, c) where O is the planar environment of disjoint simple polygons with n
total vertices, L is the maximum length of the tether, u is the anchor point of the tether, s
is the starting position of the robot, g is the goal position of the robot, c is the type of
constraint a solution path must obey, and X is the tether’s initial configuration, given by a
path no longer than L from u to s. (Xavier, 1999).
There are three types of constraints, c, that the solution must follow: tether
constraints, obstacle constraints, and crossing constraints. The obstacle and tether
constraints state that the robot cannot intersect with any obstacles and that the tether can
slide freely within the environment, but must also not enter any obstacle. The tether must
bend around objects to maintain the latter constraint. If the robot can cross over the
tether, the robot is semi-planar. If it cannot, it is purely planar. If the robot can move the
tether to avoid crossing it, the robot is pushy planar (Xavier, 1999).
32
s
(a)
g
u
s
(b)
g
u
A B
C
s
(c)
g
u
A B
C
s
(d)
g
u
A B
C
s
(a)
g
u
s
(b)
g
u
A B
C
s
(c)
g
u
A B
C
s
(d)
g
u
A B
C
Figure 2.6 - Algorithm SP (Xavier, 1999)
As a result of his findings, Xavier devised an algorithm SP, illustrated in Figure
2.6, that solves the shortest path problem for a finite length, tethered robot under the
semi-planar constraint:
Let px: [0, l] R2 denote a path from u to s that follows X. Define the reverse path rx as rx (w) = px (l - w) for all w in [0, l].
1. Triangulate the environment such that all obstacle edges are triangles edges, and label each triangle as being an obstacle triangle or a free-space triangle.
2. Compute the visibility graph Gv of O∪ {g}, and use it to compute the shortest path from each vertex to g.
3. Find vertices of O∪ {g} visible from s and order them by angle relative to s.
33
4. Compute the changes that occur in the ordered set of vertices visible from rx(w) was w goes from 0 to l, and compute the order set of sections {Si} of rx on which this ordered set does not change. (Some sections may have zero length if general position is not assumed.)
5. For each Si, with corresponding interval [wi, wi+1] such that rx: [wi, wi+1] Si, in order:
a. For some point xi in Si and corresponding xi in [wi, wi+1] such that rx(xi) = xi, compute the set of vertices Vi containing
i. Each visible vertex if i = 0; ii. Each visible vertex that was not visible in the previous section,
otherwise. b. For each vertex v in Vi:
i. Let path qi, v be the path that is the concatenation of px | [0,l-xi], the line segment from xi to v, and the shortest path from v to g. (px | [0,l - xi] denotes “px restricted to [0,l - xi]”.)
ii. Compute the minimum length path q’i, v that is homotopy equivalent to qi, v.
iii. If the length of q’i, v is greater than L, then skip the rest of this loop body, go to step 5(b)i, and consider the next vertex in Vi.
iv. (Otherwise), let path pi, v be the path that is the concatenation of rx | [0, xi], the line segment from xi to v, and the shortest path from v to g.
v. Compute the minimum length path p’i, v that is homotopy equivalent to pi, v , compare the length of p’i, v to that of best solution so far, and set the best solution to p’i, v if its length is shorter (Xavier, 1999).
2.6 ARNIE P
ARNIE P's method of learning used feedback from a single putt. From the
feedback, the ARNIE P would make corrections to the speed, pitch, and angle parameters
in its calculations to repeat the same putt (Webster & Wei, 1992). The system
temporarily adapted to the putting terrain for one or more putts from a static location, but
was not able to memorize a surface for future play, from different locations or follow
through on missed attempts.
In order to make a putt ARNIE P first had to compute the distance to the cup
using binocular stereo vision. Once calculated, the distance was used to compute the
34
pitch of the club necessary to putt the ball that distance. The system used a constant
speed of the club, only varying the pitch to putt different distances. Lastly, the angle
necessary to line the robot up with the ball and the hole was computed in order to provide
a straight shot to the hole.
After a putt, the path of the ball was recorded to observe any necessary
adjustments in pitch and angle. To determine the necessary angle adjustments, the
difference between the actual angle of the putt and the computed angle to the cup was
calculated. The facing angle of the robot was adjusted by half of this difference. This
heuristic was sufficient in improving the accuracy of the putts after each adjustment,
rather than adjusting by the whole difference and risking the possibility of constantly
missing to the left and right of the hole.
2.7 Conclusion
Applying the concepts described in this section helped with the design of a
software system that controlled the robotic putter. Based on the budget available, a putter
has been designed with the ability to perform the desired tasks necessary for this
research. The putter uses its own methods of planning and learning, which were derived
from the previously discovered methods that have been mentioned. The adaptive
heuristics used by Webster and Wei were used and modified to fit the needs of this
research.
35
Chapter 3: Methodology
This research was conducted in four stages. Stage 1 was a baseline test of the
robot to determine its putting capabilities and constraints. Stage 2 was the development
of the physical putting environment based on the results of the baseline test. Stage 3 was
the development of the vision system and PuttSoft software that controls the robot, and
Stage 4 was the conducting of two experiments to determine if the hypotheses were
supported.
3.1 The Baseline Test
Before the putting environment was built, a baseline test was performed to
measure putting accuracy and distance on various surfaces. The primary objective of the
baseline test was to determine which surface provided the highest degree of accuracy and
the truest roll of the golf ball. The secondary objective was to find a putting distance
long enough to make for interesting research, but still fit within the viewing limitations of
the overhead camera. A rubber mat, pool felt, butcher paper, and drapery blackout fabric
were the four surfaces chosen because of their availability and varying textures.
36
3.1.1 Method of the Baseline Test
Because of possible inconsistencies with the hardware, the baseline test was
performed for both left-handed and right-handed putts. For each surface, the robot was
aligned to putt five times from both sides for distance. The five distances for each trial
were averaged for comparison. Next the robot was aligned to putt five times from both
sides for accuracy. For measuring accuracy a practice hole of regulation size was placed
at ½ of the average putting distance for that surface. The practice ring was placed at this
distance to ensure that the ball had enough momentum to roll over the lip of the ring.
Accuracy was measured as the number of successful putts made in the five trials. This
process was repeated with the practice hole being placed at ¾ of the average putting
distance for each surface.
3.1.2 Results of the Baseline Test
The following tables show the capabilities of the robotic putter performing on
different surfaces. The robot completed five trials on each of the four surfaces. These
results served as a baseline for conducting future experiments of this research. They
were presented and discussed (Alfano, 2000) in preliminary work on this project.
Table 3.1 - Right-handed Baseline Test Results
Rubber Mat Felt Paper Fabric Maximum Distance 6 ft. 5 in. 2 ft. 4 ¾ in. 4 ft. 9 ½ in. 3 ft. 9in. Minimum Distance 6 ft. 2 in. 2 ft. ¾ in. 4 ft. 6 in. 3 ft. 6 ½ in.
Average Distance 6 ft. 3 ¾ in. 2 ft. 4 ½ in. 4 ft. 7 ½ in. 3 ft. 8 in. Accuracy @ ¾ avg. Distance 1 for 5 5 for 5 5 for 5 5 for 5 Accuracy @ ½ avg. Distance 3 for 5 5 for 5 5 for 5 5 for 5
37
Table 3.2 - Left-handed Baseline Test Results
Rubber Mat Felt Paper Fabric Maximum Distance 6 ft. 9 ¾ in. 2 ft. 6 in. 5 ft. 1 in. 3 ft. 11 in. Minimum Distance 6 ft. 4 ½ in. 2 ft. 4 in. 4 ft. 9 ¾ in. 3 ft. 8 ¾ in. Average Distance 6 ft. 7 ½ in. 2 ft. 5 ¼ in. 4 ft. 11 ½ in. 3 ft. 9 in. Accuracy @ ¾ avg. Distance 2 for 5 5 for 5 4 for 5 5 for 5 Accuracy @ ½ avg. Distance 3 for 5 5 for 5 5 for 5 5 for 5
In addition to providing acceptable accuracy, the use of the paper and fabric as
putting surfaces resulted in putting distances that would fit within the view of the vision
system. While the felt surface would also satisfy this constraint, the short putting
distance would make for less interesting research. The rubber mat was not chosen due to
its poor accuracy readings and long putting distances, which exceed the limits of the
viewing area.
Choosing between the paper and the fabric became an issue when considering the
second putt requirement of hypothesis 1, which will be explained later in section 3.4.
Both surfaces provided the robot with acceptable accuracy, but the paper would allow for
a possible hole in one, which would not be useful in the study of hypothesis 1. The fabric
was also more durable than the paper and came in widths large enough to cover the
course in one strip. Therefore, the fabric was chosen as the putting surface for the two
experiments.
3.2 The Environment
When functioning in the open world, there are an endless number of problems and
obstacles people have to avoid. It would be impossible to program a robot to adapt to all
38
of them. For this reason, the putter was expected to operate in a closed-world system,
designed to provide it with a finite number of obstacles to overcome.
The putting environment was designed to fit within the constraints of the
overhead vision system. The base of the surface was built using a ¾ inch 4x8 ft.
particleboard nailed down to a framework of 2x4 boards. A regulation size hole was cut
out at 2 ft. from one end and centered over the width of the board to allow sufficient
room for the robot to maneuver. The fabric was stretched tight over the board and
stapled around the edges to ensure a smooth clean surface.
Bricks were chosen to use as obstacles because of their weight and hard flat
edges, which provide good elastic surfaces off of which the putter can bank a shot. They
could also easily be rearranged to build new courses or removed from a course to allow
the robot to play without obstacles. Cinder blocks were placed around the base, creating
a solid wall to keep the ball on the course and allow the robot to make bank shots if
necessary. (See Figure 3.1)
39
2 ft.
2 ft.
4 ft.
8 ft.
Figure 3.1 - The Putting Environment
3.3 The Software
Software was developed to accomplish vision sensory input and to control the
putting platform. It was necessary to use and interpret this input data to make intelligent
decisions and adapt to the environment. The control software handles all aspects of the
robot’s putting behavior and adjusts to what was observed from the environment.
40
3.3.1 The Vision System
The hardware for the vision system includes a Winnov Videum VO ISA capture
card and a Mintron Color CCD Camera. The camera was mounted approximately 9 ft.
above the putt course, providing a 5x9 ft. viewing area. The camera captured frames at a
resolution of 320x240 pixels with a color depth of 16 bits.
Bruce et al (2000) developed a new system, called CMVision, for real-time object
segmentation of color images. It can detect multiple objects of up to 32 colors and report
their bounding box and area at 30 Hz. The vision system software for this research was
written using the CMVision libraries. CMVision detects objects using color
segmentation by thresholding YUV color values. Once all objects are detected they are
sorted according to color and size. The vision system takes the object bounding box
information from the object lists and broadcasts it to the Client PC using UDP packets.
The lens of the camera exhibited significant barrel distortion on the images,
which provided inaccurate data on the location of objects within the environment. Before
the xy-coordinates could be sent to the client, the barrel distortion had to be corrected.
The camera calibration coefficients were found using the Microsoft Easy Camera
Calibration Tool software discussed in (Zhang, 2000). Using these values, the xy-
coordinates were transformed to the undistorted coordinates and sent over the network.
After correcting barrel distortion, the 4 x 8 ft. putting surface was reported by the vision
system to be 327x162 pixels wide. At this setting, a pixel was approximately one third
of an inch in size.
41
The objects necessary to be detected for the experiments included the ball,
surface, obstacles, and the robot. They all had to be distinct colors so that the system
would not become confused about the objects. The fabric used to make the surface was
tan. The bricks were wrapped in white paper. Both the ball and robot were yellow, but
the color of the robot was not used for its detection. Instead, two red markers were
placed on the robot to not only give it a position, but an orientation as well. The ball was
detected by taking the second largest item in the yellow object list.
The orientation of the robot was necessary for the software to know its absolute
facing angle. This allowed the robot to accurately orient itself in the correct direction for
navigating and putting. The face angle, θface, of the robot was calculated from the
coordinates of the markers, m1 and m2, using the following equation:
θface = tan-1((ym2 – ym1)/(xm2 – xm1)) + 135°
The locations of the two orientation markers are illustrated in Figure 3.2.
42
Marker 2
Marker 1
135º
m 2
m1
135º
Figure 3.2 - Orientation Markers
The surface and the obstacles, if any, were detected first and their position and
dimensions were sent to client PC for initialization of the putting software. After
initialization, the vision system continuously detected and sent the information of the two
markers and the ball location.
43
3.3.2 PuttSoft
The adaptive behavior was implemented as a system of converging angles and
velocities. The course was evenly divided into a 5x9 square grid, each comprised of its
own set of values that are updated as the system adapts.
20
34
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18
19 21 22 23 24 25 26 27
28 29 30 31 32 33 35
37
36
38 4039 41 42 43 44 45
20
34
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18
19 21 22 23 24 25 26 27
28 29 30 31 32 33 35
37
36
38 4039 41 42 43 44 45
Figure 3.3 - Learning Grid
The course was broken into grid squares in order to compensate for variation in
the values reported by the vision system as objects moved further from the center of the
camera’s view. A physical grid square was approximately 9½ x 10 ½ inches in size.
Within a grid square this size, the robot has the ability to position itself relative to the ball
to make an accurate putt using the current square’s values. Due to the variance in the
length of a putt, using a smaller grid size would decrease the probability of the ball
44
landing in the same square over multiple trials. This would increase the number of trials
necessary to allow the grid values to converge to the appropriate values. Each grid
square structure contains the following information:
• θoffsetleft and θoffsetright values to offset the angles that the robot lines up with the ball for both left-handed and right-handed putts
• historyleft and historyright arrays to keep a history of ten past angle by which the robot missed for both left-handed and right-handed putts
• velocityleft-high, velocityleft-low, velocityright-high, and velocityright-low values used to estimate the distances of left-handed and right-handed putts at both the normal speed (high) and the modified putt speed (low).
The grid offset angles and putt velocity values were initially randomly generated.
This was done to show that the system could converge to correct values from arbitrary
values. The history of missed angles was initialized to 360°. The reason for this will be
explained in the description of the state machine.
The velocities are used to estimate the distance the ball will roll for each putt. If
the ball bounces off of an obstacle or a wall, some momentum is lost in the collision.
The momentum lost is based on the velocity of the ball before the impact, but to
accurately compute the exact loss requires too many unknowns. For this reason, some
assumptions had to be made. First, the angular velocity of the putting arm was assumed
to carry over to the ball with no loss. Secondly, the loss of momentum of the ball after a
collision was assumed to be constant.
A Hobbico CS-51 Standard servo can rotate at an angular velocity ω of 60°/0.19
seconds. The radius r equal to the length of the putting arm was measured to be
approximately 4.1 inches. The velocity v0 of the putting arm was calculated using the
following equation:
45
v0 = ω * 2πr/360° v0 = 22.78 in/sec
Assuming the force due to rolling friction remains constant and was the only force
acting against the ball, a uniform negative acceleration is produced on the ball. Using v0
as the initial velocity of the ball, the acceleration, a, due to the force friction was
calculated. Since the acceleration was constant, the equation v2 = v02 + 2ad was used
with the final velocity v = 0. At this point, the average distance, d, of a putt with initial
velocity, v0, was the only other unknown. Performing ten putting trials and taking the
average of the distances obtained this distance, which was found to be 55.56 inches.
Once d was obtained, the acceleration a was given by:
a = -v02/2d
a = -4.67 in/sec2
To determine the loss of momentum of the ball, a series of small
experiments was performed to measure the distance the ball bounced off the cinder block
wall. The robot was placed at five different distances from the wall and made ten putts
toward the wall at each location.
Table 3.3 - Momentum Loss Test Results
Distance from the wall 18 in. 24 in. 30 in. 36 in. 42 in. Average distance of bounce 15 ¼ in. 13 ¼ in. 10 ¼ in. 6 ¼ in. 3 ½ in. Velocity before collision 19 in./sec 17 in./sec 15 in./sec 14 in./sec 11in./sec Velocity after collision 12 in./sec 11 in./sec 10 in./sec 8 in./sec 6 in./sec Percentage lost 36% 35% 37% 44% 49%
46
The velocity v before the collision was calculated according to the distance d of
the ball from the cinder block given by:
v2 = v02 + 2ad
The velocity of the ball after the collision was assumed to be a new initial
velocity v0 required to move the ball by the average distance of the bounce. Since the ball
stopped moving, the same equation v2 = v02 + 2ad was used with the final velocity v = 0,
giving:
v0 = (-2ad)½
The percentages of velocity lost appeared to converge to a constant value of 36
percent for the trials at 18, 24, and 30 inches away from the wall. The two trials
performed at 36 and 42 inches only provided a bounce off the wall between 6 ¼ to 3 ½
inches. A bounce from these putts would leave the ball at undesirable lie for the next
putt. Therefore, the percentages of velocity lost at these distances were not considered,
leaving a constant 36 percent to be used in estimating bank shots in the software.
PuttSoft was designed as a simple state system in which all processing activities
were executed based on the state of the machine. It was designed to receive messages
from the vision system, and parse them into the data necessary for computation. Upon
parsing a message in the control loop, the system variables are updated and the activity
corresponding to the current state is executed. The following is a description of the states
of the system.
INITIALIZE – This state is simply used to initialize all variables used within
the control loop. The current square is set to the square in which the ball is located. This
47
state is set when the system starts and whenever the user chooses to restart the putting
process. After the system is initialized, the state is set to FIND_PATH.
FIND_PATH – Most of the decision making for the system is done in this state
before any actions are carried out. The following is list of variables that must be known
prior to navigating and putting the ball:
• The angle of the putt, θputt • The necessary facing angle of the robot, θface • The necessary position to prepare for docking with the ball, the pre-docking
position • The direction of the putt, i.e. LEFT-HANDED or RIGHT-HANDED • The power of the putt, i.e. HIGH or LOW
The process of calculating these variables is based on the location of the ball. The
following is the procedure for calculating the optimal right-handed putt from a certain
location:
• Calculate the absolute angle θ from the ball to the hole • Until valid putt vector intersects with the hole or all 360° have been tried
o Project a putt vector of magnitude d for all right-handed putting powers in the direction of θ
o Estimate new ball position for each power, choosing the optimal lie, i.e. the closest point to the hole with an unobstructed view of the hole
o Project a 90° normal to the putt vector of magnitude equal to a constant pre-docking distance and offset the vector direction by the θoffsetright to produce the pre-docking position
o If the pre-docking position is valid, i.e. the robot can navigate to that point If the estimated putt is better than the best putt so far
• Set θface to normal 180° • Set θputt to the angle • Set the pre-docking position • Set the putt power • Set the current putt to the best putt so far
• Increment θ by 1°
48
This procedure is repeated for the left-handed putt, using all left-handed variables
and a negative 90° normal to the putt vector to compute the pre-docking position. Both
putts are compared to find the optimal putt.
θoffsetleft
θoffsetright
ball Putt vector
Figure 3.4 - Vector Projection
Once a pre-docking position is found, it is used, along with the current robot
location and the corners of all the configuration-space obstacles, as a node in creating a
visibility graph. After a visibility graph is created, the shortest path from the robot to the
pre-docking position is found using the A* Search algorithm. Once a path is found, it is
stored in a stack and the state is set to GET_TARGET.
GET_TARGET – In this state, the next node in the path stack is popped and is
designated as the current target. The state is set to DRIVE. If the stack is empty, the
49
docking position is calculated and used as the current target, and the state is set to
DOCK_DRIVE.
DRIVE – This state is used when the robot is navigating to its next point along
the path to the pre-docking position. The angle from the robot to the next point is
calculated. If the facing angle of the robot is within five degrees of this angle, then the
robot drives forward. Otherwise, it turns in the appropriate direction. If the robot is
within five pixels of the target position, the state is set to GET_TARGET to get the next
point in the path.
DOCK_DRIVE – In this state, the robot drives to the docking position. This
state differs from the normal DRIVE state in that the robot moves forward for 50 ms and
then stops to make sure then the software gets accurate position information from the
vision system on the next iteration of the control loop. When the robot is within three
pixels from the docking position, the state is set to DOCK_TURN.
DOCK_TURN – Once the robot has reached the docking position, it must spin to
face in the appropriate direction to make the planned putt. When it comes within two
degrees of the desired facing angle, the state is set to PUTT.
PUTT – Putt takes the previously determined putt direction and power and
swings the putting arm accordingly. As soon as the swing is complete, the state is set to
TRACK_BALL.
TRACK_BALL – In this state, the system tracks the ball movement after a putt.
When the ball’s position changes from its previous position, the new position is added to
the end of a ball path list. When the ball’s position does not change for more than 20
50
iterations of the control loop, the tracking stops, by changing the state to
ANALYZE_PATH. However, if the putt is successfully made, the state is set to DONE,
skipping the ANALYZE_PATH state since no adaptation is required.
ANALYZE_PATH – After the path of the ball has been stored, the system must
compare the actual putt to the putt that the robot attempted to make. First the distance of
the putt is calculated by taking the sum of all the distances between points within the ball
path list. Next the angle the ball was hit, θactual, is calculated and compared to the angle at
which the robot attempted to hit it, θattempt. Since the path of the ball does not always
make a perfectly straight line, the end point cannot be used to calculate the actual angle
of the putt. Instead, the point that best defines the angle is found and used. To do this, a
series of lines are projected from the initial location of the ball to all other points along
the path. The line that best defines the angle of the putt is the one that covers the most
points along the path.
Once the actual distance and angle of the putt are found, they are compared with
the expected data to produce values by which the system adapts. The distance of the putt
is compared to the estimated putt distance. If the difference between the distances is
greater than ten pixels (approximately 3 inches), the velocity value is changed
appropriately. If the putt went farther than estimated, the velocity value used to estimate
the distance is increased by 1 pixel/second. Otherwise it is decreased by 1 pixel/second.
This is the one component of the adaptive behavior. As the velocity converges to the
correct value, the estimation of the putt distance becomes more accurate.
51
The difference in angles, Δθ = θattempt - θactual, is the error in the putting angle. The
sign of Δθ determines the direction of the error. A positive Δθ represents a putt too far to
the right, while a negative Δθ represents a putt too far to the left. Once Δθ is calculated,
its absolute value is compared to the absolute values of the appropriate history array. If
the absolute value of Δθ is less than the absolute history values, the largest value in the
history is replaced with Δθ, and the appropriate θoffset in the current grid square is
updated using the following equation:
θoffset = θoffset - Δθ/2
The initial values of the history array were set to 360° to assure that any value of
Δθ would replace the largest history value in the initial trials. This allows the software to
fine tune the angles for each grid square and prevent large inconsistent values from
affecting the angles in the later stages of adapting. Using this method, the putts made
from the current grid square will converge to the correct putting angle over time. This is
the second component of the adaptive behavior. As θoffset converges to the correct value,
the estimation of the putt direction becomes more accurate.
Having both the putt velocities and angles converge to accurate values, the lie of
the ball can be more accurately estimated. After the actions for this state are completed,
the state is set to FIND_PATH to begin making the next putt.
DONE – This state stops all motion of the robot and the state remains here until
the user starts the putting process again.
52
3.4 Experiments
Two experiments were conducted in this research. Experiment 1 was designed to
support hypothesis 1: Given a flat surface with no obstacles, the putter will be able to
position itself to make a second putt using input from its overhead vision system.
Experiment 2 was designed to support hypothesis 2: Given a flat surface with an
obstacle, the putter will be able to play around the obstacle and adapt to the layout of the
course by either reducing the number of strokes per hole or converging to an optimal
path.
3.4.1 Experiment 1
The first experiment was designed to test the robot’s ability to consistently dock
with the ball in order to putt toward the hole. The putting course built in phase 2 was
used for this experiment. No obstacles were used and the ball was place in the center of
the course to give the robot a straight shot to the hole. To comply with the requirements
of the first hypothesis, the robot could not make a hole in one since it was required to
position itself for a successful second putt. To ensure that this always happened, the
course was designed to be par 2 by making the distance of the tee location 1.3 to 1.6
times greater than the distance obtained from the baseline test.
Due to the tightly stretched fabric over the particleboard, the robot was capable of
putting farther than the expected results given from the baseline test. Since the servos
used to build the putter are only capable of rotating at one speed, software had to be used
53
to slow the servos down enough to keep the robot from making a hole in one. A new
baseline test was run for the modified putt on the fabric, which determined the tee
positions for this experiment.
Table 3.4 - Baseline Test Results for the Modified Putt On Fabric
Left-handed Right-handed Maximum Distance 2 ft. 8 in. 2 ft. 6 in. Minimum Distance 2 ft. 4 ¾ in. 2 ft. 4 ¾ in. Average Distance 2 ft. 6 ¼ in. 2 ft. 5 ¼ in. Accuracy @ ¾ avg. Distance 5 for 5 5 for 5 Accuracy @ ½ avg. Distance 5 for 5 5 for 5
No learning was required in this experiment since the purpose of it was to see if
the robot could properly and consistently dock with the ball for a successful putt. The
offset angles for each grid square were manually modified to produce accurate putts for a
straight shot to the hole.
Ten trials were run for both left-handed and right-handed first putts. Since the
average putt distances for the modified putt differed by only one inch, the putt distance
for the left-handed putt was used to determine the tee positions. Placing the tee positions
at 1.3 to 1.6 times this distance produced a range of 39 to 48 inches from the hole. The
tee positions for each of the ten trials were spread over this range one-inch apart. The
modified putt was only used for the first putt of each trial. For each trial, the total
distance, lie of the ball, distance of the first putt, distance remaining, second putt
direction, and success was recorded. The robot was expected to complete each trial on
this course in two putts. Successful completion of the first course was deemed sufficient
54
to support the first hypothesis. The results of this experiment are shown in the next
chapter.
3.4.2 Experiment 2
The second experiment was designed to test the adaptive behavior of the robot.
Experiment 2 was performed on two courses to show that the robot could adapt in
different environments. On the first course, an obstacle was placed in the path to the
hole, requiring the robot to make a long putt past the brick for an easy second putt in the
hole. On the second course, obstacles were arranged to make the robot bank a putt off
the wall for a longer second putt to the hole.
Course 1, shown in Figure 3.5, was designed to show that the robot could putt the
ball past an obstacle and next to the hole for a short second putt. The tee position was set
at approximately 4 ft. 8 inches away from the hole. The obstacle was placed in front of
the hole slightly off center to force the robot to decide to putt past it on one side. A series
of trials were performed until the system converged to the estimated velocities and angles
necessary to successfully complete this course.
55
4 ft. 8 in.
Figure 3.5 - Experiment 2 Course 1
Course 2 was designed to show the robot would readily attempt a bank putt, if
necessary, to successfully complete the course. The distance of a bank shot made the
task of creating such a course difficult. In order to putt around an obstacle, the robot
would not only have to bank the ball off the wall, but hit it hard enough to produce an
acceptable lie to make a second putt. The robot will not make a putt if the estimated
position of the ball lies within the configuration space of an obstacle or the wall. This is
because of the robot’s inability to maneuver into these areas to make a second putt. For
this reason course 2, shown in Figure 3.6, was designed so that the robot would be forced
to make a bank shot without having to putt around an obstacle. Two bricks were placed
beside the tee position, constraining the area that robot had to maneuver. It could not
dock on the left or right side of the ball for a straight putt to the hole because of its size.
For this reason, the robot chose to make bank shot off the wall, moving the ball out of
56
this area and leaving it in a better position for a second putt. A number of trials were
performed until the system converged to the estimated velocities and angles necessary to
successfully complete this course.
Figure 3.6 - Experiment 2 Course 2
Successful completion of both courses was necessary to support the second
hypothesis. The robot was expected to putt around the obstacle(s) and adapt to the layout
of the course by either reducing the number of strokes per course or converging to an
optimal path. The results of experiment 2 on both courses are discussed in the next
chapter.
57
Chapter 4: Results and Analysis
In this chapter, the results of experiments 1 and 2 will be discussed. The results
of experiment 1 are necessary to support hypothesis 1: Given a flat surface with no
obstacles, the putter will be able to position itself to make a second putt using input from
its overhead vision system. The results of experiment 2 are required to support hypothesis
2: Given a flat surface with an obstacle, the putter will be able to play around the obstacle
and adapt to the layout of the course by either reducing the number of strokes per hole or
converging to an optimal path.
4.1 Results and Analysis of Experiment 1
The overall results of experiment 1 appear in Table 4.1 and 4.2. Table 4.1 shows
the results of the ten trials with a left-handed first putt and Table 4.2 shows the results of
the ten trials with a right-handed first putt.
58
Table 4.1 - Experiment 1 Results for Left-handed First Putt
Trial Total Distance
Distance Putt
Distance Remaining
2nd Putt Direction Success
1 48 in. 20 in. 28 in. Left-handed Yes 2 47 in. 25 in. 22 in. Left-handed Yes 3 46 in. 23 in. 23 in. Left-handed Yes 4 45 in. 21 in. 24 in. Left-handed Yes 5 44 in. 21 in. 23 in. Left-handed Yes 6 43 in. 20 in. 23 in. Left-handed Yes 7 42 in. 24 in. 19 in. Left-handed Yes 8 41 in. 24 in. 18 in. Left-handed Yes 9 40 in. 21 in. 19 in. Left-handed Yes 10 39 in. 27 in. 12 in. Left-handed Yes
Table 4.2 - Experiment 1 Results for Right-handed First Putt
Trial Total Distance
Distance Putt
Distance Remaining
2nd Putt Direction Success
1 48 in. 22 in. 26 in. Right-handed Yes 2 47 in. 23 in. 25 in. Right-handed Yes 3 46 in. 22 in. 24 in. Right-handed Yes 4 45 in. 20 in. 25 in. Right-handed Yes 5 44 in. 22 in. 22 in. Right-handed Yes 6 43 in. 22 in. 21 in. Right-handed Yes 7 42 in. 21 in. 21 in. Right-handed Yes 8 41 in. 19 in. 22 in. Right-handed Yes 9 40 in. 21 in. 19 in. Right-handed Yes 10 39 in. 20 in. 19 in. Right-handed Yes
For every left-handed first putt, each of the second putts was also left-handed.
This was also evident for each of the right-handed trials. The algorithm chooses which
side to putt from based on the location of the ball and the putter relative to that location.
If both left-handed and right-handed second putts are equally likely to be successful, the
position closest to the robot is chosen. Because of the fairly straight first putts, the robot
59
remained closer to the same side of the ball. Therefore, the algorithm always chose to
putt from the same side as the first putt.
Some of the first putts curved to the left or right. The slight drift of each of the
first putts can be attributed to the speed of the modified putt. At such slow speeds the
ball was assumed to be more susceptible to the effects of small imperfections in the fabric
and particleboard, causing it to drift slightly to one side or the other. This had no effect
validity of the experiment. However, it helped to show that the robot could make
successful second putts from various absolute angles in the direction of the hole.
The results of experiment 1 show that all second putts were successful for all 20
trials. The robot was capable of successfully making left-handed second putts in the
range of 28 to 12 inches as shown by the Distance Remaining column in Table 4.1.
Similar results in Table 4.2 show that the robot was capable of making right-handed
second putts in the range of 26 to 19 inches. This shows a set of values from which the
robot was able to make successful putts, but does not limit its capabilities to these ranges.
4.2 Results and Analysis of Experiment 2
The overall results of experiment 2 appear in table 4.3 and 4.4. Table 4.3 shows
the results of experiment 2 on course 1. Table 4.4 shows the results of experiment 2 on
course 2. For each course, the following data was collected for each putt: the putt grid
square number, the putt direction, the putt power, the estimated distance, actual distance,
the distance remaining to the hole, the angle missed, θoffset after the putt, and the
60
adapted putt velocity after the putt. Only the first two putts for each trial are shown in
the tables. The raw data for the both experiments are shown in Appendices A2 and A3.
Table 4.3 - Experiment 2 Results for Course 1
Grid Direction Power
Estimated Distance (inches)
Actual Distance (inches)
Distance Remaining (inches)
Angle Missed (degrees)
θoffset After (degrees)
Estimated Velocity After (inches/second)
1st Putts Trial 1 20 Left High 48.3 54.8 17.8 10.6 3.7 21.6Trial 2 20 Left High 49.8 53.6 14.2 4.3 1.6 21.9Trial 3 20 Left High 51.0 59.0 16.6 3.9 -4 22.2Trial 4 20 Left High 52.4 61.0 8.0 -1.9 0.6 22.5Trial 5 20 Left High 53.9 55.7 9.8 0.7 0.2 22.5Trial 6 20 Left High 53.9 52.4 12.1 4 -1.8 22.5Trial 7 20 Left High 53.9 * 102.2 8.9 -0.1 -1.7 22.8Trial 8 20 Left High 55.4 * 90.7 10.1 -0.1 -1.7 23.1Trial 9 20 Left High 56.9 59.0 11.3 2.2 -2.7 23.1
Trial 10 20 Left High 56.9 54.5 10.1 0.4 -2.9 23.1Trial 11 20 Left High 56.9 * 78.8 11.6 0.4 -3.1 23.4Trial 12 20 Left High 58.4 59.9 10.4 0.5 -3.3 23.4Trial 13 20 Left High 57.9 66.8 9.1 0.5 -3.6 23.5
2nd Putts Trial 1 43 Left High 55.4 45.3 27.0 6.9 4.5 22.5Trial 2 34 Left Low 14.2 14.2 0.0 0 3 12.1Trial 3 43 Left High 53.9 40.9 24.3 8.6 0.2 22.2Trial 4 34 Left Low 16.6 16.6 0.0 0 3 12.1Trial 5 34 Left Low 9.8 9.8 0.0 0 3 12.1Trial 6 34 Left Low 15.7 26.7 11.3 -2.8 4.4 12.4Trial 7 34 Left Low 8.9 8.9 0.0 0 4.4 12.4Trial 8 34 Left Low 10.1 10.1 0.0 0 4.4 12.4Trial 9 34 Left Low 11.3 11.3 0.0 0 4.4 12.4
Trial 10 34 Left Low 10.1 10.1 0.0 0 4.4 12.4Trial 11 34 Left Low 11.6 11.6 0.0 0 4.4 12.4Trial 12 34 Left Low 10.4 10.4 0.0 0 4.4 12.4Trial 13 34 Left Low 9.1 9.1 0.0 0 4.4 12.4
* These values were reported higher than the actual distances due to a misreading of the final ball location from the vision system.
61
Table 4.4 - Experiment 2 Results for Course 2
Grid Direction Power
Estimated Distance (inches)
Actual Distance (inches)
Distance Remaining (inches)
Angle Missed (degrees)
θoffset After (degrees)
Estimated Velocity After (inches/second)
1st Putts Trial 1 12 Left High 30.8 33.2 27.3 -5.3 0.7 20.7Trial 2 12 Left High 29.6 32.0 31.4 -3 2.1 20.7Trial 3 12 Left High 30.8 33.5 28.4 6.2 -0.9 20.7Trial 4 12 Left High 30.2 32.9 31.1 0.5 -1.2 20.7Trial 5 12 Left High 29.9 35.0 28.4 3.5 -2.9 21.0Trial 6 12 Left High 32.0 42.7 23.1 1.2 -3.5 21.3Trial 7 12 Left High 32.0 38.5 25.5 -7.7 0.3 21.6Trial 8 12 Left High 33.5 39.1 21.3 2.3 -0.8 21.9Trial 9 12 Left High 34.1 35.3 24.3 -2.9 0.6 21.9
Trial 10 12 Left High 34.1 35.0 25.8 -1 1.1 21.9Trial 11 12 Left High 34.1 35.0 24.9 -0.5 1.4 21.9Trial 12 12 Left High 34.1 35.9 24.0 6.5 1.4 21.9
2nd Putts Trial 1 5 Right Low 33.5 30.2 8.3 18.6 -0.3 17.5Trial 2 14 Right Low 31.4 22.8 12.4 16.6 -2.3 16.9Trial 3 5 Right Low 32.3 27.0 3.3 5 -2.8 17.2Trial 4 5 Right Low 31.4 31.4 8.3 4.6 -5.1 17.2Trial 5 5 Right Low 31.4 41.2 3.0 3.3 -6.7 17.5Trial 6 6 Right High 23.1 23.1 0.0 0 -5 20.4Trial 7 5 Right Low 32.3 21.0 5.3 -2.8 -5.3 17.2Trial 8 6 Right High 21.3 21.3 0.0 0 -5 20.4Trial 9 6 Right High 24.3 24.3 0.0 0 -5 20.4
Trial 10 6 Right High 25.8 25.8 0.0 0 -5 20.4Trial 11 6 Right High 24.9 24.9 0.0 0 -5 20.4Trial 12 6 Right High 24.0 24.0 0.0 0 -5 20.4
4.2.1 Results of Experiment 2 on Course 1
The tee position was placed in grid square 20 approximately 4 ft 8 inches from the
hole. The robot made all first putts left-handed because the default velocity in square 20
for left-handed high putts was greater than that of the right-handed putts. The system
adapted over time, choosing to make a long putt past the right side of the obstacle for a
short second putt from square 34.
62
20
34
Putt 1
Putt 2
Figure 4.1 - Optimal Putt for Course 1
In the first two trials, the software estimated the ball landing in square 33 on the
first putts. The actual first putts of the first two trials landed in squares 43 and 34
respectively due to incorrect velocity and angle values. After the third trial, the robot
began consistently putting to square 34 as estimated by the software. From square 34,
the angle offset values were able to converge to a value sufficient to make successful
second putts. This supports the assumption that the grid square size was adequate for this
research.
The second putts did not converge until the seventh trial. In trial 1 the robot
missed the hole three times before making a successful fifth putt. Trials 3, and 6 required
four putts. Although the second putts from grid square 34 in trials 2, 4, and 5 were
successful, the second putt in trial 6 was missed. This incident can be attributed to the
63
size of the grids. The grid squares are much larger in size than the ball. Even though the
first putts consistently land in grid square 34, the location of the ball within the grid
square might differ enough to make the angle offset values incorrect for the different
positions. Although the grid square size did not affect the overall results of this
experiment, using smaller grid squares to handle this problem will be discussed in
chapter 6.
Overall, the grid values converged, allowing the robot to consistently complete
the first course in two putts. Although the distance in inches remaining to the hole after
the first putts did not lessen with each trial, a decreasing trend can be seen in Table 4.3
under Distance Remaining. The angle offset value for the left-handed high putt changed
from the default value of 9° to a value of –3.3° as shown in the θoffset After column of
Table 4.3. Because the first putts were traveling farther than expected, the left-handed
high velocity also changed from 21.6 to 23.5 inches/second as shown in the Estimated
Velocity After column of Table 4.3.
4.2.2 Results of Experiment 2 on Course 2
The tee position was placed in grid square 12 between the obstacles and the top
wall. All of the first putts for each trial were made left-handed because the ball was
placed too close to the obstacles to position itself for a right-handed putt. The only
option the robot had was to make a bank putt off the top wall to position the ball for a
better second putt to the hole.
64
12
6Putt 1
Putt 2
Figure 4.2 - Optimal Putt for Course 2
As shown in Table 4.4, the absolute angle of the first putt converged to a value of
315.5° after nine trials, making the estimated position of the ball lie in grid square 6. In
the first five trials, the first putts landed in grid squares 5 and 14. As the angle
converged, less of the x-component of the ball’s momentum was absorbed by the
collision with the wall, causing the ball to travel farther in the x-direction, as shown in
the Actual Distance column of Table 4.4. This left the ball in the desired position in
square 6. After trial 8, the velocity of the putts for square 12 converged to a value of 21.9
inches/second, as shown in the Estimated Velocity columns, which allowed the software
to more accurately estimate the distance of the next putt and the angle to converge to
315.5°. Overall, the Distance Remaining to the hole after the first putt decreased over
time from 27.3 to 24 inches. The second putt from square 6 never had to be adjusted
because the default values were sufficient to make a successful putt from that location.
65
Since the first putt adapted after trial 8, the values of grid squares 5 and 14 never
had the opportunity to completely converge for a successful second putt. For this reason,
trials 1, 2, 3, 5 and 7 required three putts. Trial 2 required a total of four putts.
66
Chapter 5: Conclusions
In this chapter, the results of the experiments from Chapter 4 will show to be
related to the research hypotheses. Successful completion of experiment 1 was sufficient
to support hypothesis 1. Successful completion of the courses in experiment 2 was
evidence in supporting hypothesis 2.
As stated in Chapter 4, the first experiment was successfully completed. The
robot was able to properly dock with the ball in order to consistently make an accurate
second putt to the hole. Therefore, the results of experiment 1 support hypothesis 1:
Given a flat surface with no obstacles, the putter will be able to position itself to make a
second putt using input from its overhead vision system.
In the second experiment, the robot was able to adapt to the environments of both
courses. Course 1 demonstrated its ability to putt and navigate around an obstacle and
reduce the number of total putts per trial from five to two. Course 2 showed the robot’s
ability to bank a putt off the wall, providing a better lie for a second putt. The robot was
able to reduce the number strokes from four to two and optimize the putt to the hole.
Given the results discussed Chapter 4, experiment 2 supports hypothesis 2: Given a flat
surface with an obstacle, the putter will be able to play around the obstacle and adapt to
the layout of the course by either reducing the number of strokes per hole or converging
to an optimal path.
67
Overall, the evidence supporting the hypotheses provides an answer to the
question of this research. Existing knowledge of adaptive learning can be applied to the
domain of robotics, allowing a robot to improve its putting accuracy over a number of
trials.
68
Chapter 6: Future Directions
Many questions and ideas for future work arose during this research. Three areas
of future research derived from these ideas: improving or expanding upon the existing
methods, testing and comparing new methods with the existing methods, and expanding
upon the physical environment and hardware for more interesting research.
Some ideas to improve the existing methods include implementing dynamic
configuration-space obstacles for improved navigation and docking, increasing the
resolution of the learning-grid to test for increased putting accuracy, and expanding the
system to handle three-dimensional terrain mapping and adaptation.
To navigate in the environment, the robot used the A* Search algorithm described
in chapter 2. Configuration-space obstacles had to be generated from the obstacles in the
environment, based on the size of the robot. Since the robotic putter is not round, it is not
symmetric over all possible configurations. To handle this problem the worst-case
configuration scenario was used to create the configuration-space obstacles. This
constrained the maneuverability of the platform by causing the system to think the robot
could not fit a particular location when, in fact, it probably could. To remedy this
problem, dynamic configuration-spaces could be used as suggested by Winston (1992).
69
The idea of using a higher resolution learning-grid was recognized after
conducting experiment 2. Overall, the grid square size used in this research proved to be
adequate for this research. It is anticipated that increasing the resolution might increase
the number of trials necessary to converge to the appropriate values. However, there
were a few instances where a smaller grid resolution might have led to an improved
putting accuracy. Some interesting questions stemmed from this occurrence. Would a
smaller grid resolution improve the accuracy and precision of the robot? If so, what is
the optimal resolution? Assuming there is an increase in trials, is the trade-off between
the number of trials necessary to adapt and the improved accuracy worth the extra work?
In addition to improving the existing methods of this research, future work could
also consist of experimenting with new methods. The learning methods used in this
research were developed using a simple, but effective technique of converging angles and
velocities, which allowed the robot to adapt to the optimal putt on a particular course. A
question concerning the learning method of this research is whether a better method
exists.
The putting environment used in this research was confined by the viewing area
limitations of the camera and the robot’s maximum putting distance. In order to
undertake the experiment in a larger area, multiple overhead cameras would be
necessary. This would require matching and synchronizing images from each camera.
With the ability to view a larger area, several research opportunities could evolve. More
interesting courses with multiple obstacles could be designed to rigorously test the
capability of the robot. The robot could also be reengineered to extend its putting
70
distance to make for more interesting research, especially in calculating difficult bank
shots.
This research was conducted on a flat, level terrain. The ultimate research target
would be to putt on a more realistic terrain. This would require three-dimensional
mapping of the environment. To accomplish this task, it would be necessary to integrate
an onboard camera into the vision system to detect any hills or valleys in the
environment. Onboard vision could also improve the robot’s ability to accurately dock
with the ball before putting. The ability to adapt to such an environment would require a
method of estimating three-dimensional physics and a more complex learning technique
than that of this research.
Expanding this research into the areas described in this chapter would provide
even greater insights to the areas of robotics and machine learning. Implementing these
ideas would bring this research toward the ultimate goal of robotics and artificial
intelligence: to mimic human behavior and learning. In doing so, the robotic putter might
eventually be able to demonstrate competition with a human.
71
References
Alfano, J. A. (2000).
Andersson, R. L. (1988). A Robot Ping-Pong Player. Cambridge, Massachusetts: The
MIT Press.
Barto, A. G., & Sutton, R. S. (1998) Reinforcement Learning. Cambridge,
Massachusetts: The MIT Press.
Bharath, Ramachandran & Drosen, James. (1994). Neural Network Computing. Blue
Ridge Summit, PA: Windcrest/McGraw-Hill, Inc.
Bruce, J., Balch, T., & Veloso, M. (2000). Fast and inexpensive color image
segmentation for interactive robots. Proceedings of IROS-2000.
Cormen, T. H., Leiserson, C. E., & Rivest, R. L. (1990). Introduction to Algorithms The
MIT Press and McGraw-Hill.
Fikes, R. E., Hart, P. E., & Nilsson, N. J. (1972). "Learning and Executing Generalized
Robot Plans." In. Webber, Bonnie Lynn, and Nils J. Nilsson (Eds.). Nilsson.
Readings in Artificial Intelligence. (pp. 231-249). Palo Alto, California: Tioga
Publishing Company.
72
Goshray, S., & Yen, K. K. (1996). A Comprehensive Robot Collision Avoidance Scheme
by Two-Dimensional Geometric Modeling. Proceedings of the 1996 IEEE
International Conference on Robotics & Automation. 1087-1092.
Jain, L. C., Johnson, R.P., & Rooij, A. J. F. van. (1996). Neural Network Training Using
Genetic Algorithms. Singapore: World Scientific Publishing Co.
Kruse, E. & Wahl, F. M. (1998). Camera-Based Monitoring System for Mobile Robot
Guidance. Proceedings of the 1998 IEEE/RSJ International Conference on
Intelligent Robots and Systems. 1248-1253.
O’Rourke, J. (1993). Computational Geometry in C. Cambridge: Cambridge University
Press.
Pioneer Productions (Producer). (1999). Extreme Machines [Videotape]. The Learning
Channel.
Murphy, R. R. (2000). Marsupial and Shape-shifting Robots for Urban Search and
Rescue. IEEE Intelligent Systems.
Serway, R. A. (1996). Physics for Scientists & Engineers (4th ed.). Saunders College
Publishing.
Shiller, Z. (1999). On-Line Sub-Optimal Obstacle Avoidance. Proceedings of the 1999
IEEE International Conference on Robotics & Automation. 335-340.
73
Walton, J. M. (1985). Terrain Mapping from a Mobile Platform Through Optical Flow
Techniques. Unpublished Masters thesis, Massachusetts Institute of Technology,
Cambridge, MA.
Webster, R. W., & Wei, Y. (1992). An Intelligent Mobile Robot Golfing System Using
Binocular Stereo Vision. Proceedings of the Eleventh IEEE International
Conference on Pattern Recognition. 603-607.
Winston, P. H. (1992). Artificial Intelligence. Reading, Massachusetts: Addison-Wesley
Publishing Company.
Xavier, P. G. (1999). Shortest Path Planning for a Tethered Robot or an Anchored Cable.
Proceedings of the 1999 IEEE International Conference on Robotics &
Automation. 1011-1017.
Yamamoto, M., Iwamura, M., & Mohri, A. (1999). Quasi-Time-Optimal Motion
Planning of Mobile Platforms in the Presence of Obstacles. Proceedings of the
1999 IEEE International Conference on Robotics & Automation. 2958-2963.
Zhang, Z. (2000). A flexible new technique for camera calibration. IEEE
Transactions on Pattern Analysis and Machine Intelligence. 1330-1334.
74
Appendix A – Default Grid Values
This appendix shows in initial random values of the learning grid. The data is in
the following format:
Grid # velocityleft-high velocityleft-low θoffsetleft historyleft 1 through 10 velocityright-high velocityright-low θoffsetright historyright 1 through 10 Grid 1 80 48 -5 360 360 360 360 360 360 360 360 360 360 79 57 -8 360 360 360 360 360 360 360 360 360 360 Grid 2 72 40 8 360 360 360 360 360 360 360 360 360 360 80 54 13 360 360 360 360 360 360 360 360 360 360 Grid 3 73 46 -5 360 360 360 360 360 360 360 360 360 360 68 53 -8 360 360 360 360 360 360 360 360 360 360
Grid 4 78 58 12 360 360 360 360 360 360 360 360 360 360 69 57 14 360 360 360 360 360 360 360 360 360 360 Grid 5 79 53 15 360 360 360 360 360 360 360 360 360 360 65 60 9 360 360 360 360 360 360 360 360 360 360 Grid 6 68 52 0 360 360 360 360 360 360 360 360 360 360 69 40 -5 360 360 360 360 360 360 360 360 360 360
75
Grid 7 65 47 1 360 360 360 360 360 360 360 360 360 360 63 57 -12 360 360 360 360 360 360 360 360 360 360 Grid 8 71 49 -12 360 360 360 360 360 360 360 360 360 360 62 40 8 360 360 360 360 360 360 360 360 360 360 Grid 9 68 41 -12 360 360 360 360 360 360 360 360 360 360 68 47 6 360 360 360 360 360 360 360 360 360 360 Grid 10 63 47 -3 360 360 360 360 360 360 360 360 360 360 78 59 -12 360 360 360 360 360 360 360 360 360 360 Grid 11 70 51 10 360 360 360 360 360 360 360 360 360 360 75 55 -10 360 360 360 360 360 360 360 360 360 360 Grid 12 70 57 -2 360 360 360 360 360 360 360 360 360 360 70 60 13 360 360 360 360 360 360 360 360 360 360
Grid 13 74 49 -11 360 360 360 360 360 360 360 360 360 360 80 52 -7 360 360 360 360 360 360 360 360 360 360 Grid 14 72 60 -9 360 360 360 360 360 360 360 360 360 360 62 58 6 360 360 360 360 360 360 360 360 360 360 Grid 15 63 57 -9 360 360 360 360 360 360 360 360 360 360 65 48 5 360 360 360 360 360 360 360 360 360 360 Grid 16 78 55 -3 360 360 360 360 360 360 360 360 360 360 64 54 9 360 360 360 360 360 360 360 360 360 360 Grid 17 71 43 5 360 360 360 360 360 360 360 360 360 360 74 43 7 360 360 360 360 360 360 360 360 360 360 Grid 18 79 46 -3 360 360 360 360 360 360 360 360 360 360 78 52 -3 360 360 360 360 360 360 360 360 360 360
76
Grid 19 65 40 15 360 360 360 360 360 360 360 360 360 360 77 42 -8 360 360 360 360 360 360 360 360 360 360 Grid 20 72 52 9 360 360 360 360 360 360 360 360 360 360 72 55 5 360 360 360 360 360 360 360 360 360 360 Grid 21 64 58 1 360 360 360 360 360 360 360 360 360 360 69 51 14 360 360 360 360 360 360 360 360 360 360 Grid 22 69 53 -14 360 360 360 360 360 360 360 360 360 360 79 48 -12 360 360 360 360 360 360 360 360 360 360 Grid 23 75 50 1 360 360 360 360 360 360 360 360 360 360 67 46 13 360 360 360 360 360 360 360 360 360 360 Grid 24 70 58 4 360 360 360 360 360 360 360 360 360 360 62 52 14 360 360 360 360 360 360 360 360 360 360
Grid 25 74 45 -15 360 360 360 360 360 360 360 360 360 360 74 48 4 360 360 360 360 360 360 360 360 360 360 Grid 26 77 59 -6 360 360 360 360 360 360 360 360 360 360 70 52 13 360 360 360 360 360 360 360 360 360 360 Grid 27 78 60 -8 360 360 360 360 360 360 360 360 360 360 77 41 -11 360 360 360 360 360 360 360 360 360 360 Grid 28 69 60 -12 360 360 360 360 360 360 360 360 360 360 75 41 -4 360 360 360 360 360 360 360 360 360 360 Grid 29 71 51 15 360 360 360 360 360 360 360 360 360 360 68 48 0 360 360 360 360 360 360 360 360 360 360 Grid 30 78 58 -9 360 360 360 360 360 360 360 360 360 360 75 52 10 360 360 360 360 360 360 360 360 360 360
77
Grid 31 67 49 7 360 360 360 360 360 360 360 360 360 360 64 40 -8 360 360 360 360 360 360 360 360 360 360 Grid 32 72 48 8 360 360 360 360 360 360 360 360 360 360 65 51 -2 360 360 360 360 360 360 360 360 360 360 Grid 33 75 53 -2 360 360 360 360 360 360 360 360 360 360 66 49 -1 360 360 360 360 360 360 360 360 360 360 Grid 34 67 41 3 360 360 360 360 360 360 360 360 360 360 74 54 14 360 360 360 360 360 360 360 360 360 360 Grid 35 80 60 12 360 360 360 360 360 360 360 360 360 360 74 53 1 360 360 360 360 360 360 360 360 360 360 Grid 36 68 44 1 360 360 360 360 360 360 360 360 360 360 77 56 13 360 360 360 360 360 360 360 360 360 360
Grid 37 63 50 9 360 360 360 360 360 360 360 360 360 360 60 50 -9 360 360 360 360 360 360 360 360 360 360 Grid 38 79 51 -7 360 360 360 360 360 360 360 360 360 360 60 58 0 360 360 360 360 360 360 360 360 360 360 Grid 39 60 54 -4 360 360 360 360 360 360 360 360 360 360 74 57 13 360 360 360 360 360 360 360 360 360 360 Grid 40 76 44 -3 360 360 360 360 360 360 360 360 360 360 78 56 1 360 360 360 360 360 360 360 360 360 360 Grid 41 71 48 9 360 360 360 360 360 360 360 360 360 360 65 60 7 360 360 360 360 360 360 360 360 360 360 Grid 42 72 59 14 360 360 360 360 360 360 360 360 360 360 63 51 15 360 360 360 360 360 360 360 360 360 360
78
Grid 43 77 40 8 360 360 360 360 360 360 360 360 360 360 68 47 4 360 360 360 360 360 360 360 360 360 360 Grid 44 77 60 1 360 360 360 360 360 360 360 360 360 360 63 49 6 360 360 360 360 360 360 360 360 360 360 Grid 45 80 55 15 360 360 360 360 360 360 360 360 360 360 63 44 11 360 360 360 360 360 360 360 360 360 360
79
Appendix B – Experiment 2 Course 1 Raw Data Listing
Trial 1 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 10.7092 Angle Missed: 10.6002 Estimated Distance: 163 Actual Distance: 185 Lie: (222, 173) Distance Remaining: 60 Grid square 20 Values Before Putt: Velocity: 72 Angle Offset: 9 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360 Grid square 20 Values After Putt: Velocity: 73 Angle Offset: 3.69992 History of Missed Angles: 10.6002 360 360 360 360 360 360 360 360 360
80
Trial 1 - Putt 2 Putt Direction: Left Putt Power: High Estimated Direction: 292.329 Angle Missed: 6.93934 Estimated Distance: 187 Actual Distance: 153 Lie: (292, 38) Distance Remaining: 91 Grid square 43 Values Before Putt:
Velocity: 77 Angle Offset: 8 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360 Grid square 43 Values After Putt: Velocity: 76 Angle Offset: 4.53033 History of Missed Angles: 6.93934 360 360 360 360 360 360 360 360 360 Trial 1 - Putt 3 Putt Direction: Left Putt Power: High Estimated Direction: 232.421 Angle Missed: -8.50243 Estimated Distance: 81 Actual Distance: 120 Lie: (203, 87) Distance Remaining: 51 Grid square 9 Values Before Putt: Velocity: 68 Angle Offset: -12 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360 Grid square 9 Values After Putt: Velocity: 69 Angle Offset: -7.74879 History of Missed Angles: -8.50243 360 360 360 360 360 360 360 360 360
81
Trial 1 - Putt 4 Putt Direction: Right Putt Power: Low Estimated Direction: 64.3391 Angle Missed: 12.0905 Estimated Distance: 92 Actual Distance: 74 Lie: (240, 147) Distance Remaining: 30 Grid square 16 Values Before Putt: Velocity: 54 Angle Offset: 9 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360 Grid square 16 Values After Putt: Velocity: 53 Angle Offset: 2.95475 History of Missed Angles: 12.0905 360 360 360 360 360 360 360 360 360 Trial 1 - Putt 5 Putt Direction: Left Putt Power: Low Estimated Direction: 279.462 Angle Missed: 0 Estimated Distance: 30 Actual Distance: 30 Lie: (247, 119) Distance Remaining: 0 Grid square 34 Values Before Putt: Velocity: 41 Angle Offset: 3 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360
82
Trial 2 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 10.4183 Angle Missed: 4.27364 Estimated Distance: 168 Actual Distance: 181 Lie: (223, 160) Distance Remaining: 48 Grid square 20 Values Before Putt: Velocity: 73 Angle Offset: 3.69992 History of Missed Angles: 10.6002 360 360 360 360 360 360 360 360 360 Grid square 20 Values After Putt: Velocity: 74 Angle Offset: 1.5631 History of Missed Angles: 10.6002 4.27364 360 360 360 360 360 360 360 360 Trial 2 - Putt 2 Putt Direction: Left Putt Power: Low Estimated Direction: 298.142 Angle Missed: 0 Estimated Distance: 48 Actual Distance: 48 Lie: (245, 120) Distance Remaining: 0 Grid square 34 Values Before Putt: Velocity: 41 Angle Offset: 3 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360
83
Trial 3 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 9.41834 Angle Missed: 3.9304 Estimated Distance: 172 Actual Distance: 199 Lie: (238, 173) Distance Remaining: 56 Grid square 20 Values Before Putt: Velocity: 74 Angle Offset: 1.5631 History of Missed Angles: 10.6002 4.27364 360 360 360 360 360 360 360 360 Grid square 20 Values After Putt: Velocity: 75 Angle Offset: -0.402101 History of Missed Angles: 10.6002 4.27364 3.9304 360 360 360 360 360 360 360 Trial 3 - Putt 2 Putt Direction: Left Putt Power: High Estimated Direction: 278.125 Angle Missed: 8.57424 Estimated Distance: 182 Actual Distance: 138 Lie: (276, 41) Distance Remaining: 82 Grid square 43 Values Before Putt: Velocity: 76 Angle Offset: 4.53033 History of Missed Angles: 6.93934 360 360 360 360 360 360 360 360 360 Grid square 43 Values After Putt: Velocity: 75 Angle Offset: 0.243212 History of Missed Angles: 6.93934 8.57424 360 360 360 360 360 360 360 360
84
Trial 3 - Putt 3 Putt Direction: Right Putt Power: Low Estimated Direction: 248.801 Angle Missed: 10.4597 Estimated Distance: 88 Actual Distance: 71 Lie: (251, 86) Distance Remaining: 31 Grid square 35 Values Before Putt: Velocity: 53 Angle Offset: 1 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360 Grid square 35 Values After Putt: Velocity: 52 Angle Offset: -4.22985 History of Missed Angles: 10.4597 360 360 360 360 360 360 360 360 360 Trial 3 - Putt 4 ***Some values lost – overwritten by software*** Putt Direction: Right Putt Power: Low Estimated Direction: ? Angle Missed: 10.4597 Estimated Distance: ? Actual Distance: ? Lie: (?, ?) Distance Remaining: ? Grid square 17 Values Before Putt: Velocity: 43 Angle Offset: 7 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360 Grid square 17 Values After Putt: Velocity: 44 Angle Offset: 1.84663 History of Missed Angles: 10.3067 360 360 360 360 360 360 360 360 360
85
Trial 3 - Putt 5 Putt Direction: Right Putt Power: Low Estimated Direction: 100.954 Angle Missed: 0 Estimated Distance: 88 Actual Distance: 88 Lie: (243, 116) Distance Remaining: 0 Grid square 16 Values Before Putt: Velocity: 53 Angle Offset: 2.95475 History of Missed Angles: 12.0905 360 360 360 360 360 360 360 360 360 Trial 4 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 10.4183 Angle Missed: -1.92395 Estimated Distance: 177 Actual Distance: 206 Lie: (234, 142) Distance Remaining: 27 Grid square 20 Values Before Putt: Velocity: 75 Angle Offset: -0.402101 History of Missed Angles: 10.6002 4.27364 3.9304 360 360 360 360 360 360 360 Grid square 20 Values After Putt: Velocity: 76 Angle Offset: 0.559876 History of Missed Angles: 10.6002 4.27364 3.9304 -1.92395 360 360 360 360 360 360
86
Trial 4 - Putt 2 Putt Direction: Left Putt Power: Low Estimated Direction: 281.749 Angle Missed: 0 Estimated Distance: 53 Actual Distance: 53 Lie: (243, 117) Distance Remaining: 2 Grid square 34 Values Before Putt: Velocity: 41 Angle Offset: 3 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360 Trial 5 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 9.12754 Angle Missed: 0.654873 Estimated Distance: 182 Actual Distance: 188 Lie: (234, 149) Distance Remaining: 33 Grid square 20 Values Before Putt: Velocity: 76 Angle Offset: 0.559876 History of Missed Angles: 10.6002 .27364 3.9304 -1.92395 360 360 360 360 360 360 Grid square 20 Values After Putt: Velocity: 76 Angle Offset: 0.232439 History of Missed Angles: 10.6002 4.27364 3.9304 -1.92395 0.654873 360 360 360 360 360
87
Trial 5 - Putt 2 Putt Direction: Left Putt Power: Low Estimated Direction: 288.97 Angle Missed: 0 Estimated Distance: 33 Actual Distance: 33 Lie: (245, 123) Distance Remaining: 0 Grid square 34 Values Before Putt: Velocity: 41 Angle Offset: 3 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360 Trial 6 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 10.4183 Angle Missed: 3.98836 Estimated Distance: 182 Actual Distance: 177 Lie: (221, 151) Distance Remaining: 41 Grid square 20 Values Before Putt: Velocity: 76 Angle Offset: 0.232439 History of Missed Angles: 10.6002 4.27364 3.9304 -1.92395 0.654873 360 360 360 360 360 Grid square 20 Values After Putt: Velocity: 76 Angle Offset: -1.76174 History of Missed Angles: 10.6002 4.27364 3.9304 -1.92395 0.654873 3.98836 360 360 360 360
88
Trial 6 - Putt 2 Putt Direction: Left Putt Power: Low Estimated Direction: 283.218 Angle Missed: -2.84177 Estimated Distance: 53 Actual Distance: 90 Lie: (234, 80) Distance Remaining: 38 Grid square 34 Values Before Putt: Velocity: 41 Angle Offset: 3 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360 Grid square 34 Values After Putt: Velocity: 42 Angle Offset: 4.42088 History of Missed Angles: -2.84177 360 360 360 360 360 360 360 360 360 Trial 6 - Putt 3 Putt Direction: Right Putt Power: Low Estimated Direction: 73.443 Angle Missed: 14.436 Estimated Distance: 88 Actual Distance: 78 Lie: (232, 150) Distance Remaining: 35 Grid square 16 Values Before Putt: Velocity: 53 Angle Offset: 2.95475 History of Missed Angles: 12.0905 360 360 360 360 360 360 360 360 360 Grid square 16 Values After Putt: Velocity: 53 Angle Offset: -4.26324 History of Missed Angles: 12.0905 14.436 360 360 360 360 360 360 360 360
89
Trial 6 - Putt 4 Putt Direction: Left Putt Power: Low Estimated Direction: 291.501 Angle Missed: 0 Estimated Distance: 35 Actual Distance: 35 Lie: (245, 120) Distance Remaining: 0 Grid square 34 Values Before Putt: Velocity: 42 Angle Offset: 4.42088 History of Missed Angles: -2.84177 360 360 360 360 360 360 360 360 360 Trial 7 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 10.7092 Angle Missed: -0.0634884 Estimated Distance: 182 Actual Distance: 345 Lie: (241, 147) Distance Remaining: 30 Grid square 20 Values Before Putt: Velocity: 76 Angle Offset: -1.76174 History of Missed Angles: 10.6002 4.27364 3.9304 -1.92395 0.654873 3.98836 360 360 360 360 Grid square 20 Values After Putt: Velocity: 77 Angle Offset: -1.73 History of Missed Angles: 10.6002 4.27364 3.9304 -1.92395 0.654873 3.98836 -0.0634884 360 360 360
90
Trial 7 - Putt 2 Putt Direction: Left Putt Power: Low Estimated Direction: 277.595 Angle Missed: 0 Estimated Distance: 30 Actual Distance: 30 Lie: (247, 122) Distance Remaining: 0 Grid square 34 Values Before Putt: Velocity: 42 Angle Offset: 4.42088 History of Missed Angles: -2.84177 360 360 360 360 360 360 360 360 360 Trial 8 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 10.4183 Angle Missed: -0.144997 Estimated Distance: 187 Actual Distance: 306 Lie: (245, 151) Distance Remaining: 34 Grid square 20 Values Before Putt: Velocity: 77 Angle Offset: -1.73 History of Missed Angles: 10.6002 4.27364 3.9304 -1.92395 0.654873 3.98836 -0.0634884 360 360 360 Grid square 20 Values After Putt: Velocity: 78 Angle Offset: -1.6575 History of Missed Angles: 10.6002 4.27364 3.9304 -1.92395 0.654873 3.98836 -0.0634884 -0.144997 360 360
91
Trial 8 - Putt 2 Putt Direction: Left Putt Power: Low Estimated Direction: 271 Angle Missed: 0 Estimated Distance: 34 Actual Distance: 34 Lie: (244, 114) Distance Remaining: 0 Grid square 34 Values Before Putt: Velocity: 42 Angle Offset: 4.42088 History of Missed Angles: -2.84177 360 360 360 360 360 360 360 360 360 Trial 9 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 10.7092 Angle Missed: 2.1536 Estimated Distance: 192 Actual Distance: 199 Lie: (242, 155) Distance Remaining: 38 Grid square 20 Values Before Putt: Velocity: 78 Angle Offset: -1.6575 History of Missed Angles: 10.6002 4.27364 3.9304 -1.92395 0.654873 3.98836 -0.0634884 -0.144997 360 360 Grid square 20 Values After Putt: Velocity: 78 Angle Offset: -2.7343 History of Missed Angles: 10.6002 4.27364 3.9304 -1.92395 0.654873 3.98836 -0.0634884 -0.144997 2.1536 360
92
Trial 9 - Putt 2 Putt Direction: Left Putt Power: Low Estimated Direction: 274.514 Angle Missed: 0 Estimated Distance: 38 Actual Distance: 38 Lie: (247, 122) Distance Remaining: 0 Grid square 34 Values Before Putt: Velocity: 42 Angle Offset: 4.42088 History of Missed Angles: -2.84177 360 360 360 360 360 360 360 360 360 Trial 10 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 9.41834 Angle Missed: 0.400972 Estimated Distance: 192 Actual Distance: 184 Lie: (230, 148) Distance Remaining: 34 Grid square 20 Values Before Putt: Velocity: 78 Angle Offset: -2.7343 History of Missed Angles: 10.6002 4.27364 3.9304 -1.92395 0.654873 3.98836 -0.0634884 -0.144997 2.1536 360 Grid square 20 Values After Putt: Velocity: 78 Angle Offset: -2.93479 History of Missed Angles: 10.6002 4.27364 3.9304 -1.92395 0.654873 3.98836 -0.0634884 -0.144997 2.1536 0.400972
93
Trial 10 - Putt 2 Putt Direction: Left Putt Power: Low Estimated Direction: 295.821 Angle Missed: 0 Estimated Distance: 34 Actual Distance: 34 Lie: (247, 119) Distance Remaining: 0 Grid square 34 Values Before Putt: Velocity: 42 Angle Offset: 4.42088 History of Missed Angles: -2.84177 360 360 360 360 360 360 360 360 360 Trial 11 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 10.7092 Angle Missed: 0.424848 Estimated Distance: 192 Actual Distance: 266 Lie: (236, 155) Distance Remaining: 39 Grid square 20 Values Before Putt: Velocity: 78 Angle Offset: -2.93479 History of Missed Angles: 10.6002 4.27364 3.9304 -1.92395 0.654873 3.98836 -0.0634884 -0.144997 2.1536 0.400972 Grid square 20 Values After Putt: Velocity: 79 Angle Offset: -3.14721 History of Missed Angles: 0.424848 4.27364 3.9304 -1.92395 0.654873 3.98836 -0.0634884 -0.144997 2.1536 0.400972
94
Trial 11 - Putt 2 Putt Direction: Left Putt Power: Low Estimated Direction: 283.324 Angle Missed: 0 Estimated Distance: 39 Actual Distance: 39 Lie: (247, 122) Distance Remaining: 0 Grid square 34 Values Before Putt: Velocity: 42 Angle Offset: 4.42088 History of Missed Angles: -2.84177 360 360 360 360 360 360 360 360 360 Trial 12 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 10.4154 Angle Missed: 0.495769 Estimated Distance: 197 Actual Distance: 202 Lie: (236, 151) Distance Remaining: 35 Grid square 20 Values Before Putt: Velocity: 79 Angle Offset: -3.14721 History of Missed Angles: 0.424848 4.27364 3.9304 -1.92395 0.654873 3.98836 -0.0634884 -0.144997 2.1536 0.400972 Grid square 20 Values After Putt: Velocity: 79 Angle Offset: -3.3951 History of Missed Angles: 0.424848 0.495769 3.9304 -1.92395 0.654873 3.98836 -0.0634884 -0.144997 2.1536 0.400972
95
Trial 12 - Putt 2 Putt Direction: Left Putt Power: Low Estimated Direction: 284.826 Angle Missed: 0 Estimated Distance: 35 Actual Distance: 35 Lie: (243, 115) Distance Remaining: 0 Grid square 34 Values Before Putt: Velocity: 42 Angle Offset: 4.42088 History of Missed Angles: -2.84177 360 360 360 360 360 360 360 360 360 Trial 13 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 10.7092 Angle Missed: 0.496796 Estimated Distance: 197 Actual Distance: 227 Lie: (236, 147) Distance Remaining: 31 Grid square 20 Values Before Putt: Velocity: 79 Angle Offset: -3.3951 History of Missed Angles: 0.424848 0.495769 3.9304 -1.92395 0.654873 3.98836 -0.0634884 -0.144997 2.1536 0.400972 Grid square 20 Values After Putt: Velocity: 80 Angle Offset: -3.64349 History of Missed Angles: 0.424848 0.495769 3.9304 -1.92395 0.654873 0.496796 -0.0634884 -0.144997 2.1536 0.400972
96
Trial 13 - Putt 2 Putt Direction: Left Putt Power: Low Estimated Direction: 286.699 Angle Missed: 0 Estimated Distance: 31 Actual Distance: 31 Lie: (245, 123) Distance Remaining: 0 Grid square 34 Values Before Putt: Velocity: 42 Angle Offset: 4.42088 History of Missed Angles: -2.84177 360 360 360 360 360 360 360 360 360
97
Appendix C – Experiment 2 Course 2 Raw Data Listing
Trial 1 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 310.77 Angle Missed: -5.33644 Estimated Distance: 104 Actual Distance: 112 Lie: (167, 67) Distance Remaining: 92 Grid square 12 Values Before Putt: Velocity: 70 Angle Offset: -2 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360 Grid square 12 Values After Putt: Velocity: 70 Angle Offset: 0.66822 History of Missed Angles: -5.33644 360 360 360 360 360 360 360 360 360
98
Trial 1 - Putt 2 Putt Direction: Right Putt Power: Low Estimated Direction: 32.6609 Angle Missed: 18.581 Estimated Distance: 113 Actual Distance: 102 Lie: (226, 138) Distance Remaining: 28 Grid square 5 Values Before Putt: Velocity: 60 Angle Offset: 9 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360 Grid square 5 Values After Putt: Velocity: 59 Angle Offset: -0.290509 History of Missed Angles: 18.581 360 360 360 360 360 360 360 360 360 Trial 1 - Putt 3 Putt Direction: Left Putt Power: Low Estimated Direction: 312.138 Angle Missed: 0 Estimated Distance: 28 Actual Distance: 28 Lie: (245, 119) Distance Remaining: 0 Grid square 34 Values Before Putt: Velocity: 41 Angle Offset: 3 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360
99
Trial 2 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 304.28 Angle Missed: -2.95141 Estimated Distance: 100 Actual Distance: 108 Lie: (149, 72) Distance Remaining: 106 Grid square 12 Values Before Putt: Velocity: 70 Angle Offset: 0.66822 History of Missed Angles: -5.33644 360 360 360 360 360 360 360 360 360 Grid square 12 Values After Putt: Velocity: 70 Angle Offset: 2.14393 History of Missed Angles: -5.33644 -2.95141 360 360 360 360 360 360 360 360 Trial 2 - Putt 2 Putt Direction: Right Putt Power: Low Estimated Direction: 25.1149 Angle Missed: 16.6147 Estimated Distance: 106 Actual Distance: 77 Lie: (203, 125) Distance Remaining: 42 Grid square 14 Values Before Putt: Velocity: 58 Angle Offset: 6 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360 Grid square 14 Values After Putt: Velocity: 57 Angle Offset: -2.30735 History of Missed Angles: 16.6147 360 360 360 360 360 360 360 360 360
100
Trial 2 - Putt 3 Putt Direction: Right Putt Power: Low Estimated Direction: 350.216 Angle Missed: 17.6376 Estimated Distance: 85 Actual Distance: 56 Lie: (258, 127) Distance Remaining: 16 Grid square 24 Values Before Putt: Velocity: 52 Angle Offset: 14 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360 Grid square 24 Values After Putt: Velocity: 51 Angle Offset: 5.18119 History of Missed Angles: 17.6376 360 360 360 360 360 360 360 360 360 Trial 2 - Putt 4 Putt Direction: Right Putt Power: Low Estimated Direction: 217.568 Angle Missed: 0 Estimated Distance: 16 Actual Distance: 16 Lie: (242, 117) Distance Remaining: 0 Grid square 26 Values Before Putt: Velocity: 52 Angle Offset: 13 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360
101
Trial 3 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 306.802 Angle Missed: 6.17688 Estimated Distance: 104 Actual Distance: 113 Lie: (175, 50) Distance Remaining: 96 Grid square 12 Values Before Putt: Velocity: 70 Angle Offset: 2.14393 History of Missed Angles: -5.33644 -2.95141 360 360 360 360 360 360 360 360 Grid square 12 Values After Putt: Velocity: 70 Angle Offset: -0.944514 History of Missed Angles: -5.33644 -2.95141 6.17688 360 360 360 360 360 360 360 Trial 3 - Putt 2 Putt Direction: Right Putt Power: Low Estimated Direction: 43.7456 Angle Missed: 4.96974 Estimated Distance: 109 Actual Distance: 91 Lie: (234, 119) Distance Remaining: 11 Grid square 5 Values Before Putt: Velocity: 59 Angle Offset: -0.290509 History of Missed Angles: 18.581 360 360 360 360 360 360 360 360 360 Grid square 5 Values After Putt: Velocity: 58 Angle Offset: -2.77538 History of Missed Angles: 18.581 4.96974 360 360 360 360 360 360 360 360
102
Trial 3 - Putt 3 Putt Direction: Left Putt Power: Low Estimated Direction: 349.695 Angle Missed: 0 Estimated Distance: 11 Actual Distance: 11 Lie: (240, 117) Distance Remaining: 0 Grid square 25 Values Before Putt: Velocity: 45 Angle Offset: -15 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360 Trial 4 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 305.773 Angle Missed: 0.481048 Estimated Distance: 102 Actual Distance: 111 Lie: (152, 67) Distance Remaining: 105 Grid square 12 Values Before Putt: Velocity: 70 Angle Offset: -0.944514 History of Missed Angles: -5.33644 -2.95141 6.17688 360 360 360 360 360 360 360 Grid square 12 Values After Putt: Velocity: 70 Angle Offset: -1.18504 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 360 360 360 360 360 360
103
Trial 4 - Putt 2 Putt Direction: Right Putt Power: Low Estimated Direction: 30.264 Angle Missed: 4.59046 Estimated Distance: 106 Actual Distance: 106 Lie: (217, 113) Distance Remaining: 28 Grid square 5 Values Before Putt: Velocity: 58 Angle Offset: -2.77538 History of Missed Angles: 18.581 4.96974 360 360 360 360 360 360 360 360 Grid square 5 Values After Putt: Velocity: 58 Angle Offset: -5.07061 History of Missed Angles: 18.581 4.96974 4.59046 360 360 360 360 360 360 360 Trial 4 - Putt 3 Putt Direction: Left Putt Power: Low Estimated Direction: 8.13011 Angle Missed: 0 Estimated Distance: 28 Actual Distance: 28 Lie: (245, 111) Distance Remaining: 0 Grid square 25 Values Before Putt: Velocity: 45 Angle Offset: -15 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360
104
Trial 5 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 306.009 Angle Missed: 3.51408 Estimated Distance: 101 Actual Distance: 118 Lie: (167, 60) Distance Remaining: 96 Grid square 12 Values Before Putt: Velocity: 70 Angle Offset: -1.18504 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 360 360 360 360 360 360 Grid square 12 Values After Putt: Velocity: 71 Angle Offset: -2.94208 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 3.51408 360 360 360 360 360 Trial 5 - Putt 2 Putt Direction: Right Putt Power: Low Estimated Direction: 33.1582 Angle Missed: 3.25819 Estimated Distance: 106 Actual Distance: 139 Lie: (236, 112) Distance Remaining: 10 Grid square 5 Values Before Putt: Velocity: 58 Angle Offset: -5.07061 History of Missed Angles: 18.581 4.96974 4.59046 360 360 360 360 360 360 360 Grid square 5 Values After Putt: Velocity: 59 Angle Offset: -6.69971 History of Missed Angles: 18.581 4.96974 4.59046 3.25819 360 360 360 360 360 360
105
Trial 5 - Putt 3 Putt Direction: Left Putt Power: Low Estimated Direction: 29.0546 Angle Missed: 0 Estimated Distance: 10 Actual Distance: 10 Lie: (240, 114) Distance Remaining: 0 Grid square 25 Values Before Putt: Velocity: 45 Angle Offset: -15 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360 Trial 6 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 311.593 Angle Missed: 1.20422 Estimated Distance: 108 Actual Distance: 144 Lie: (189, 62) Distance Remaining: 78 Grid square 12 Values Before Putt: Velocity: 71 Angle Offset: -2.94208 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 3.51408 360 360 360 360 360 Grid square 12 Values After Putt: Velocity: 72 Angle Offset: -3.54419 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 3.51408 1.20422 360 360 360 360
106
Trial 6 - Putt 2 Putt Direction: Right Putt Power: High Estimated Direction: 44.5105 Angle Missed: 0 Estimated Distance: 78 Actual Distance: 78 Lie: (243, 118) Distance Remaining: 0 Grid square 6 Values Before Putt: Velocity: 69 Angle Offset: -5 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360 Trial 7 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 311.66 Angle Missed: -7.71636 Estimated Distance: 108 Actual Distance: 130 Lie: (177, 64) Distance Remaining: 86 Grid square 12 Values Before Putt: Velocity: 72 Angle Offset: -3.54419 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 3.51408 1.20422 360 360 360 360 Grid square 12 Values After Putt: Velocity: 73 Angle Offset: 0.313994 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 3.51408 1.20422 -7.71636 360 360 360
107
Trial 7 - Putt 2 Putt Direction: Right Putt Power: Low Estimated Direction: 34.9333 Angle Missed: -2.84068 Estimated Distance: 109 Actual Distance: 71 Lie: (236, 101) Distance Remaining: 18 Grid square 5 Values Before Putt: Velocity: 59 Angle Offset: -6.69971 History of Missed Angles: 18.581 4.96974 4.59046 3.25819 360 360 360 360 360 360 Grid square 5 Values After Putt: Velocity: 58 Angle Offset: -5.27936 History of Missed Angles: 18.581 4.96974 4.59046 3.25819 -2.84068 360 360 360 360 360 Trial 7 - Putt 3 Putt Direction: Left Putt Power: Low Estimated Direction: 60.6423 Angle Missed: 0 Estimated Distance: 18 Actual Distance: 18 Lie: (250, 114) Distance Remaining: 0 Grid square 25 Values Before Putt: Velocity: 45 Angle Offset: -15 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360
108
Trial 8 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 314.782 Angle Missed: 2.30011 Estimated Distance: 113 Actual Distance: 132 Lie: (206, 56) Distance Remaining: 72 Grid square 12 Values Before Putt: Velocity: 73 Angle Offset: 0.313994 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 3.51408 1.20422 -7.71636 360 360 360 Grid square 12 Values After Putt: Velocity: 74 Angle Offset: -0.836063 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 3.51408 1.20422 -7.71636 2.30011 360 360 Trial 8 - Putt 2 Putt Direction: Right Putt Power: High Estimated Direction: 58.4075 Angle Missed: 0 Estimated Distance: 72 Actual Distance: 72 Lie: (243, 113) Distance Remaining: 0 Grid square 6 Values Before Putt: Velocity: 69 Angle Offset: -5 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360
109
Trial 9 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 315.525 Angle Missed: -2.86202 Estimated Distance: 115 Actual Distance: 119 Lie: (187, 58) Distance Remaining: 82 Grid square 12 Values Before Putt: Velocity: 74 Angle Offset: -0.836063 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 3.51408 1.20422 -7.71636 2.30011 360 360 Grid square 12 Values After Putt: Velocity: 74 Angle Offset: 0.594948 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 3.51408 1.20422 -7.71636 2.30011 -2.86202 360 Trial 9 - Putt 2 Putt Direction: Right Putt Power: High Estimated Direction: 47.4897 Angle Missed: 0 Estimated Distance: 82 Actual Distance: 82 Lie: (245, 113) Distance Remaining: 0 Grid square 6 Values Before Putt: Velocity: 69 Angle Offset: -5 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360
110
Trial 10 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 315.401 Angle Missed: -1.00392 Estimated Distance: 115 Actual Distance: 118 Lie: (185, 53) Distance Remaining: 87 Grid square 12 Values Before Putt: Velocity: 74 Angle Offset: 0.594948 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 3.51408 1.20422 -7.71636 2.30011 -2.86202 360 Grid square 12 Values After Putt: Velocity: 74 Angle Offset: 1.09691 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 3.51408 1.20422 -7.71636 2.30011 -2.86202 -1.00392 Trial 10 - Putt 2 Putt Direction: Right Putt Power: High Estimated Direction: 46.8476 Angle Missed: 0 Estimated Distance: 87 Actual Distance: 87 Lie: (243, 117) Distance Remaining: 0 Grid square 6 Values Before Putt: Velocity: 69 Angle Offset: -5 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360
111
Trial 11 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 315.525 Angle Missed: -0.524714 Estimated Distance: 115 Actual Distance: 118 Lie: (189, 54) Distance Remaining: 84 Grid square 12 Values Before Putt: Velocity: 74 Angle Offset: 1.09691 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 3.51408 1.20422 -7.71636 2.30011 -2.86202 -1.00392 Grid square 12 Values After Putt: Velocity: 74 Angle Offset: 1.35926 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 3.51408 1.20422 -0.524714 2.30011 -2.86202 -1.00392 Trial 11 - Putt 2 Putt Direction: Right Putt Power: High Estimated Direction: 48.3665 Angle Missed: 0 Estimated Distance: 84 Actual Distance: 84 Lie: (247, 119) Distance Remaining: 0 Grid square 6 Values Before Putt: Velocity: 69 Angle Offset: -5 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360
112
Trial 12 - Putt 1 Putt Direction: Left Putt Power: High Estimated Direction: 315.525 Angle Missed: 6.54202 Estimated Distance: 115 Actual Distance: 121 Lie: (194, 53) Distance Remaining: 81 Grid square 12 Values Before Putt: Velocity: 74 Angle Offset: 1.35926 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 3.51408 1.20422 -0.524714 2.30011 -2.86202 -1.00392 Grid square 12 Values After Putt: Velocity: 74 Angle Offset: 1.35926 History of Missed Angles: -5.33644 -2.95141 6.17688 0.481048 3.51408 1.20422 -0.524714 2.30011 -2.86202 -1.00392 Trial 12 - Putt 2 Putt Direction: Right Putt Power: High Estimated Direction: 51.4496 Angle Missed: 0 Estimated Distance: 81 Actual Distance: 81 Lie: (243, 113) Distance Remaining: 0 Grid square 6 Values Before Putt: Velocity: 69 Angle Offset: -5 History of Missed Angles: 360 360 360 360 360 360 360 360 360 360
113
VITA
Jason was born in a cabbage patch. His formative years were spent nose to nose
with the family beagle upon which he formally was shat!
114