Face Recognition Model
Face Recognition Model
For this project, we created our own deep neural network that would be able to recognize & identify people's faces. To the left is my code for my deep neural network, along with its accuracy. Above is my presentation explaining specific functions within my code & my model's overall accuracy.
Skittles Sorter Project
2. 1ST SERVO
The circular piece sits on a servo, particularly a positional servo. This means that the servo is programmed to stop at specific positions/angles, but only between 0 & 180. We coded our servo to move to the first position, which is to catch the skittle from the funnel & a second position where there's another hole waiting for the skittle to drop to the slide. To the right is our line of code that controls this servo:
1.FUNNEL/GRABBER BREAKDOWN
The first step in our skittle sorter is to drop the skittles into the funnel. Under the funnel is the so-called "grabber". A circular piece with a smaller hole sitting on top of a rotating servo catches the skittle. A piece of cardboard is under the rotating circle so that the skittle doesn't fall through. Below is a photo of our onshape file we used to 3-D print:
These are the positions our servo stops at & how fast it spins to the next position.
3. RGB SENSOR
The RGB sensor is probably one of the most important parts of our skittle sorter, if not the most important. A light from the sensor is shone onto the skittle & it reads 3 values: Temperature, Lux, & RGB. To get our sensor to correctly sense each color we recorded these 3 values for each color & took the averages. We also used different values in our if statements in our code to determine each color. Our sensor sits at the bottom of tiny pieces of stacked cardboard from the ceiling of our skittle sorter so that it's close enough to the actual skittle for the reading. The sensor is positioned at the 2nd position of the 1st servo so that it identifies the color of the skittle before it falls through the hole to the slide. Below are all of our functions containing our "if statements" for each specific color...
Measures the blue & red of the purple skittle
Measures the blue & red of the orange skittle
Measures the green of the green skittle
Measures the red & blue of the red skittle
Measures the blue & the green of the yellow skittle
4. RAMP/SLIDE
This section of our skittle sorter definitely took the most time & work to perfect. The slide sits on another positional servo, so we obviously had to program the slide to stop at specific positions where each bin for each colored skittle would be, but the slide was ultimately dependent on the sensor. If the sensor misread the skittle, then the skittle may be sent to the wrong bin which isn't what we wanted. Once we got our sensor to consistently & reliably work, we programmed the specific position of the slide for each specific color. Lastly, we sped up the slide so that it took less time for the skittles to sort.
This piece was used to support the actual slide on top of the spinning servo.
5. BINS
The bins were the easiest part in this whole process. We decided to 3-D print our bins in a hexagonal shape. We kept them pretty short, but made their width wider so that it could actually catch & hold the skittles once they fall. To add a unique & more personal touch, we painted each bin the same color as the skittles assigned to it.
FINAL PRODUCT PHOTOS
Reflection
This project definitely had a lot of trial & error which was very frustrating & sometimes even discouraging which I think it something I had to work through for this specific project. I think this was our most independent project in Engineering so far, so I think I really grew & pushed myself during the process. One challenge my partner & I had to overcome was changing out our servos. We originally used continuous rotation servos which was very challenging because we couldn't figure out how to program them to stop at the positions we needed. Once we switched to an angle servo, our ride became way smoother & a load was taken off because we finally figured out why our other servo wasn't working & now could code it to stop at specific positions. In general, I'm very proud of our project overall. I think I'm most proud of our accuracy & speed of our skittle sorter because it was definitely hard to perfect.
Rolling Lantern Bot Project
Throughout this process, I've been documenting the steps & challenges I've met with my robot. Starting all the way from my very first code & prototype, all the way to my final product are descriptions of what I worked on each day. Below is the link to my Engineering Notebook with my documentation...
Onshape
What is onshape?
Onshape is an online CAD platform. CAD stands for computer-aided design. Onshape can be used for many different purposes. For this project, we used Onshape to create digital parts that would later be laser cut or 3d-printed for our final designs. All of the sides for our final robot needed to be digitally fabricated, so Onshape was a very important app during this process.
Throughout this project, I continuously used this tool. My wheels, body of my robot, windows, & windshield were all cut on the laser cutter.
This tool was also very helpful when constructing my robot. I 3-d printed both of my servo mounts & also my ball bearing coaster wheel
(3-d printer)
(3-d printer)
During this project, I've also been documenting my code. Below is the link to my Code Documentation...
def forward():
my_servo_left.angle = 180 #rotates servo horn at full speed CCW
my_servo_right.angle = 0 #rotates servo horn at full speed CW
makes my robot move forward
def backward():
my_servo_left.angle = 0 #rotates servo horn at full speed CW
my_servo_right.angle = 180 #rotates servo horn at full speed CCW
makes my robot move backward
def left():
my_servo_left.angle = 0
my_servo_right.angle = 0
makes robot move left
def right():
my_servo_left.angle = 180
my_servo_right.angle = 180
makes robot move right
def stop():
my_servo_left.angle =90
my_servo_right.angle =90
time.sleep(1)
makes robot stop
This video was taken during our class' robot race. In the video, you can see how my robot goes straight & turns, but also how the lights switch depending on the direction.
Functionality
Straight
For my final robot, I think the best quality was that it went perfectly straight. Towards the beginning of my project, I had a very hard time with my robot veering off towards one side or the other, but I believe two things fixed this problem. Creating my wheels to be more sturdy by turning one wheel into two wheels on top of each other helped my robot greatly, but going into my code to make my robot not move too fast or slow also helped. All in all, I feel that my robot moved very straight.
Turning
During this whole process, getting my robot to turn perfectly has been the hardest part. I think this was the category that I struggled with the most. One reason is that only my two back wheels are controlled by servos, while my two front wheels are stationary. Also, in my design, the back sat up higher than the front. This meant that I would still need to use my caster wheel, but unless my caster wheel was in an absolute, perfect position, my robot would still drag a little. I tried to stack my caster wheel with pieces of cardboard & then with pieces of acrylic, but it wasn't sturdy & caused my caster wheel to vibrate which caused more dragging. To fix this problem in the future, I think I would code two more servos & have all of my wheels fully function instead of having one set of wheels stationary.
Reflection
Compared to other projects in my other classes, this project was definitely the most time-consuming & strenuous. Many parts went into this project & as a whole, I had to pay close attention to details. Not only was there a physical part to this project, but it was heavily digital which was very hard for me at first. I had to become inclined with the online apps I'd use for my designs & also create code for my robot to function. Once I became more comfortable with the digital piece of this project, it began to move more smoothly. If I were to do this project again, I would change the wheels of my robot. Instead of two wheels being stationary, I would code two extra servos so that all of my wheels actually functioned. A skill that I took away from this project that I feel I could teach to someone else is the usage of Onshape. This is very surprising to me because I personally struggled with using Onshape, but over the course of this project I could feel myself becoming more comfortable. I still don't consider myself a professional, but I definitely feel that if someone was having a problem, I could help.