Engineering 102, Dr. Hamrick, Fall 2019 Project 1
Robot Programming Using an Arduino Controller and Matlab
The Objective is to use the Arduino controller, programmed using Matlab, to study the performance
characteristics of the motors. Most of the project is individual. I expect students to help one another,
but no one should do the project for another student. You may not use another student’s robot for data
collection or use another student’s data.
Part A: Individual Using the separate handout “Robotic Set Up of the Arduino Controller” and the files
provided, configure your Arduino so that it can be controlled by Matlab on your laptop. Build the robot,
interface your computer with the Arduino, command it using Matlab, wire at least three motors (torso,
shoulder, elbow) through the H-bridges and control each independently.
Build the robot using the instructions in the kit. Some words of caution before you start: This will take a
couple of hours, so give yourself a clear space to work and bring a lot of patience. Separate the screws
and account for all before you start. Some are close in size and are easy to confuse. Be careful to “Snugtight” the screws, but do not over-tighten or they may strip out the plastic. When assembling the
transmissions, put in the gears before the nuts, and the nuts must be seated correctly. A wooden
toothpick or non-magnetic tool might help, or you can thread one of the correct bolts through the nut to
use as a temporary “handle.” You will not need the control box with its toggle switches or batteries, but
you are welcome to assemble it, plug in batteries and run the bot manually if you like. If you do, remove
all batteries before the next step. Having batteries in the robot can cause many problems.
I call the motors out by this designation in line with the human body: Torso is the bottom motor that
rotates the arm back and forth, Shoulder is the motor that sits on top of the torso, Elbow is the next one
up, Wrist is the next one that is attached to the two links and tilts the gripper, and Gripper is the two
fingers at the end.
Wire ONE motor through the H-bridge using the instructions. Start with the torso motor. Get that one
working so that you can command it with Matlab, then wire the shoulder and elbow motors. It is
recommended that you use only pins 3-12 for motors, starting with 12-11 for torso, 10-9 for shoulder,
etc. Do not use pins 1,2 or 13 at this time. When you can command all three motors independently, you
are ready for data collection.
Part B: Individual Process capability - Collect data on the accuracy of your robot:
Determine the precision characteristics of one of the motors on your robot. Precision can be thought of
as the ability to hit the same mark in the same place every time. This will allow you to determine the
tolerance that your robot can hit repeatedly within. You may find that electric motors have different
performance characteristics from one to another and when running forward and reverse.
Set your initial point: Position a piece of paper in front of your robot with one corner at the front, the
orientation of the paper is not very important for this data collection. Attach a marker to the gripper of
your robot (rubber bands work well). Position the torso at about a 45 degree angle to the left side of
the base so that the marker is roughly in the center of the paper. Write a program that runs the elbow
or shoulder motor down and then up so that you make a mark on the paper. Jog that same motor so
that the marker is 1/8 inch above the paper. Don’t move that motor any more during this test.
Figure 1 Set up of robot with paper
Collect data for the accuracy of your torso motor: Write a Matlab program that will rotate the torso
motor to the right for 6 seconds, pause for at least ½ second, and rotate back for 6 seconds. Your marker
will probably not return to the exact same position. Measure the distance from the fist dot to the
second dot and record the value. Without making any other adjustments, run the program again and
measure the distance from the second dot to the third dot. Repeat this process, measuring the distance
from one dot to the next until you have 10 data points. If your robot drifts significantly you may have to
start over, adjusting the torso to a different starting angle in order to get enough cycles before it hits its
limit. If 6 seconds is not right for your robot, you may increase or decrease the pause time according to
Figure 2 Measuring the distances between dots for data collection.
Try to improve the accuracy by adjusting the time intervals: Repeat the process of making an initial dot
on the paper. Next change the return pause time intervals so that the marker returns to its starting
point. Keep the outbound time the same 6 seconds, but change the return time either longer or shorter
depending on the direction it needs to be adjusted. Remember that the pause command in Matlab can
be any decimal number, and does not have to be and integer. This will be an iterative “guess and check”
process to get the time adjusted so that the marker returns to its starting point. Record your outbound
time (6 seconds) and whatever your inbound time is. Repeat the data collection process to get at least
10 data points.
Record your data in a table such as the one below making it as long as necessary to collect your data.
Note that 0.0 is not valid. If the dots appear to be on top of one another, then you need a measurement
instrument with higher resolution.
Table 1 Data collection Project 1
Time outbound (sec)
Time inbound (sec)
Process Capability Analysis: Manufacturers often use statistical analysis to prove that the parts that
they make are within tolerances, and use process capability to determine the tolerance that a process
can hold. In statistical analysis the Standard Deviation is a measure of the scatter of a given set of data.
The higher the Standard Deviation (σ) the wider the scatter. In normally distributed data, 6 x Standard
Deviation (6σ) will encompass all but 0.0026 % of all data. Process Capability (Cp) is a ratio of the
tolerance range to 6σ.
A Cp of 1.66 allows a defect rate of only 1 part per million, and is the generally the accepted minimum
value for what is known in manufacturing as a “Capable Process.” A Cp<=1.33 yields a defect rate of 63
parts per million and is not acceptable. 1.33 < Cp < 1.66 is only marginally acceptable, and requires
corrective action to improve the capability.
For the data that you collect, write a Matlab program in a script file that will determine the Average,
Median, Maximum, Minimum, Standard Deviation, and tolerance range that you could reasonably
maintain. In order to compute the tolerance range, assume that Cp<1.66 is unacceptable, and solve the
Cp equation for the tolerance range.
𝑀𝑎𝑥𝑖𝑚𝑢𝑚 𝑇𝑜𝑙𝑒𝑟𝑒𝑛𝑐𝑒 𝑅𝑎𝑛𝑔𝑒 = 6 ∗ 1.66 ∗ σ
The program should
Use the data that you recorded as vectors.
Determine the Maximum, Minimum, Mean, Median and Standard Deviation of the data.
Compute the tolerance range that the robot would be capable of achieving using equation 2.
Note the time intervals for each
Generate a Matlab table like the one below using fprintf to display the results.
Create a fully labeled plot showing BOTH sets of data in ONE figure.
Suppress all output to the command window except the requested output
The table generated in Matlab should look something like this:
Time out (s)
Time in (s)
Maximum (in) |
Minimum (in) |
Std Dev (in)
Tol. Range (in) |
Deliverables for Part A:
Due 19 Sept along with your Progress Report. You must show me evidence of starting the project. How
to do that: Create a short video of your robot running three motors individually, being commanded by
Matlab. All three should run through different sets of Arduino pins (six pins in all), not one set of pins rewired to three motors one as a time. You will use both of the chips on your bread board; two sides on
one and one side of the other (at minimum). Upload the video to Google drive and share it with me
using the directions in the “Steps to Getting a Sharable Link on Google Drive” below. I will extend this
deadline only if you have tried but been unable to do so, and have come to me for help before the due
date. Asking for help for the first time the day it is due will result in no credit. If you are able to connect
the robot and video it, then you don’t have to bring it in.
a) MATLAB Code (Part B) (40%): Deadline:1 Oct 2019 11:59 pm individually submitted code that
performs required calculations. Name your file, your firstname_lastname.m. This portion of the project
must be done individually. The code must complete the
b) Technical Report (Part C) (35%): Deadline: 8 Oct 2019 11:59 pm (Team members will be announced
during class. One submission per group. Hardcopy in class and electronic copy uploaded to eCampus.
Note about Background: You will write a draft of the Background section to be turned in before the tech
report (note below). Your background section of the technical report must include background research
in areas process capability. One team member will write that portion The other two members may
choose another topic such as use of robots in industrial applications, future of use of robots in home
applications, Robots used in entertainment, machine learning, and other topics related to this project.
These are guidelines of topics, students are encouraged to expand upon this selection of topics. If you
are unsure if a topic is relevant, contact your instructor. The group should determine which topics will
be covered by which team member using the guidelines above. Each team member will select and write
about a different topic. Important: Students who have done no research have nothing to contribute to
their teams, so any student who does not turn in a Background section will be removed from their
groups and will not participate in the technical reporting portion of the project, and will receive 0 credit
for that portion. Team memberships may be changed if needed. Each section should be about a page of
double spaced text (12 pt font), with at least THREE referenced with proper in text citations.
Write a technical report that includes uses the IMRAD format taught in ENGR 101. You’ll find review
materials in ecampus. The Background section should include a description process capability, including
at least three references, not including this document. Use proper in-text citations (Name Page#) and in
the end notes in the References section using MLA format. The methodology section should include a
description of how the data was collected. The results section should include data from all team
members. Combine the data from all team members and describe the similarities and differences
between the various robots. Tables for all team members must be included. In your conclusions
comment on the potential use of capability studies at the OWI factory. Hand in one hard copy per group
and upload a soft copy to e-campus.
c) Poster Presentation (15%): Deadline: 8 Oct 2019 must be uploaded prior to the start of class
d) Peer Reviews (10%) Deadline: 9 Oct 2019 at 11:59 pm.
PROJECT MANAGEMENT DELIVERABLES
Gantt Chart, Intro and Background, and Team Charter are required components and will be included in
the assignment portion of the course grade. Due dates for these items will be set by your instructor:
A) Team Charter and Gantt Chart due 12 Sep 2019, 11:59 pm, Group assignment
B) Background section of tech report, 22 Sep 2019, 11:59 pm, Individual assignment. See above for
C) Interim progress report (executive summary) and updated Gantt Chart , and Part A of robot build.
Due 19 Sep 2019, 11:59 pm, Group assignment
Note: the tentative date for Exam 1 is 24 Sep 2019
STEPS TO GET SHARABLE LINK FOR GOOGLE DRIVE
1. Click the arrow next to the laster folder name, then click Share
2. Click “Get sharable link” in the upper right corner.
3. Select the drop down arrow, then click “More”
4. Select “On – Anyone with the link”, then click Save.
5. Finally, copy this link into the eCampus assignment submission box and submit!
Purchase answer to see full