LISA STACY - dash.bestrobotics.org
Transcript of LISA STACY - dash.bestrobotics.org
II
TTAABBLLEE OOFF CCOONNTTEENNTTSS
Guide to Evaluators ................................................................................................................... III
Summary.....................................................................................................................................1
Research Paper ............................................................................................................................2
Implementation of the Engineering Process .................................................................................7
Brainstorming Approaches ........................................................................................................ 12
Analytical Evaluation of Design Alternatives ............................................................................ 14
Strategy Evaluation ................................................................................................................... 19
Offensive Strategy...................................................................................................... 20
Defensive Strategy ..................................................................................................... 21
Safety ........................................................................................................................................ 22
CAD Use .................................................................................................................................. 24
Programming ............................................................................................................................ 26
Conclusion ................................................................................................................................ 28
Appendices ............................................................................................................................... 29
Appendix A: Team Organization ............................................................................................... 30
Team Leaders............................................................................................................. 30
Robot Sub-Teams ....................................................................................................... 31
BEST Award Sub-Teams ........................................................................................... 32
Appendix B: Meeting Minutes .................................................................................................. 34
Appendix C: Test Plans and Reports ......................................................................................... 42
Appendix D: Sample Rating Matrix .......................................................................................... 43
Appendix E: Student Safety Form And Tool Checklist .............................................................. 44
Student Safety Form ................................................................................................... 44
Tool Safety Form ....................................................................................................... 44
Appendix F: Robot Code ........................................................................................................... 45
Appendix G: CAD Drawings .................................................................................................... 53
III
Guide to Evaluators
Summary.....................................................................................................................................1
Implementation of the Engineering Process .................................................................................7
Brainstorming Approaches ........................................................................................................ 12
Analytical Evaluation of Design Alternatives ............................................................................ 14
Strategy Evaluation ................................................................................................................... 19
Offensive Strategy...................................................................................................... 20
Defensive Strategy ..................................................................................................... 21
Safety ........................................................................................................................................ 22
Support Documentation ............................................................................................................. 29
Research Paper ............................................................................................................................2
Page 1
SSUUMMMMAARRYY BEST Inc. has decided to produce two new products: gadgets, for the over 65 recreational
industry, and gizmos, used in the pre-adolescent hunting industry. Due to the risk involved in
the production process, BEST Inc. requires teams to create a robotic control system and maintain
Six Sigma (6σ) quality levels.
In order to build a successful robot capable of performing this difficult assignment, we
followed a strict engineering process. We have documented this engineering process and have
produced a machine that will efficiently complete the tasks assigned to it.
We used an effective and efficient brainstorming process to come up with many design
ideas and then refined and developed these ideas. We deemed many ideas impractical, while
others proved plausible. We built and tested prototypes to determine which ideas were the most
effective. We then assembled the best prototypes into a complete robot, which was then further
tested and refined as necessary.
Page 2
RREESSEEAARRCCHH PPAAPPEERR BEST Inc. is looking for a robotic control system to incorporate into its production
facilities. BEST has decided to hold trial production runs to find the most efficient system and
strategy. BEST is looking for a system that not only limits its own
defects, but also compensates for defects caused by the original
equipment manufacturer (OEM) by executing product recalls.
BEST has asked teams to design a system that maintains quality
sorting and packaging operations on two types of products while being prepared to manage
unexpected product recalls at any time.
Manufacturing companies have been carefully avoiding product recalls for decades. A
product recall can mean disaster for a company, not only because of the initial cost of recalling
the defective products, but also because of the loss of profits as a result of bad publicity. In
1959, GM manufactured over 200,000 Cadillacs with a potentially lethal safety defect in a
critical component of the steering system. The metal used to make this component was too soft,
causing the steering linkage to fail while the car was turning at speeds as low as ten miles per
hour. Three people died as a direct result of this faulty part. Understandably, this incident
severely damaged General Motors’ reputation, and they suffered a considerable decrease in sales.
In order to prevent similar occurrences, GM has since implemented long-term quality
control methods, and now uses a quality process called Six Sigma. GM uses Six Sigma not only
to solve problems that already exist, but also to analyze and improve their manufacturing
process, to find and eliminate minor defects, and to prevent major recalls.
Six Sigma originated at Motorola in the late 1970’s. The company made quality control
its highest priority after witnessing a Japanese competitor create 1/20th the number of defects as
Page 3
Motorola, while completing the same task. Seeing such an enormous contrast motivated
Motorola’s CEO, Bob Galvin, to raise his expectations for the
company’s internal process quality. By 1985, Galvin, along with
veteran engineer Bill Smith, developed MAIC, a defect-eliminating
method, implemented company-wide. In 1987, just six years after his
promotion to CEO, Galvin initiated a quality program called the “Six
Sigma Quality Program.” This program uses an assortment of process improvement techniques
that substantially increase the quality of a company’s products. The quality of a process is
measured based on the number of standard deviations that separate the quality of each product
from the average. More standard deviations between the average and unsatisfactory quality
levels lower the risk of creating a defect.
Galvin set the standard for his company’s product quality at a sigma value of six
deviations, allowing for no more than 0.00034% of products to be defective; just 3.4 defects per
million opportunities (DPMO). After implementing the program, Motorola immediately
received the Malcolm Baldrige National Quality award, quickly establishing the effectiveness of
this revolutionary approach. Since then, more than 120 companies have implemented and
benefitted from the Six Sigma process (Six Sigma Training Assistant, 2007).
The Kansas City area is home to several prominent engineering companies that use Six
Sigma, including Garmin, Honeywell and DST Systems. To understand how Six Sigma is used
in the Kansas City area, we interviewed a Six Sigma expert from Polytainers®, an injection
molding plastics company located in Lee’s Summit, Missouri. Ed Croteau, the director and plant
manager of Polytainers®, is a Six Sigma Master Black Belt who has been certified for over 20
years. Polytainers® implemented Six Sigma only three years ago, but Mr. Croteau is already
Page 4
certain that using Six Sigma at his company has resulted in “a 25% increase in efficiency and
savings.” (E. Croteau, personal communication, November 20, 2010).
Polytainers® manufactures rigid plastic containers by injecting molten plastic into a
mold. They supply other companies who require plastic
containers in which to package their own products. The
containers must have precise dimensions and be identical in
weight and appearance. Polytainers® manufactures roughly 1.5 billion plastic containers
annually, resulting in the possibility of several kinds of defects. Defects are either visual or
mechanical. To survive in a competitive market, the company must avoid defects such as faded
color, scratches, printing errors, and incorrect dimensions or weight.
Like all other Six Sigma companies, Polytainers® uses a variety
of quality control methods which, when used collectively, comprise the
Six Sigma quality control program. Among these control methods,
DMAIC and DMADV are the most commonly used. DMAIC and
DMADV are the modern counterparts of MAIC, Bob Galvin’s quality control method used by
Motorola in the 1980s. The first three steps of these processes are identical (Define, Measure,
Analyze). Once a company has precisely defined the
problem, and has carefully measured the factors that lead to
it, they must analyze the information to determine whether
to use DMAIC or DMADV.
Engineers use DMAIC if they can still solve the problem by making minor adjustments to
the process. When engineers identify the root cause of the problem, they use the final steps in
this method (Improve, Control) to improve the current process by making adjustments, and then
Page 5
maintain control by monitoring the source of the defects to prevent any additional problems.
Engineers use DMADV if the process is beyond repair and requires them to replace the process
completely. Once they understand the problem, they use the final steps in this method (Design,
Verify) to design a brand new process to replace the unsatisfactory one, and then verify that the
process successfully solved the problem.
Another Six Sigma tool used by Polytainers® is the General Linear Model (GLM), which
continuously records measurements and variations in the individual components of a product and
analyzes the patterns to trace the primary contributing factors that cause a particular defect.
Statistically tracing the source of defects ensures that the company has identified the true cause.
According to Mr. Croteau, Polytainers® also uses KAIZEN, a Japanese quality control
process that literally means “never-ending improvement.” KAIZEN utilizes process mapping to
continue analyzing the efficiency of the path that the product takes during its manufacturing.
Simply taking a closer look at the path of the product makes potential improvements evident.
When followed consistently, KAIZEN results in a “never-ending” increase in efficiency.
Polytainers® and other engineering companies in the Kansas City Metro area primarily
use the methods listed above to find the cause of defects and to reduce their frequency. Across
the country and throughout the world, companies apply dozens of similar process improvement
techniques in their own method of implementing Six Sigma.
Because of the risks involved with developing a new product, BEST Inc. has decided to
use Six Sigma to improve process efficiency, limit defects and manage product recalls. Teams
participating in this competition will attempt to avoid products from defective lines without
creating any defects of their own. If they can achieve this, BEST Inc. will be able to compete in
the global market and deliver high quality, reliable products.
Page 6
Citations
American Society for Quality. (2004). Seven Basic Quality Tools. Retrieved October 4, 2010,
from American Society for Quality: http://asq.org/learn-about-quality/seven-basic-quality-
tools/overview/overview.html
DST Systems. (n/d). Retrieved October 5, 2010, from DST Systems: http://dstsystems.com/
Imai, M. (1986). Kaizen: The Key to Japan's Competitive Success. McGraw-Hill/Irwin.
Pande, P. S. (2000). The Six Sigma Way: How GE, Motorola, and Other Top Companies Are
Honing Their Perfomance. McGraw-Hill.
Six Sigma Training Assistant. (2007, December 5). The History and Development of Six Sigma.
Retrieved October 4, 2010, from Six Sigma Online: http://www.sixsigmaonline.org/six-sigma-
training-certification-information/articles/the-history-and-development-of-six-sigma.html
Toyota Motor Corporation. (2003, October 8). The Toyota Production System. Retrieved October
6, 2010, from Toyota Georgetown: http://www.toyotageorgetown.com/tps.asp
Page 7
Figure 1: Our 2009 BEST robot, which used a PVC skid, instead of a caster.
IIMMPPLLEEMMEENNTTAATTIIOONN OOFF TTHHEE EENNGGIINNEEEERRIINNGG PPRROOCCEESSSS We follow a strict 12-step engineering process to guide our team members in the
completion of all projects. This enables us to complete our projects in the most efficient way
possible. It also ensures that we complete every task necessary to design and construct our robot.
The first step in our engineering process is to Read and Understand the Rules. After
receiving the project guidelines, we expect every team member to read and understand the rules
before they can participate in further steps. By doing this, we are able to streamline the
engineering process by eliminating any ideas that do not comply with the rules. This step forms
the basis for the rest of our process, because without a basic understanding of the project
guidelines, we cannot effectively engineer a product.
The second step in our engineering process is to Define the Design Requirements. To
accomplish this step we use a brainstorming process moderated by the team leader. The team
leader asks each member in the group to state one design
requirement. This process continues until we have gathered all of
the design requirements. For more information on this step, refer
to Brainstorming Approaches (Page 12).
The third step in our engineering process is to Research
Similar Designs. In this step, we examine previous years’
designs and various off-season projects to find previously designed components that could be
used as-is or modified for this year’s robot. For example, this year we examined the PVC skid
on our 2009 BEST robot, the Assimilator, but instead decided to use a caster design because the
skid would create an excessive amount of drag. By doing this, we were able to improve
efficiency by eliminating time-consuming trial and error stages.
Page 8
Figure 2: A brainstorming session.
The fourth step in our engineering process is to Inventory Available Resources. In this
step, the team members examine the kit of parts to become familiar with materials we may use in
the final construction of our robot. We also assess each team member’s skill set and interests.
We then proceed to develop specialized sub-teams. These sub-teams are able to address specific
design elements – such as programming, manipulator design, chassis design, etc. – in a way that
is much more efficient than one large team trying to work on the whole project at once.
The fifth step in our engineering process is to Brainstorm Strategies and Design
Alternatives. To develop the most effective strategy, we first determine the maximum amount of
points that can be scored under ideal circumstances. Next,
we identify a more realistic scoring scenario to accomplish
during the game. We then identify specific tasks that we
need to complete in order to accomplish this strategy. After
identifying the tasks, we brainstorm conceptual designs to
complete each task in alternate ways. Having a variety of
designs allows us to choose a design that will work with our strategy, rather than making the
strategy conform to the design, increasing our efficiency.
The sixth step in our engineering process is to Analyze the Strategies and Design
Alternatives. In this step, we determine how well each strategy will work by analyzing each one
for time constraints, ease of strategy implementation, and maximum points possible. Once each
we analyze each strategy, we then determine the main goals of each strategy. For more
information on this process, refer to Strategy Evaluation (Page 19). Next, we analyze the
conceptual designs. To accomplish this we determine the physical properties of each design by
Page 9
Figure 3: Several of our cardboard prototypes, used to prove that a design concept could be created
physically.
prototyping and testing them. We then eliminate the conceptual designs that are not structurally
sound.
The seventh step in our engineering process is to
Select Strategy and Preliminary Design. After
evaluating each of the strategies, we choose the strategy
we can most realistically accomplish during the
competition. Next, we verify that each of our
prototyped designs can accomplish the goals of the
strategy; if it cannot it is eliminated. After this, our
team leader and robot team leader select the three most promising designs. Finally, the
preliminary design is decided by a majority vote using a design matrix (see Appendix D: Sample
Rating Matrix).
The eighth step in our engineering process is to Design the Robot Details. We construct
the prototype using approximate dimensions and readily available materials not included in the
kit of parts. We also define the dimensions of the robot and other details including the placement
of motors, the Cortex and various other manipulators our design may require. During this step,
our electrical sub-team maps out the placement of wires with the goal of increasing our
efficiency during the assembly process.
The ninth step in our engineering process is to Blueprint the Design. Using the
information acquired in the previous step, our Computer Aided Design (CAD) team creates a
three-dimensional model of our robot using Autodesk Inventor. This is crucial to increasing our
efficiency because it allows us to be certain that our design is physically feasible in a CAD
model before actually building components. We then create two-dimensional scaled drawings of
Page 10
Figure 4: Our robot in CAD.
individual parts. We use these drawings to construct our final robot efficiently and accurately.
Additionally these drawings help us to rebuild parts quickly
should they fail. For more information on how CAD was used
in our process, see the CAD Use Section on page 24 and
Appendix G: CAD Drawings.
The tenth step in our engineering process is to Build and
Verify the effectiveness our design. After building each part based on the computer model, we
assemble all of the finished components into one complete, functional robot. At this point in the
engineering process, the robot team communicates with the programming sub-team to assign the
function of each of the buttons and joysticks on the controller to a corresponding function of the
robot. Information on the strategies we used in programming our robot is available in the
Programming section on page 26. We then run the robot through a series of game related tests to
verify that it meets all the design requirements and strategy goals. These tests also help us to
reveal any issues with our strategy, programming or construction.
The eleventh step in our engineering process is to
Improve and Retest. This is a key step in the engineering
process because it allows us to fix any flaws that our design
may have prior to competition. During this step, it may be
necessary to eliminate certain components that are
detrimental to the robot as a whole. It may also be necessary
to make improvements to one component so that we may
Figure 5: One of our students modifying this year’s robot
before a competition.
Page 11
maximize our overall score. Once we have made all the improvements, we retest our robot to
verify that it still functions properly. This cycle of improving and retesting continues until the
robot is performing at its best.
The twelfth and final step in our engineering process is to Deliver Our Product. Our
robot, created using a solid engineering process, has been presented at the River Valley BEST
Hub and the Frontier Trails BEST Regional competitions. We have also presented the robot at
several team fundraisers. Our efficient engineering process ensures that our robot will meet the
highest standard of BEST Inc. when we compete at the BEST World Championship on April 16,
2011.
Page 12
Figure 7: Sticky note checklists.
BBRRAAIINNSSTTOORRMMIINNGG AAPPPPRROOAACCHHEESS The brainstorming process is the procedure that we use to develop concepts and
determine useful solutions to problems within all of our various
sub-teams. We use a specific brainstorming method to engage
in the thought process. Familiarizing every team member with
our brainstorming process before the season begins and
conducting practice brainstorm sessions gives us the
opportunity to maximize the effectiveness of our
brainstorming once the season has begun.
To begin the process the sub-team leaders bring the
students on that team together, and define the problems that
need to be solved. Then the students are asked by the leader
to present their ideas to the group one at a time. The students share their solution ideas, and give
them concise names that are written on large sticky notes at the front of the room so the whole
group can refer to them. This helps other students to continue thinking and encourages new
ideas that build on existing ideas. We continue this process by asking students what ideas they
have to bring to the table, so that everyone has a chance to state their ideas. In addition to
verbally sharing their ideas, the students also communicate their concepts through drawings,
graphs, dioramas, models, templates and preliminary prototypes.
All ideas are encouraged no matter how crazy or strange they may seem so that they can
give inspiration to a workable idea. After we pool our ideas together, the group enters into a
discussion to determine which ones are feasible and comply with the game rules. Once the
workable ideas are determined, the sub-team votes on each idea to see if they want to pursue it.
Figure 6: A sub-team in a brainstorming session.
Page 13
Figure 8: Robot footprint geometries.
Figure 9: BEST sub team brainstorming session.
These ideas are ranked in order of importance to develop a checklist of our priorities. Each
brainstormed item is assigned to the students that wish to pursue and accomplish these goals.
These checklists are saved and displayed throughout our team headquarters. Students are then
notified of brainstorming sessions in advance, so that they can prepare ideas to present to their
sub-teams.
An example of our brainstorming process occurred after the hub competition. We knew
that we needed to reevaluate the robot’s design functions to be able to compete at the next level.
A design concept presented at a manipulator sub-team brainstorming session was the idea of
adding a detachable sub-assembly to the robot. The students
drew various robot geometries, as a footprint viewed from above,
that would allow the robot and subassembly to fit inside the two-
foot cube requirement specified in the rules. The designs were
then discussed to see which ones made practical sense, and could
complete the game tasks in the most efficient manner.
Throughout the build season, the BEST Award sub-
teams used this process repeatedly for all idea concepts and
solutions needed to accomplish our goals. This included
sessions for choosing slogans, booth themes, documentation, spirit and sportsmanship
equipment, t-shirt designs, marketing presentation format, videos, pictures, and cheers. These
sessions also brought our team together by letting students share their thoughts and have
discussion time. We use brainstorming to produce the maximum number of ideas in the shortest
amount of time. This approach is what our team has found to be very effective to help our
students initiate the design process.
Page 14
AANNAALLYYTTIICCAALL EEVVAALLUUAATTIIOONN OOFF DDEESSIIGGNN AALLTTEERRNNAATTIIVVEESS In order to select the best possible components for our robot, we analyze the performance
of all the ideas that we have brainstormed. To evaluate the designs in a consistent format, we
utilize custom designed test report templates (For an example see Appendix C: Test Plans and
Reports). The test reports include designated spaces to record the exact method of testing, the
equipment used while performing each test and the results after completing each test. After
testing a part, we compare it to any other parts that perform a similar function. We then select
the part that performs the best and is the easiest to use.
We conduct three types of tests to evaluate the possible
designs: Prototype testing to compare potential designs,
mathematical experimentation to derive conclusions
conceptually, and material testing to decide which material from
the kit of parts should be used for an individual component.
To test prototypes, we choose the most promising
designs and build them. After using the brainstorming process
to gather possible designs, the students sketch out designs and verbally describe how the designs
will function. The entire robot team then evaluates each design using a design matrix. The
design matrix rates each design on several important factors: reliability, center-of-gravity, ability
to fit in maximum geometry, etc. The team then compiles an overall rating of each robot and
then prototypes the top three designs and analyzes them further.
Once we have constructed all of the prototypes, we test them to determine the final
design. This year, the chassis team tested each of the prototypes in a series of trial rounds on our
replica game field. During each trial round, members of the chassis team evaluated how each of
Figure 10: The preliminary design matrix used to select a design during this year’s build
season.
Page 15
the prototypes interacted with the game field and completed the strategy. The number of gadgets
and gizmos scored and defects introduced to the floor
each round were then entered into a spreadsheet that
calculated the total score for each robot. Once all of
the rounds were complete, a total score was given for
each robot. Based on the data gathered from these
tests, we chose the robot with the highest total score
as our final design.
In some instances, using mathematical calculations allows us to bypass the prototype
testing process. This saves us time by allowing us to find characteristics and behaviors of
designs without having to build prototypes first.
After building a prototype claw, and running a series of
tests, the manipulator team determined that 56 oz-inches is the
minimum force required to grip a gizmo package successfully.
Applying this knowledge to a basic understanding of mechanical
advantage, the team experimented with a few easy-to-implement
lever ratios to find a ratio that achieved the required torque, while
maximizing our claw’s range of motion.
Original servo torque = 44 oz-inches Original servo range of motion = 120 degrees
Necessary servo torque = 56 oz-inches
44 𝑜𝑧 𝑖𝑛.1
× 98
= 49.5 𝑜𝑧 𝑖𝑛 120𝑜
1
× 89
= 106.7𝑜
44 𝑜𝑧 𝑖𝑛.1
× 32
= 66 𝑜𝑧 𝑖𝑛 120𝑜
1
× 23
= 80𝑜
Figure 11: The footprints of the three highest scoring prototypes sketched on a
white board before the “L-bot” was chosen as the final design.
Figure 12: Our robot’s claw, constructed after we
determined the optimum lever arm ratio.
Page 16
44 𝑜𝑧 𝑖𝑛.1
× 43
= 58.7 𝑜𝑧 𝑖𝑛 120𝑜
1
× 34
= 90𝑜
Demonstrated by the equations above, the 9:8 ratio did not provide enough torque to
maintain a grip on the gizmo package. The 3:2 ratio supplied enough torque but limited the
claw’s range of motion to 80 degrees, not wide enough to easily maneuver the claw around
objects. Therefore, the manipulator team chose to use the 4:3 ratio, which provided the
necessary torque with moderate range.
The chassis team also used an equation to find the maximum radius for our wheels
without losing an excessive amount of power. The two combined motors needed to generate
enough force to move at least 40 pounds of weight [(200 gadgets = 20 pounds) + (Robot = 20
pounds)] and move the robot as quickly as possible. A larger wheel diameter provides greater
speed and less power, and a smaller wheel diameter decreases the speed, while increasing the
power.
Motor Torque: 23.53 lb-inch Motor RPM: 43 rpm
𝑊ℎ𝑒𝑒𝑙 𝑅𝑎𝑑𝑖𝑢𝑠 =𝑇𝑜𝑟𝑞𝑢𝑒𝑊𝑒𝑖𝑔ℎ𝑡
23.53𝑓𝑡 𝑙𝑏40𝑙𝑏 = 0.59 𝑓𝑡
𝑊ℎ𝑒𝑒𝑙 𝑅𝑎𝑑𝑖𝑢𝑠 (𝑖𝑛 𝑓𝑒𝑒𝑡) × 2𝜋 ×4360 = 𝑆𝑝𝑒𝑒𝑑 𝑖𝑛 𝑓𝑡 𝑝𝑒𝑟 𝑠𝑒𝑐𝑜𝑛𝑑
0.42𝑓𝑡 × 2𝜋 ×43𝑟𝑝𝑚
60𝑠𝑒𝑐𝑜𝑛𝑑𝑠 = 1.89 𝑓𝑡 𝑝𝑒𝑟 𝑠𝑒𝑐𝑜𝑛𝑑
The equations above show how the chassis team was able to derive a perfect balance
between power and speed. They inserted the minimum force into an equation that related motor
torque to wheel diameter, then solved the equation for wheel radius. The maximum wheel radius
Page 17
was calculated to be 0.59 feet or 7.08 inches. The team decided to use wheels with a five-inch
radius. The five-inch wheel radius provided for an extra amount of weight should our team
collect more than 200 gadgets in one round. They calculated the speed of the 5-inch radius
wheels to be 1.89 feet per second. This speed is the fastest speed our robot can achieve while
maintaining the minimum necessary force. Another way we use analytical evaluation is by performing material tests. We perform
these tests to determine the most effective material for individual components. The manipulator
team used test report templates (See Appendix C: Test Plans and Reports) to document a series
of two tests to verify whether a bungee cord could be used to apply tension to our pulley system.
At the hub competition, our team discovered that the belt we use to lift our arm assembly was
slipping. The manipulator team concluded that either the belt was not able to take the strain the
motor placed on it or that the bungee cord tensioning device was not strong enough to hold the
belt in place. The manipulator team first tested the strength of the belt. They folded the belt over on
itself and placed the open end of the fold in a vise. On the closed end of the belt, our team
attached a 50lb fish scale. To prevent the risk of injury to a student, a mentor pulled on the scale
with the intent to stretch the belt to its breaking point. The belt withstood well over 50lbs of
strain, far more than it would encounter when raising the arm assembly.
The manipulator team then tested the strength of the bungee cord. In a similar manner,
the bungee cord was folded over on itself, placed in the vise and attached to the fish scale. Our
team discovered that a mere 22.1 lb of force applied to the bungee cord was required for
maximum extension. The data gathered from these tests, allowed us to identify the bungee cord
as the limiting component of the system. Once we knew which aspect of the system was the
Page 18
source of the problem, we were able to improve the design. We replaced the bungee cord system
with a powerful spring that was tested under the same circumstances as the bungee cord and was
able to apply seemingly unlimited tension to the belt.
Analytically evaluating our brainstormed designs assures us that we have selected the
best designs. Additionally, because we have such a complex objective to reach in just a few
weeks, time-management is critical to our success. Evaluating our designs in an organized and
systematic manner allows us to complete our design quickly, while still producing a high-quality
product.
Figure 13: Our original robot for the hub competition, with the gadget-collecting
component permanently attached to the robot.
Figure 14: A CAD model of our modified, final robot for the regional and national
competitions, with the detachable subassembly for collecting gadgets.
Page 19
SSTTRRAATTEEGGYY EEVVAALLUUAATTIIOONN Our strategy, both offensive and defensive, is the result of spending time with an excel
spreadsheet that calculates the game score like the actual game. With this score sheet, we
calculate the maximum score, including every non-defective gadget scored in the gadget
packages and every non-defective gizmo scored in the gizmo packages with lids. We then
multiply this score by six to represent a perfect sigma. This perfect score, although nearly
impossible to achieve, is 7,014 points.
We then break the maximum score down into percentages of each primary scoring
component. Gadgets with zero defects make up 73.9% of the total score, and gizmos with zero
defects make up 18.8% of the total score. The gizmo packages comprise 2.1% of the total score
and dual production makes up 4.2% of the total.
Using this information, we center our strategy around two very specific aspects:
maintaining our sigma score as our defensive strategy and obtaining quality products as our
offensive strategy. With these two aspects as our focal point, we have created a versatile strategy
able to deal with almost any situation.
Page 20
Figure 15: Processing gadgets.
Offensive Strategy Our offensive strategy goal is to process as many quality products and package them as
quickly and efficiently as possible. We use the factory data port at the beginning of each factory
shift, before we collect gadgets. We discovered collecting gadgets is a more efficient way to
score points than processing gizmos. This method could be considered either an offensive or a
defensive strategy and will be mentioned in both sections. This strategy ensures that we can
score points on every gadget that we take the time to process.
One way we increase our score is by completing the gadget production line in two stages.
In the first stage, after we have read the data port, we build up one large inventory of gadgets in
our detachable sub-assembly. Near the end of a factory
shift, when we have collected as many gadgets as we can,
we move all of the products to the pack and ship center for
packaging. This begins the second stage in our gadget
production line. We deposit the products into the manual
sorting box (See Figure 15) so that the process engineer can begin to package the gadgets in
order to receive more points. Working the gadget production line in one load is significantly
more efficient than making several trips between the scanning tube and the manual sorting box.
Another offensive strategy we implement is completing both the gadget and the gizmo
production lines to accomplish dual-production. We take advantage of the time while our
subassembly is collecting gadgets by sorting and packaging gizmos to achieve the dual-
production multiplier.
Page 21
Figure 16: Our robot collecting factory waste.
Defensive Strategy Our defensive strategy is a set of precautions that protects us from a loss of sigma
through either interference from other teams or through operator error. We found that nothing is
more crucial to our final score than having a sigma multiplier of six. To make sure that we
maintain our sigma, the primary goal of our game strategy is to have zero defects.
A two-stage gadget production line minimizes opportunities for accidental factory waste,
and using the factory data port early in the round (as mentioned in
our Offensive Strategy on page 20) limits the number of defective
products we process, also decreasing the risk of sigma loss. We
know that our competitors are capable of limiting our score if they
remove gadgets from the OEM pool before our process engineer
can acquire them. We complete the gadget product line first to
guarantee we collect a sufficient number of gadgets.
We understand that we may accidentally drop a gadget or a gizmo during a factory shift.
As a precaution, we trained each driver to stop whatever he is doing and to remove the defect
immediately (See Figure 16). This reduces the risk of having defects at the end of a round.
We also prioritize returning the mobile recall trailer (MRT), which contains the defects
sent down the gadget scanning tube (GST). This dependable strategy guarantees the highest
possible sigma level.
Page 22
SSAAFFEETTYY Metro Homeschool Robotics not only excites students about robotics and engineering,
but also emphasizes safety procedures. At the beginning of this season, we had an OSHA
certified training instructor lead a session explaining
safe procedures when using power tools.
At this session, a mentor recorded those in
attendance and then divided the students into smaller
groups, teaching them how to use each power tool
safely. The mentor provides the students with a
checklist of what to do before and after using the tool
and teaches them what to do should a dangerous
situation arise. As these learning sessions take place, the
mentor records which students have received training on
each tool. To see one of these forms, see Appendix E:
Student Safety Form and Tool Checklist.
We have a strict rule that any student who uses a power tool must have mentor
supervision to guarantee he follows proper safety procedures. Safety precautions include
checking for loose items on the tool, and when using the mill or drill press, students must verify
that the bit is secure in the tool's chuck, and that the material is secure in a vise.
In addition, every time a team member uses a power tool, he must wear safety glasses.
The team keeps extra safety glasses on site, and anyone who comes into the building has access
to them. To protect team members from metal shards and other harmful objects on the floor,
Figure 17: A mentor teaching a student how to use the mill.
Page 23
open toed shoes are not allowed. Additionally, any food or drink must stay in the designated
snack room to minimize spills and prevent potential accidents.
All of the larger tools such as the band saw, drill press and mill are in one room, with
safety glasses right outside the entrance. Therefore, when a team member enters the room to
work on a part or to help someone, he can grab a pair of glasses. The only other power tools in
the building are the cordless drills. While using these drills students are still required to wear
safety glasses. We regularly vacuum the floors and work surfaces to keep sawdust out of the air
and to keep our workplace clean and easy to use.
Throughout the past three years, our safety procedures have not changed and have
successfully prevented tool related injuries. Not only do we exercise safe processes while
building the robot, we utilize them at the competition, requiring all members follow not only the
guidelines set forth by BEST Inc., but also the rules enforced by the team during the build
season.
Page 24
CCAADD UUSSEE Computer Aided Design plays an integral role in our robot design process. In past years,
our team has used Autodesk Inventor to model the robot, but this year we took it one step further
and modeled the field as well.
Modeling the robot in CAD has many uses including creating part sheets as templates to
increase the speed and efficiency of building parts. It also assists with modifying existing parts
or producing new parts through designing the parts virtually before building them physically.
We followed a simple five-step CAD process when designing our robot. The first step is
to brainstorm and create quick, simple prototypes in order to prove concepts. We used this step
to determine what our robot would do, and how it would do it.
Step two involves evaluating our prototypes in action for efficiency, durability and
manufacturability. We were able to determine several things that would need to be modified for
our final robot. For instance, when prototyping the data port reader, we were able to determine
the ideal angle for the reader to obtain the most accurate read.
Step three takes place simultaneously with step two and
consists of creating each part of the robot using CAD. As we
notice problems during prototype evaluation, we adjust the CAD
models accordingly to alleviate the issues. We also use this step
to evaluate our total robot size and ensure that our robot fits
within all constraints. As previously mentioned, we also
designed our field in CAD. This gave our team the ability to
check how each part would interact with the game field this year.
Figure 18: Our CAD robot interacting with the field.
Page 25
In step four, our CAD team creates drawings of each part
and then passes them on to the robot build teams for
manufacturing. Unlike manufacturing parts without plans, we
create the final assembly of the robot accurately. This eliminates
several issues such as parts not aligning correctly, or drilling
holes in the wrong places and having to re-drill. The use of
CAD decreases the time required to build our robot by
approximately one week compared to years when we did not use
CAD.
Step five is still ongoing: creating replacement parts as we continue to evaluate parts for
efficiency and durability. The CAD drawings and models have proved invaluable in accelerating
the creation of new parts for our robot and manufacturing them with precision. We continue to
improve on our robot’s design as we notice things that will make our robot more efficient. More
part templates are available in Appendix G: CAD Drawings.
Figure 19: A sample part diagram for the robot.
Figure 20: Our CAD robot and field.
Page 26
PPRROOGGRRAAMMMMIINNGG Changing platforms this year was just the first of many challenges the programming team
encountered and surmounted this year. The Cortex provides three different language options for
programming the robot. Our team decided to
use RobotC, due to familiarity from use with
prior VEX platforms. It also provided us with
a great debug mode and an easy way to
separate code into separate tasks, utilizing the
full potential of the Cortex.
We decided to write our code from scratch this year, rather than utilize available default
code and libraries, so that team members would acquire a deeper understanding of the language.
This required writing code for arcade drive, multiple servos, and reading the data port.
We took full advantage of the multithreading capabilities of the cortex processor and
divided all processes into 4 tasks: a drive task, a motors task, a
sensors task, and a main task. Each of the tasks controlled separate
functions of the robot, allowing one task to enter a loop or wait on
input, without affecting the other tasks. An example of this benefit
is demonstrated when the data port reads an invalid code; it runs
through a series of wait statements and servo positions to signal the
driver. If all of the code were in one task, the robot would be uncontrollable during that wait
period instead of just the sensors task.
We used comments to maximize code readability and to include code that is not currently
used on the robot. For example, we use a spinning motor to indicate a closed magnetic reed
Figure 21: The new control system.
Figure 22: RobotC, The program used to code
our robot.
Page 27
switch, but we also wrote the code for a servo to indicate this same state. Commenting out the
code allows for an easier modification process without having to write the code and create
needed variables. We used comments to improve the readability and understanding of the code
for both new members and experienced members. We also used comment boxes as a header for
each task to describe the purpose of each task and included a reminder of how the task is
launched. We included a copy of our robot code in Appendix F: Robot Code.
We also had the opportunity to share our code with another team this year that had no
programming experience, providing them with easily modifiable code they could use on their
robot and giving them the tools needed to understand the language. Our use of comments
provided them with an easy way to understand the code.
Page 28
CCOONNCCLLUUSSIIOONN By implementing our 12 step engineering process, we have created a robust, efficient
robot that will skillfully complete all the necessary tasks. Our design took first place at the River
Valley BEST Hub on October 16, 2010, and on December 11, 2010 at the Frontier Trails BEST
Regional, we took 5th place. We look forward to demonstrating our robot again at the upcoming
BEST World Championship on April 16, 2011, in Orlando, Florida. This robot (Seen in Figure
23), built to maintain Six Sigma (6σ) quality levels, is just our first step into the world of factory
automation. Be sure to watch our corporation in the future for new developments for the “over
65 recreational” and “pre-adolescent hunting” industries.
Figure 23: Our Completed Robot.
AAPPPPEENNDDIICCEESS
AAPPPPEENNDDIIXX AA:: TTEEAAMM OORRGGAANNIIZZAATTIIOONN
Team Leaders
Spirit & Sportsmanship Leaders Mariah Sterling & Caitlyn Heztel
Website Leader Matt Mohler
Notebook Leader Sam Wilcoxon
Team Exhibit Leader Shea Stacy
Marketing Presentation Leader Brandt Vircks
Manipulator Leader Cameron Chartier
Chassis Leader Sal Rios
Programming & Electrical Leader
Bryant Young
Team Leader Trevor Stacy
Robot Leader Daniel Catton
BEST Award Leader Nathan Glasgow
Robot Sub-Teams
ROBOT
Daniel Catton – Robot Leader
Cameron Chartier – Manipulator Leader
Sal Rios – Chassis Leader
Alex Wilcoxon, Avery Young, Brandt Vircks, Brian Mehl, Caitlyn Hetzel, Chandler Hetzel,
Damon Young, David Williamson, Hunter Hughes, Hunter Smith, Isabella Sterling,
Jessica Jolly, Joey McGee, Joseph Bergthold, Macy Rios, Melissa Bergthold, Nathan Glasgow,
Ramon Williamson, Sam Wilcoxon, Trevor Stacy, Victoria Hamm
PROGRAMMING AND ELECTRONICS
Bryant Young – Student Leader
Cameron Chartier, Jeremiah Trapp, Joseph Keller, Michael Ward, Philip Clevenger,
Ramon Williamson, Zachary Williamson
BEST Award Sub-Teams
PROJECT ENGINEERING NOTEBOOK
Sam Wilcoxon – Student Leader
Daniel Catton, Mariah Sterling, Matt Mohler, Sal Rios, Shea Stacy
MARKETING PRESENTATION
Brandt Vircks – Student Leader
Bryant Young, Caitlyn Hetzel, Daniel Catton, Hunter Smith, Macy Rios, Mariah Sterling,
Sam Rios, Nathan Glasgow, Matthew Mohler
TEAM EXHIBIT AND INTERVIEWS
Shea Stacy – Student Leader
Alex Wilcoxon, Avery Young, Brian Mehl, Brooke Vircks, Bryant Young, Isabella Sterling,
Jessica Jolly, Joey McGee, Macy Rios, Melissa Bergthold, Victoria Hamm, Michael Ward.
SPIRIT AND SPORTSMANSHIP
Mariah Sterling – Student Leader
Caitlyn Hetzel – Apprentice Leader
Alex Wilcoxon, Brian Mehl, Brooke Vircks, Chandler Hetzel, Damon Young, Hunter Smith,
Isabella Sterling, Jessica Jolly, Joseph Keller, Madeline Rios, Philip Clevenger, Victoria Hamm
WEBSITE
Matt Mohler – Student Leader
Hunter Hughes, Joey McGee, Joseph Bergthold, Michael Ward, Zachary Williamson
AAPPPPEENNDDIIXX BB:: MMEEEETTIINNGG MMIINNUUTTEESS
9/10/10
Objectives: Booth: Brainstorm ideas for factory, decide objective for Saturday.
Presentation: Go over score sheets; begin discussing ideas of presentation, give rules to people.
Chassis: Find a way to move the MRT.
Manipulator: Decide what to prototype.
Electrical: Plug in all parts & connect, make “work” on simple “box” robot, time different size
wheels, test if slower when carry “load.”
Website: Discuss website/internet safety, research other team websites and discuss layouts/
themes.
Conclusion: Booth: Began brainstorming, decided five goals for Saturday.
Presentation: All but three roles assigned, those three assigned by Saturday, get information
from mentors/students for speeches (individual), have rough drafts by Thursday.
Chassis: Two alternatives: grab and pull and wheel hook were chosen.
Manipulator: Prototyping started.
Electrical: All objectives met.
Website: Accomplished all objectives. Members to bring two themes to next meeting.
9/11/10
Objective: Spirit and Sportsmanship: Find timeline and brainstorm giveaways
Presentation: Meet, recap and assign final three parts
Booth: Brainstorm more; work on layout of booth.
Manipulator: Brainstorm and prototype dumping bucket, and decide if dumping bucket should
be part of the robot or sub assembly.
Chassis: Prototype design ideas for moving MRT and reading data port
Electrical: Improve Box bot
Conclusion: Sprit and Sportsmanship: Made partial timeline, and brainstormed giveaway and discussed
logo.
Presentation: Parts assigned,
Booth: Finished brainstorming, made dioramas of booth.
Manipulator: Prototypes not completed, made timeline
Chassis: Made claw that moves MRT and read data port both, and build motor mounts for Box
bot.
Electrical: Box bot improved
9/13/10
Objective: Presentation: For students to interview other students to start rough draft.
Sprit and Sportsmanship: Brainstorming T-Shirt
Booth: Discuss recourses
Robot: Decide on gadget manipulator; start designing gizmo manipulator, start caster prototype
Electrical: Check reed switch
Website: Decide on basic menu items
Conclusion: Presentation: Watch power point of last season’s presentation
Sprit and Sportsmanship: Successfully brainstormed T-shirt and possible color
Booth: Decided on resources and discussed ways to get them
Website: Decided on menu items and theme
Robot: Decided on a robot mounted gadget manipulator, began designing gadget manipulator
latch, began designing gizmo manipulator, caster prototype needs to be completed.
Electrical: tested switch and determined range of reed switch.
9/16/10
Objective: Notebook: Meet to assign parts
Robot: Make prototype of claw/arm and build gadget catcher, have working caster, have metal
motor mounts built, MRT mover
Strategy: Test gadget package rate including sorting.
Sprit and Sportsmanship: Decide color of main shirt and partial design.
Website: Decide on theme & menus & assigned task to different page & activities.
Conclusion: Notebook: Decided to have team members read 2009’s notebook.
Robot: Made working prototype claw & arm, gadget catcher has been cut but not built, 80
gadgets in 49-68 seconds
Sprit and Sportsmanship: Decided dark gray t-shirt with lime green letters & white outline,
METRO X 6σ = BEST on front of shirt only.
Website: colors black, silver, green interviewed students.
9/17/10
Objective: Presentation: Determine attire & how to present ourselves professionally, read presentation.
Manipulator: Build & test prototypes
Programming: Map buttons to tasks
Conclusions: Presentation: Separated attire for boys & girls, decided to give judges a notebook, read Brandt’s
speech & reviewed it.
Sprit and Sportsmanship: Decided on Total Recall on sleeve, decided on Bible verse, sponsors,
website & name on back, also discussed e-mails
Manipulator: Finished gadget box (not door) & attached it to Box bot 2.0
Programming: Started mapping function buttons
9/18/10
Objective: Robot: Finish robot prototype
Booth: Narrow brainstormed ideas & work on layout
Sprit and Sportsmanship: Finalize t-shirt elements
Conclusion: Robot: Almost finished robot prototype, with gizmo arm, gadget manipulator, gadget latch, &
moving robot
Booth: Halved list of ideas & decided to work on layout Monday
Spirit and Sportsmanship: Decided on Black t-shirts with green letters and white outline.
9/20/10
Objective: Spirit and Sportsmanship: Finish t-shirt design
Robot: Fix gizmo manipulator, spring load door, put a stop for door to prevent it from closing
past hole for latch.
Booth: Work on layout
Programming: Setup robot C environment & get firmware updated, Land any program to show
connectivity is working.
Conclusion: Spirit and Sportsmanship: Front finished & voted on verse started to vote on, back design
assigned to Caitlyn (voted 7-0), sleeve designed.
Robot: Partially fixed gizmo manipulator, spring-loaded door, made door stop which also
deflects gadgets to either side to prevent sticking in the latch hole.
Booth: Looked at previous year’s booths & our documentation form the past
Programming: Met objective
9/27/10
Objective: Booth: Continue building, & record video interviews for BEST 2010 documentary
Presentation: Practice
Robot: Finish gizmo manipulator, fix MRT manipulator and hold driver testing & selection
Spirit and Sportsmanship: Make noisemakers Fan/sign & cone trophies for each team, price
giveaways & raffle, e-mail other teams, thank you cards to hub & team sponsors.
Notebook: Assign people parts
Conclusion: Booth: Started cone for corner, Got majority of interviews recorded.
Presentation: Ran through all presenters & gave feedback
Robot: Confined building gizmo manipulator, fixed MRT manipulator, driver testing.
Spirit and Sportsmanship: Goals almost achieved.
Notebook: Parts assigned rough drafts due Thurs.
9/30/10
Objective: Notebook: Have rough drafts of all assigned parts
Spirit and Sportsmanship: Make trophies, decide on button idea, & raffle.
Robot: Get manipulator attached to tower, & fin in space, fix caster, pick drivers & spotters, get
robot inside 2’ by 2’ geometry, & new wheels & hubs built
Programming: Get data port reader working & indicator working.
Booth: Assemble walls assign responsibilities for documentation
Conclusion: Notebook: Most have parts have rough drafts, to have all parts roughed out by next meeting
Spirit and Sportsmanship: Objective met
Robot: Manipulator attached to tower & got in space, fixed caster, got data & working on
choosing driver & spotters, cut off an inch from front of robot to get it in geometry.
Programming: Program works & was tested, need to Q & A answer about data port electronics.
Booth: Assigned students to documentation, finished trimming walls & put them up.
10/4/10
Objective: Notebook: Have most of notebook done
Booth: Finish layout and work on documentation
Sprit and Sportsmanship: Teach chants and cheers to whole team, and finish more fan
bammers.
Presentation: Determine times for each speaker, and work on power point.
Conclusion Notebook: Parts and research paper need to be finished
Booth: Finalized layout and prepped booth for painting.
Sprit and Sportsmanship: Objective met.
Robot: Caster was attached, arm pulley and wheel mounts in progress
Presentation: Got three sections of power point done, recorded times of five of the speakers
10/7/10
Objective: Notebook: Have most of notebook done
Sprit and Sportsmanship: Work on fan bammers, finalize buttons.
Website: Find errors, and create pages
Presentation: Work on memorization, work on cutting down time, plan handouts
Booth: Touch up paint, and paint green strip
Programming: Update some button/motor logic per driver request, prototype data port output
signal and decide how to build it with kit of parts.
Strategy: Driver practice scheduled
Conclusion:
Notebook: Objective not met, 2 parts remaining
Sprit and Sportsmanship: Objective met
Website: Objective met
Presentation: Continuing on completion
Robot: Started driver practice, and continued to work on data port display\
Programming: Used colored CD’s for data port output, button/motor logic updated
Strategy: Objective met.
10/11/10
Objective: Notebook: Have notebook edited
Booth: Finish documentation and mount shelves
Robot: Make BEST legal battery holders, put team number and name on robot
Sprit and Sportsmanship: Make a to-do list,
Marketing Presentation: Present in front of group for practice and feedback.
Conclusion: Notebook: Objective met
Booth: Continued documentation, mounted shelves and conveyer belt, and made employee of
the month board.
Robot: Two battery holders made, team name and number on robot.
Sprit and Sportsmanship: cones/ giveaway completed, and raffle planned.
Marketing Presentation: presentation given to group, and decision made to skim down
speeches and to work on memorization.
10/25/10
Objective Booth: Minor touch up to booth and documentation
Robot: Decide on new chassis design to accommodate a sub-assembly, decision to be made
using design matrix
Marketing Presentation: Look for ways to improve presentation
Programming: Upgrade to Robot C 2.3 and provide BEST code in new version, implement
more finesse at slower speeds.
Sprit and Sportsmanship: Work on cheers
Conclusion Booth: painted wings on front of booth, and checked documentation for spelling errors
Robot: started cardboard prototypes for new chassis
Marketing Presentation: Watched video and posted speeches to be open for modification by
other team members.
Programming: Robot C updated, decided not to implement any new BEST code as our own
bode works well, implemented squared curve response to add better joystick control of
slow speeds
Sprit and Sportsmanship: Objective met
11/18/10
Objective Booth: Paint
Robot: final assembly
Programming: train another student on programming, update code to accommodate limit
switches on arm and change MRT servo starting position.
Notebook: Discuss research paper
Conclusion Booth: Objective met
Robot: finished chassis base
Programming: all updates were tested and worked well
Notebook: Ideas for research paper generated and sorted.
AAPPPPEENNDDIIXX CC:: TTEESSTT PPLLAANNSS AANNDD RREEPPOORRTTSS Purpose of Test: To determine the maximum amount of stress that the belts can take.
Test Equipment: 50lb fish scale, Belt, Vise
Method of Test: Folded belt over on itself in the shape of an U. The open end was stuck
in the vise and the vise was clamped shut. The closed end of the belt was attached to a fish scale.
A mentor then pulled on the scale, trying to break the belt. The strength of the belt exceeded
50lbs. This caused us to conclude the test.
Test Results: Belt withstood a greater amount of force than could be measured. This
showed that the belt would not slip when put under the stress of lifting the arm.
Purpose of Test: To determine maximum tensioning strength of a single bungee cord.
Test Equipment: 50lb fish scale, Bungee cord, Vise
Method of Test: The bungee cord was folded over on itself in the shape of a U. The
open end was placed in the vise and the vise was clamped shut. The closed end of the bungee
cord was attached to the fish scale. A mentor then pulled on the scale to try to break the bungee
cord.
Test Results: The bungee cord was pulled to maximum extension with 22.1 lbs of force.
Since the motor was being pulled in an opposite direction with a greater amount of force than
22.1 lbs, it was determined that the bungee cord was not a good tensioning device.
AAPPPPEENNDDIIXX DD:: SSAAMMPPLLEE RRAATTIINNGG MMAATTRRIIXX
AAPPPPEENNDDIIXX EE:: SSTTUUDDEENNTT SSAAFFEETTYY FFOORRMM AANNDD TTOOOOLL CCHHEECCKKLLIISSTT
Example Student Safety Form Name of Student: Sam Wilcoxon
Name of Trainer: Kevin Wilcoxon
Tools Trained In: Mill, drill press, large band saw, small band saw, grinder, sander, chop saw
Example Tool Safety Form Name of tool: Mill
Pre-use Checklist
1. Clear the mill of all unnecessary materials.
2. Remove any remaining drill bit from previous use.
3. Place material securely in vise.
4. Do not wear gloves or loose clothing.
5. Tighten the new drill bit in the chuck.
6. Check that everyone is wearing safety glasses before starting the mill. In-use Checklist
1. Keep hands clear of all moving parts
2. Do not talk to others while using the mill.
3. Keep eyes focused on the mill at all times.
4. Apply pressure gradually to prevent personal injury or damage to property.
5. Do not remove material from mill until it has been turned off. Post-use Checklist
1. Turn off mill when finished.
2. Use brake to stop mill.
3. Clear saw dust or metal shavings off the material and the machine.
4. Remove material from the vise.
5. Remove the drill bit from the chuck and return it to its case.
AAPPPPEENNDDIIXX FF:: RROOBBOOTT CCOODDEE
mhr_code (2).c Wednesday, March 16, 2011 12:56 PM
#pragma config(Sensor, dgtl1, dp_p2, sensorTouch)#pragma config(Sensor, dgtl2, dp_p1, sensorTouch)#pragma config(Sensor, dgtl3, dp_p0, sensorTouch)#pragma config(Sensor, dgtl5, gizmo, sensorTouch)#pragma config(Sensor, dgtl7, ArmStopP, sensorTouch)#pragma config(Sensor, dgtl8, ArmStopM, sensorTouch)#pragma config(Motor, port1, rightMotor, tmotorNormal, openLoop, reversed)#pragma config(Motor, port3, armMotor, tmotorNormal, openLoop)#pragma config(Motor, port4, gizmoServo, tmotorServoStandard, openLoop) //Included Expansion#pragma config(Motor, port5, mrtServo, tmotorServoStandard, openLoop)#pragma config(Motor, port6, clawServo, tmotorServoStandard, openLoop)#pragma config(Motor, port7, dataServo, tmotorServoStandard, openLoop)#pragma config(Motor, port8, lidServo, tmotorServoStandard, openLoop) //Included Expansion#pragma config(Motor, port9, gizmoMotor, tmotorNormal, openLoop)#pragma config(Motor, port10, leftMotor, tmotorNormal, openLoop)
//*!!Code automatically generated by 'ROBOTC' configuration wizard!!*//
// We defined extra inputs for future expansion.
/*******************************************************\| Team Name: Metro Homeschool Robotics || || Team Number: 237 || || Date: 14-Mar-2011 || || Purpose: Game Code For Robot Operation in the || BEST Robotics Competition "Total Recall" || || Programming Team: || Joey McGee || Joseph Keller || Michael Ward || Bryant Young |\*******************************************************/
-1-
mhr_code (2).c Wednesday, March 16, 2011 12:56 PM
/************************************\| Drive Task - Launched By Main Task || Controls Drive Motor System |\************************************/
task Drive(){//Initialize All Variables Used in Drive Taskint joy_x; // This Variable Holds the X Value of the Drive (Right) Joystickint joy_y; // This Variable Holds the Y Value of the Drive (Right) Joystickint threshold = 20; // Eliminates 'noise' from a joystick that isn't perfectly at (0,0)
while (true) // Infinite While Loop To Keep Task Running{
joy_x = vexRT[Ch1]; // Get X Value from Right Joystickjoy_y = vexRT[Ch2]; // Get Y Value from Right Joystick
// Provides Arcade Drive Function For Robotif(abs(joy_y) > threshold) // Driving Forwards or Backwards{
motor[leftMotor] = ((joy_y + joy_x))^2/127;motor[rightMotor] = ((joy_y - joy_x))^2/127;
}else if((abs(joy_x) > threshold) && (abs(joy_y) < threshold)) // Turning in place{
motor[leftMotor] = joy_x;motor[rightMotor] = (-1 * joy_x);
}else // Stop Moving{
motor[leftMotor] = 0;motor[rightMotor] = 0;
}}
}
-2-
mhr_code (2).c Wednesday, March 16, 2011 12:56 PM
/*************************************\| Motors Task - Launched By Main Task || Controls Manipulation Devices |\*************************************/
task Motors(){
// These 6 Variables Hold the Button Boolean Valuesint btn_5U; // MRT Servo Upint btn_5D; // MRT Servo Downint btn_6U; // Arm Control Buttonint btn_6D; // Claw Control Buttonint btn_7L; // Lid Servo Upint btn_8R; // Lid Servo Down
// This Variable Holds the Y Value of the Manipulator (Left) Joystickint joy_3;
// These Variables Hold State Values for Arm Limit Switchesint armstopP;int armstopM;
// This Variable Defines Arm Direction (Forward is +1, Backward is -1)int armDir = 0;
while (true) // Infinite While Loop To Keep Task Running{
// Get Control Values From Joystick For Controlling Motorsjoy_3 = vexRT[Ch3];btn_5U = vexRT[Btn5U];btn_5D = vexRT[Btn5D];btn_6U = vexRT[Btn6U];btn_6D = vexRT[Btn6D];btn_7L = vexRT[Btn7L];btn_8R = vexRT[Btn8R];
//Get Sensor Input From Arm Limit SwitchesarmstopP = SensorValue[ArmStopP];armstopM = SensorValue[ArmStopM];
// Control Arm Motorif ((btn_6U == 1) && // If Arm Control Button is Pressed AND
(((armstopP == 1) && (joy_3 < 0))|| // Top Switch Pressed And Arm Moving Down OR((armstopM == 1) && (joy_3 > 0)) || // Bottom Switch Pressed And Arm Moving Up((armstopP == 0) && (armstopM == 0)))) // OR No Limit Switch Pressed{// If Any Of The Statements Are True, Assign Joystick Value To Motor
// If Arm Is Moving Forward, Assign 1 To armDirif(joy_3 >= 20) {
armDir = 1;motor[armMotor] = joy_3;
}// If Arm Is Moving Backward, Assign -1 To armDirelse if(joy_3 <= -20) {
-3-
mhr_code (2).c Wednesday, March 16, 2011 12:56 PM
armDir = -1;motor[armMotor] = joy_3;
}// If Input Is 0, Do Not Change armDir Valueelse {
motor[armMotor] = joy_3;}
}else{//Set Motor To 0armDir = 0;motor[armMotor] = 0;}
// Not Used, But Was Used To Provide Opposite Value to Arm Motor// On Button Release To Stop Motor And Prevent Coasting
/* if(armDir == 1){motor[armMotor] = -64;wait1Msec(150);}if(armDir == -1){motor[armMotor] = 24;wait1Msec(150);} */
//control lidServo, Not Currently Used, Coded For Expansion/* if ((btn_7L == 1) && (btn_8R == 0)){
motor[lidServo] = 127;}if ((btn_7L == 0) && (btn_8R == 1)){
motor[lidServo] = -127;} */
// Control MRT Servo (5U is up, 5D is down)if (btn_5U == 1){
motor[mrtServo] = -127;}if (btn_5D == 1){
motor[mrtServo] = 127;}
// When Claw Control Button is Pressed, Feed Joystick Value to Servoif (btn_6D == 1){
motor[clawServo] = joy_3;}
}}
-4-
mhr_code (2).c Wednesday, March 16, 2011 12:56 PM
/***************************************************\| Sensors Task - Launched By Main Task || Evaluates Sensor Input & Executes Visual Response |\***************************************************/
task Sensors(){
//These Variables Hold The Values For Each Of The Data Portsint dataport_p2;int dataport_p1;int dataport_p0;
int btn_7U; //read data portint btn_8U; //reset data port servo
//This Variable Holds the Value For The Magnetic Reed Switchesint magnet;
while (true){
btn_7U = vexRT[Btn7U]; //Get Read Data Port Button Valuebtn_8U = vexRT[Btn8U]; //Get Reset Data Port Button Valuemagnet = SensorValue[gizmo]; //Get State of Magnetic Switches
if (magnet == 1) // If A Magnet Is Detected{
motor[gizmoMotor] = 127; // Make the Gizmo Motor Rotate/* motor[gizmoServo] = 127; */ // AND Make the Gizmo Servo Move, Not Used
}else // If A Magnet is Not Detected{
motor[gizmoMotor] = 0; // Make the Gizmo Motor Stop Rotating/* motor[gizmoServo] = -127; */ // AND Make the Gizmo Servo Reset, Not Used
}
if (btn_8U == 1) //If Reset Data Port Button is Pressed{
motor[dataServo] = 108; // Reset Data Port Servo}
if (btn_7U == 1) // If Read Data Port Button is Pressed{
// Get Value Of Data Port Sensorsdataport_p2 = SensorValue[dp_p2] ; // Port 2dataport_p1 = SensorValue[dp_p1] ; // Port 1dataport_p0 = SensorValue[dp_p0] ; // Port 0
-5-
mhr_code (2).c Wednesday, March 16, 2011 12:56 PM
// Evaluate For All Possible Cases and Set Position// Of Data Port Servo Accordingly To Provide Visual ID
if ((dataport_p2 == 1) && (dataport_p1 == 1) && (dataport_p0 == 1)){
motor[dataServo] = 60; //Black Magnetic}else if ((dataport_p2 == 1) && (dataport_p1 == 1) && (dataport_p0 == 0)){
motor[dataServo] = 30; //Yellow Magnetic}else if ((dataport_p2 == 1) && (dataport_p1 == 0) && (dataport_p0 == 1)){
motor[dataServo] = 05; //White Magnetic}else if ((dataport_p2 == 0) && (dataport_p1 == 1) && (dataport_p0 == 1)){
motor[dataServo] = -20; //Black Non-Magnetic}else if ((dataport_p2 == 0) && (dataport_p1 == 1) && (dataport_p0 == 0)){
motor[dataServo] = -50; //Yellow Non-Magnetic}else if ((dataport_p2 == 0) && (dataport_p1 == 0) && (dataport_p0 == 1)){
motor[dataServo] = -108; //White Non-Magnetic}else // BAD Read, Move The Servo Up and Down For 700ms, Then Return To Start{
motor[dataServo] = 120;wait1Msec(100);motor[dataServo] = 75;wait1Msec(100);motor[dataServo] = 120;wait1Msec(100);motor[dataServo] = 75;wait1Msec(100);motor[dataServo] = 120;wait1Msec(100);motor[dataServo] = 75;wait1Msec(100);motor[dataServo] = 120;wait1Msec(100);motor[dataServo] = 108; //Return To Start
}}
}}
-6-
mhr_code (2).c Wednesday, March 16, 2011 12:56 PM
/**************************************\| Main Task - This task runs first || when robot is powered on || || -Sets initial servo positions || || -initiates multi-tasking for || Drive, Motor, and Sensor tasks || || -initiates an always true || loop to keep program running |\**************************************/
task main(){
//set initial servo positionsmotor[dataServo] = 108; //set dataport indicator servo to start position
motor[mrtServo] = 127; //set mrt servo to start position of closed
motor[clawServo] = 127; //set claw to closed position
//Included For Expansion or Modification, but not used/* motor[lidServo] = -127; //set lid servo to start position motor[gizmoServo] = -127; //set gizmo indicator servo to start position */
StartTask(Drive); //Controls Drive Motor System
StartTask(Motors); //Controls Manipulation Devices
StartTask(Sensors); //Evaluates Sensor Input & Executes Visual Response
// Keep the program alivebool running;running = true;while(running == true){}
}
-7-
AAPPPPEENNDDIIXX GG:: CCAADD DDRRAAWWIINNGGSS