Professional Documents
Culture Documents
Capstone Final Proposal
Capstone Final Proposal
Capstone Final Proposal
CST 499
Executive Summary
The project, currently titled Computer Juggling Coach will be a first of its kind. At this
time, there are no other programs that are designed to track the motion of juggling balls as they
are juggled and provide the user feedback on this motion. In addition to being a unique program,
it is also slated to be free to use. As a team, it is hoped that this will be an enjoyable piece of
software that can be used as a training tool, or just for simple entertainment by jugglers of all
skill levels. The goal is to effectively utilize the free and very efficient OpenCV library to
capture data in real time through the user’s webcam. This data will be analyzed by the software
in order to correctly identify catches and throws as well as some of the most common juggling
patterns. This analysis will yield information that will be provided to the user so that he will be
able to better understand what they may be doing correctly and incorrectly. The user should then
be able to modify their form or correct their throws as recommended to successfully achieve
their juggling goals. Basic instruction on how to get started juggling will also be provided in this
application. An additional feature of this software is that it will be able to count consecutive
throws of a pattern and give feedback to the user on how to improve their technique.
Consecutive throws are key to successful juggling. A juggler is not a juggler if they are unable
to throw and catch their juggling balls more than once. The finished project will be the
milestone achievement to-date for the team developing it, and will act as a springboard into
understanding computer vision and its capabilities of being used on the client side in web
browsers. With luck, the experience will help to open doors in the field of computer vision for
the team members involved.
The doors the team members are opening into the field of computer vision will hopefully
be beneficial to other programmers as well. The ability to track a user’s expected and repetitive
motion and compare it to one that is common or standard will hopefully find multiple uses. With
minor changes or even just portions of this newly developed software, it is hoped that other
programmers will be able to use it to effectively develop their own programs. The analysis
portion should also be transportable as well with minor changes. The possibilities are many and
it is the hope of the team members that the Computer Juggling Coach will be just the beginning.
People from all over the globe are invited to dabble with, or consistently use this software
for entertainment and learning. Outside of books and videos that provide no actual feedback to
the end user, the only current way to get feedback is to be in the presence of an experienced
juggler. Since juggling is a niche sport, it’s often difficult for someone with interest in it to find
a competent juggler to provide instruction and feedback. The online Computer Juggling Coach
will solve this dilemma and will provide a fun way to track a juggling student’s progress as they
refine their skills. It also provides a way for people of all ages who are shy, easily embarrassed,
or reluctant to practice in front of others to learn and enjoy the sport. People seem to understand
that an electronic device, in this case a computer, is non-judgmental and can therefore provide
feedback without fear of being laughed at or ridiculed. Juggling is an inexpensive, healthy, and
ancient art that many have not learned due to the difficulties of learning basic juggling patterns.
With this resource available to all, there is bound to be gained interest in this activity by people
from all demographics and ages. The team will monitor the website usage in hopes of
confirming that the site is a fun and valuable resource for all to enjoy.
2
Table of Contents
Description 3
II. Goals and Objectives 4
III. Environmental Scan 6
IV. Project Objectives and Methodology 7
Primary Objectives and Methodology: 7
Secondary Objectives and Methodology (Time Permitting): 8
V. Stakeholders, Community, and Clients 8
VI. Ethical Considerations 9
VII. Legal Considerations 11
VIII. Timeline and Budget 11
i. Timeline/Budget 11
a. Timeline 11
b. Budget 12
ii. Resources Needed 12
iii. Milestones 13
iv. Risks/Dependencies 13
IX. Final Deliverables 14
X. Usability Testing/Evaluation Plan 15
i. Executive Summary. 15
ii. Phase 1 Scope 15
a. Methodology 15
b. Scope 16
c. Equipment 16
d. Metrics 16
ii. Phase 2 Scope 17
a. Methodology 17
b. Scope 17
c. Equipment 17
d. Metrics 17
XI. Team Members 18
References 20
3
I. Description
Juggling is a form of entertainment that has a very long history. Some historians date it
back almost 4000 years from depictions of jugglers in ancient Egyptian hieroglyphics (The
History of Juggling, 2018). Whatever the history of juggling, it is a skill that requires great
hand-eye coordination and manual dexterity. It is not an easy skill to master. Many people seem
to be interested in juggling from the many books, videos, and juggling artifacts that are available
for sale in stores and on the internet. You buy a book. You buy the video. You buy the juggling
balls. You open the book and read it. You play the video and watch it. You throw the balls up
into the air and you catch one. You drop one. You try again. Most people find that dropping the
ball is a much more common occurrence than catching the ball. You watch the video again.
You read the book again. You try a few more times. You drop the balls a few more times.
Everything gets put away. At your next garage sale, your juggling kit is for sale for one eighth
The above scenario is very common when it comes to learning to juggle. What the team
found to be beneficial is to have feedback. Am I throwing the ball high enough? Am I throwing
the ball straight up? Are my hands in the right place to catch the ball? It helps to have a friend
watching you and letting you know, but it is often hard for a person to determine how straight
that ball is going up or if it is truly high enough. It is also often embarrassing to practice and
The team’s project will help to avoid the embarrassment of learning to juggle in front of a
friend. It will also help to answer the question about how high, straight, and accurately each ball
4
is thrown. This movement and this ability are not only useful as a form of entertainment, but it
can also be used to help refine motor skills. Throwing objects up and catching them is a
coordination skill that is often used in physical therapies and rehabilitations. With the team’s
project, users can avoid the additional frustration of not knowing how they are throwing the
object because they will be able to see and track the objects being thrown.
It is the main goal of this project that the team members learn how to successfully utilize
the OpenCV computer vision library for real world applications. Computer vision is an
exploding new technology that is allowing for endless possibilities of software capturing video
and processing it quickly and accurately. It’s enabling easy access for developers to use facial
behaviors. The future programming market will be in high demand for developers who
understand computer vision libraries and the associated technical terminology and methodology
utilized by them. The team expects to have this project not only listed on their resume for future
employers, but to have a working application widely utilized by the public to demonstrate the
An additional goal of the project is to have a public and free to use piece of software that
is both enjoyable, functional and useful. The team is not aware of any resource on the web that
currently provides any sort of feedback for jugglers. This site will be a first, which is very
difficult to achieve in today’s internet culture. Adding to this goal is the hope by the team that
5
the effort that will be put into this project might help to peek people’s interest in the fun and
There are three main objectives associated with this project. The first being proper
implementation of the OpenCV library in JavaScript so that the application can be run in any
modern browser with no need to download software and no dependencies on specific end user
hardware. The use of the library for capturing data in real time should be highly optimized for
the specific task at hand. This means high frame rate and quick analysis, as juggling is a very fast
paced activity. Initial experimentation with the library has convinced the team this objective is
achievable.
The second objective will be to correctly analyze the data captured from the OpenCV
library in hopes of recognizing throws, catches and many of the basic patterns of juggling. The
team hopes to accomplish this through algorithms of their own design as well as researching data
analysis techniques already in use by the industry. This objective is critical to the overall success
of the application, as faulty or inefficient tracking will severely reduce the quality of the final
The third and final objective is to package the software into an easy and fun to use
website that people of all ages can use and that functions sufficiently well on a wide range of
hardware. The achievement of this objective will rely on the successful completion of two
smaller objective. The first, on creating a clean and intuitive user interface and paying close
attention to the usability testing feedback to further enhance the UI in ways that were not
6
originally apparent during the initial design. Secondly, on having highly optimized code that
Jugglers have been developing software to be used a learning tool or to otherwise aid in
exploration of the hobby for decades. This trend has only grown as the internet and easily
shareable videos have become available allowing for juggling to increase in popularity.
Juggling relies on repeatable patterns and these patterns have been committed to formulas
in a juggling specific notation that allows for describing and documenting juggling patterns.
Many software programs have been developed that can receive typed pattern notations and turn
them into visual demonstrations of the pattern. There are also already programs that can visualize
existing patterns and then churn out the notation for that pattern. These programs have been a
Over the last few years, as the technology has grown, open source software frameworks
for recognizing patterns using real-time video has become available and widely documented.
Following the trend, many jugglers have already applied this software to the hobby and have
used it to track and analyze their juggling patterns in interesting ways. A quick exploration of
any video sharing site will reveal at least a handful of videos demonstrating this. In this sense,
the team’s project will not tread new ground. However, the technology, at this time, has largely
demonstrations. There are few, if any, applications that apply these open-sourced libraries in a
way that is both user-friendly and useable by jugglers of various skill levels. It is the intent of
7
this project to package a user-friendly web-based interface that will receive real-time video of
juggling as input and output analysis in a way that is useful to the user as both a training tool and
as an enhancement that increases enjoyment of the hobby. This sets this project apart from any
implements the OpenCV (Open Source Computer Vision Library) or similar library.
- User will be able to stream video via webcam or, possibly, mobile camera to the
- Application will track motion of common juggling instruments (juggling balls only
initially) through space via the real-time video stream. For the objective to satisfy other
- Record metrics from the recognition of juggling movement. These metrics would be
related to the x/y positioning of the juggling instruments through time. Analyze those metrics for
data regarding the nature of the juggling pattern the user is performing.
- Output this analysis to the user in a way that is useful and/or interesting. This would
include information on deviation of throws in the pattern over time, showing how consistent each
8
user’s throw is. A throw in this context represents one toss of a juggling instrument from one
hand to the other. It would also include the pattern that the program believes the user to be
- The program will also provide visual examples of common juggling patterns to assist
users.
- The tool will include various games that the user can play. This will include games that
score a user based on how closely they could adhere to certain patterns and how consistent the
- The program will also aid the user in developing consistency by displaying the peak of
each throw for each instrument on the screen, giving the user a target to hit on the following
throws.
The project should appeal to many different people. This includes people trying to learn
how to juggle, but also existing jugglers. Those that already know how to juggle should find the
team’s project entertaining and useful for practicing, regardless of their current skill level.
However, since the team’s project will track consistency of motion, it may have appeal outside
of the juggling community or those trying to learn. It could potentially also include those trying
to improve or regain their hand-eye coordination and physical therapists may find it to be a
useful tool. It is also possible that the application of the technology in the team’s project will
9
inspire others to apply it in ways that were not intended. In this way, the team is hoping to
expand their clientele to a community of not just jugglers, but other programmers that may find
similar uses for the program with just minor modifications. Motion capture and analysis may
have existed, but has not been prevalent in the motion of objects being tossed up in the air and
caught.
There are no external stakeholders in this project at this time. The internal stakeholders,
John Coffelt, Christopher Carson, and Michael Rose, are looking to achieve several goals. The
success of this project will result in the passing of a course at California State University
Monterey Bay and will earn each one a degree. It will also provide great experience and a
positive example of their individual and team skills in the creation of a software project.
Through this achievement, each team member will gain the opportunity to take their skills to
companies where it is hoped that each team member will make significant impacts in the work
they do. The losses from the project should it not be successful would be difficult to bear. The
team’s confidence in the ability to provide a useful tool for jugglers to learn and improve their
The following ethical considerations have been noted as part of this project.
1. The application will receive a live video feed from the user’s personal web camera. It is
reasonable to question whether this could intrude on the user’s privacy. As the internet and
social media have become interwoven into the fabric of society, the way that these intrude on
individual privacy has been an increasingly growing concern. Many of the companies behind the
10
technology platforms that have become ubiquitous in everyday life have shown, at times, a
distinctly cavalier attitude towards protecting the privacy of their users. It is not the intent of this
While the application does require the live video feed to work, the team will take steps to
mitigate any perception that the user’s desire to maintain their privacy is at the forefront of the
developer’s concerns. The user will have to authorize the application to use their webcam feed.
No video will be saved from the webcam feed nor will it be shared with any outside actors. The
video feed will purely be used for facilitating the features of the application. The metric data
gathered by the application is positional data only and will not include any identifying
information. Also, no long-term usage analytics will be gathered by the application. The team
hopes that this will mitigate any concerns about how the application is handling the user’s
privacy.
This could be perceived as the application being ableist in nature. While the team is not in any
way dismissive of this, there is little that can be done to make the application more useable by
those with disabilities that affect the motor skills required to juggle. Juggling is inherently a
physically taxing hobby. Unfortunately, the internet and computer games have historically done
This application will not be able to correct those issues. However, it is a hope that, because the
application tracks repeated movements of objects in space, that it could potentially be used as a
11
tool for physical therapy. The technology being explored in the project could also be applied in
ways that would better serve those with disabilities in the future.
3. Algorithms for recognizing human features in photos and video have shown bias towards
those with lighter skin tones or have not worked as well on those with darker skin tones. This
could be due to how the algorithms were developed and trained over time. This could be
discriminatory towards people of color. To mitigate issues with this, the application is planned
to rely purely on visually tracking physical objects in space and will not attempt to track any of
The application will use the OpenCV software library as its foundation. The OpenCV
software is open source and the team will ensure that the application’s usage of the software does
not violate the OpenCV open source licensing agreement in any way.
i. Timeline/Budget
a. Timeline
b. Budget
The entire project can be completed with zero expense. There is no cost to use the
OpenCV database and the application will run on any browser. The user can use any balls
(regular tennis balls work great) so there should be no cost for user equipment. The only
possible cost might be long term hosting of the finished product which will be decided by the
The only specialized resource needed for full implementation is the OpenCV.js library.
The library is fully available under the 3-clause BSD open source license, which places very
minimal restrictions on re-distribution and none on the general use of the library. The project
will be composed of a modern JavaScript web-based application so the development IDE’s, git
usage, and initial hosting will be easily accessible at no expense. The application will be
designed to be calibratable to any juggling ball; tennis balls, oranges, hacky sacks, or any other
juggle-able items already owned by the user, so no special materials are required for use of the
software.
13
iii. Milestones
The major milestones will correspond to the end of each full development iteration of the project.
Milestone 1: Estimated to take place during or around week 2. This will mark the end of the
first full iteration of base functionality and design, making the application ready for Phase 1
testing. The team will have a fully working prototype to further develop and refine based upon
Milestone 2: Estimated to take place during or around the end of week 4. This will be the end
of the second full iteration of development. The application should be well tested and fully
Milestone 3: Estimated to take place during week 6. This will be the end of the final and third
full iteration of development. All modifications based upon usability testing should be complete.
The product should be stable enough for deployment to the general public.
iv. Risks/Dependencies
There are two obvious risks to timely completion. The first is not being able to gather the
data from the tracked juggling balls with enough precision to be practically usable for games or
training. The second major risk would be the inability to design an algorithm set that can
consistently recognize throws and juggling patterns. The failure or success of the algorithms will
be highly dependent on the quality and consistency of the data collected. If the team fails at
either of these risk related tasks, the team will be forced to divert their plans and find an
alternative approach. If the team can get past these risks, there are no other notable dependencies
14
since the framework will simply be a modern JavaScript driven web-based application, which all
The final deliverable will be a free to use website open to the general public where the
application can be accessed and used in any modern web browser with an attached webcam or
smartphone with camera activated. The application should be able to function in a variety of
environments and should be able to track most any brightly colored object, as long as the color
stands out from the color of the background and the user’s clothing. The only client approval the
team will be seeking is a satisfactory level of usability by the general public. Six weeks is not
enough time to have a highly refined juggling game and training application, but it is the goal of
the team to have a fully functional and easy to use version of the application completed within
It is the hope of the team that the website will stay active long after completion of the
course to as act as both; A) a virtual asset of the team’s time and effort at CSUMB and B) a
resource available to the general public to use free of charge. The team is willing to maintain
and continue to host the site after the complete of the Capstone. If there is enough interest in the
site, the team may continue to enhance the site’s capabilities and features, however it is not the
Although accumulating statistical data is not a base requirement for the project, time
permitting, it is something the team would like to add in order to continuously track the usage of
the site. It would be very interesting to monitor where on the globe the site is accessed from, as
15
well as the progress that repeat users make in developing their juggling skills. Users will have
the ability to log in to save their progress and high scores, however to keep the ease of use as
i. Executive Summary.
The usability testing will be conducted in two phases. Phase one will be focused on making
enhancements to the first working prototype of the website. These enhancements will include
ease of use, refinements to the pattern recognition algorithms as well adjusting the setting of the
software in order for it to adapt to different environments and different trackable objects.
Phase two will be a broader usability test open to the general public via the web. The
core website and functionality will have been developed at this phase, so the feedback will be
used to make minor enhancements to both the functionality, user interface and optimization of
the code.
a. Methodology
Participants will be limited to close friends and family members who can be closely
observed during testing. No initial instruction will be given, as the software should have clear
and concise directions for the user to follow. The team member conducting the test should be
taking notes continuously as to properly record the feedback during and after testing. Testing
16
sessions can range from 20 minutes to 1 hour depending on the skill level and interest of the
participant.
b. Scope
Participants will be expected to explore the software and it’s features on their own. Initial
settings and adjustments will be the responsibility of the user. Participants will be encouraged by
c. Equipment
Testing will take place on a variety of different platforms, including PC, Mac and Smart
devices. Participants are encouraged to test multiple platforms in a single session. Tennis balls
will be provided by the tester for the participant to use, however they are free to use any juggling
d. Metrics
Testing will be concluded after the user has made a reasonable effort to record throws
and catches and has been given feedback from the software. Critical Errors include not being
able to have the application provide any feedback or being unable to get the software
successfully tracking their juggling. Non-critical Errors will be any unexpected frustration or
difficulty on the part of the participant to effectively initialize and use the application.
17
a. Methodology
The nearly finished product will be made available to the general public online. The
team will use juggling forums, as well as YouTube to attempt to attract as many willing
participants as possible. There is not target demographic for this phase and the testing will not
b. Scope
Similar to phase 1, participants will be expected to explore and use the application
without guidance. They will be encouraged to provide feedback via a link on the website.
c. Equipment
The participant is welcome to use any personal computer system that supports a webcam
and a modern browser. The juggling equipment will be at the discretion of the use; however.
d. Metrics
Critical Errors for this phase shall be defined as any time a test subject is not able to get
the application functioning, or is not able to receive feedback from it. None-critical Errors
include difficulties using the application, frustrations with the user interface, problems getting it
John Coffelt
Roles:
algorithms based upon usability testing and feedback from the team
b) (shared) Designing and coding tutorials and games that will enhance the
d) Overseeing design patterns and coding best practices for the project
Michael Rose
Roles:
b) (shared) Designing and coding tutorials and games that will enhance the
c) Setup and maintain database for storing user information and tracking user
progress
Chris Carson
Roles:
a) Work with and optimize the OpenCV library and create functions capable
b) (shared) Designing and coding tutorials and games that will enhance the
c) Choosing, setting up and maintaining the platform for hosting the website
References
The History Of Juggling and The Worlds Best Jugglers. (2018, February 18). Retrieved from
https://jugglealot.com/the-history-of-juggling-and-the-worlds-best-jugglers/