Wednesday, May 14, 2014

Final Project Overview

Goals and Vision:

Our initial goals as outlined in my Brainstorming, Research, Goals post initially aimed to fulfill a wide variety of goals.  However, after our first meeting with Professor Banzaert and as the project progressed, we had to narrow our approach and refine what we wanted to accomplish.  In the end, our core goals were to:

1. Teach users how to program through Picoblocks
2. Teach users about iteration and the "fail frequently to succeed sooner" process
3. Educate users about the Mars rovers and NASA's Rover program
4. Teach users about how the light sensor works

We envisioned that users would have an informal introduction to computer programming through the PicoBlocks software and commands that we would program for our users.  During the exhibition, the user would primarily interact with everything by programming the commands in to the robot and then testing it several times on the landscape.  We expected users to fail their first times through and iterate their code until they succeeded.  Our only worry for this goal was that it would make our exhibit time consuming.  However, we determined that this was an important goal since the majority of computer science is spent debugging and iterating the code.  Engineering, furthermore, also follows this process as we concretely learned as the project progressed and, we believe, is one of the fundamental ideas of Engineering.

Although there would be nothing in our PicoBlocks program about the Mars rover or NASA rover program, we wanted to design the robot to look like a rover, create a landscape that resembled the Mars terrain, and create a poster board filled with information on the Mars rovers.  Lastly, since many of our users would be unfamiliar with how light sensors worked, we would give them a short tutorial during the exhibition about how it worked and how to use it.  We envisioned that our users would program a statement instructing the robot to pick up a ball when it read a certain wavelength and carry it back.

In the end, the premise of our exhibit would be to get users to program the rover to travel over the terrain, travel over a hill, sense for a Mars rock, and pick up the rock.  This premise was modified over time throughout the project because of our experiences building and testing the rover.  Our original goals and how they changed are explained in the design section below.

Early brainstorming notes:
 Storyboard

 Initial goals for the exhibit

Early ideas for the exhibit

Design:

Overall, our four deliverables for our project were a rover, a Mars landscape, balls for the rover to pick up (Mars "rocks"), and a poster board with information about NASA's rovers.

Rover (Little Curiosity) and its claw:
When we began the project, we were certain that we were going to build a rover that mimicked the one that NASA had built.

(Taken from http://marsrover.nasa.gov/gallery/artwork/rover1browse.html)

Before we built anything, we quickly sketched out a general design for what our rover would include.  Unfortunately, I am not the best sketch artist so our paper designs were relatively simple:

First sketch

Included claw and camera on top

 Beginning to design the body frame

We brainstormed a few ideas on how we would fulfill the sensing requirement.  At first we considered using motion sensors to allow the rover navigate through a course.  However, it was too similar to another group project's idea and would have required an extensive landscape that we were unwilling to create.  Another idea was to use the line sensor method.  This would have created an unrealistic representation of how the Mars rover worked since there are no lines for the rover to follow.  Thus, we decided that we wanted the rover to identify a Mars rock through the light sensor and pick it up.

As outlined in my Works like model post, we first began by recreating the Sciborg robot that we used in an earlier project for this course to create a body that we could then iterate later.  In line with NASA's rover, we added another pair of wheels to the front of the rover to allow it to navigate up and down hills better.  Notable features with this rover was that it was powered from the back wheels and was iterated soon after it was built because of problems that occurred while the rover was being tested.  The overall design then used less pieces overall which decreased the weight of the entire vehicle.

Initial design Rover stuck

Initial design Rover


Sciborg that we based the Rover off of


We also created the claw at this point.  Since we could only use one motor due to limitations on the RSD cricket, we made the bottom jaw move and attached a short piece that would push the top jaw upward if it was driving up a hill.  There were several problems that we later realized with this design, but it accomplished  its initial goal of opening and closing.

Rover after iteration that incorporates the claw

 Protruding piece that pushes the upper jaw up

Another iteration later, the vehicle had larger wheels because it was having difficulty climbing the hill and the bottom would get stuck on the incline.  I also doubled the wheels on each axle because they were splaying outward due to the weight of the vehicle and the impact it encountered while driving on the terrain.  This iteration also yielded more changes to the body that allowed it to function with less pieces and bounce less.  Although this design was better, we had difficulty placing the claw on the front which meant we had to iterate the rover again (see the Works like model post for more details about why the claw had to be moved) and remove the front wheels to make the rover a 4-wheeled vehicle.  The main reason was that adding the claw on top of the front two wheels would make the vehicle unnecessarily long and cumbersome.  Hence, it would make more sense to remove the front wheels since they would only be used for the hill, a small part in comparison to the larger goals.

We also iterated the claw.  To maximize the efficiency of the claw, we decided to make both jaws move instead of just the top or bottom one.  We thought that this would make picking up the objects better since it would be able to scoop the object into the bottom half.  The resulting design served as our base design for the majority of our project since it was able to pick up objects successfully.  We designed simple delrin rectangles to serve as the main components of the claw and glued them onto the kinect pieces.  To create an angle that would aid the claw's ability to collect objects, we piano wired a small section on each jaw.




Here you can see the piano wired portion of the claw



If the claw were in the front, the vehicle would be too long and there wouldn't be enough power in the back to drive it successfully

Although we were initially concerned that the rover wouldn't be able to drive up and down hills without the front wheels, it surprisingly worked for the most part when we tested it with the wooden ramp. However, it would need more iterations to consistently drive up the hill without hitching.  At this point, we also discovered that depending on the angle of the gears, the claw had to open to 170-180 degrees in order to stay fully open or else it would close shut because of the weight of the claw and gravity.  This could be fixed by changing the code to make the claw open exactly to 170-180 degrees or changing the angles that the gears meshed.






We tested it on our Mars landscape and found that it had difficulty making it over the hill and was unable to do so without help.  We suspected that the problem was due to the fact that the rover wasn't running at full battery capacity but before we changed them, we discovered that the rover worked better if we ran it backward (ie the motorized wheels powered it from the front rather than the back).  We then iterated it to put the claw on the other side, changed the battery, and made it overall more efficient by lowering the front and using less pieces.  The result was that it was able to get over the majority of the hill but would fall on its face when it traveled downhill because of the weight of the claw combined with the motor weight on the front-half instead of the back-half.  This was easily fixed by placing two rods on either side of the claw to help the rover bounce back when it landed on its front.

We began testing the rover for how well it would identify the Mars rocks at this point.  Previously, we had tested if the rocks could be collected by the rover and now began testing the differences in wavelengths for the landscape and rocks.  Initially we attached the sensor above the claw so that it would no interfere with the upper jaw.  However, it was too high to read a significant difference between the Mars rocks and the landscape.  Thus, we lowered it and cut the delrin pieces of the upper jaw in half to accommodate it.  This required us to use an extensive amount of kinect pieces to attach it at this position which added further weight to the front.  When we tested this iteration with the hill on our Mars landscape, we found that it was unable to make it up for various reasons.  The vehicle was overall too heavy for the motor to power over the hill and at times the claw would impede the rover's ability to climb over the hill because it would hit the hill.

At this point, the rover could only make it over the hill if we raised the claw but it wouldn't be able to pick up any of the Mars rocks.  If we lowered the claw so that it could collect the rocks, it wouldn't be able to make it over the hill.  Thus, I iterated the claw a final time by removing the bottom jaw entirely.   This claw functioned by scooping the object into the rover's body and kept it there.  I made the final pieces out of foamcore because although there was no moving bottom jaw, the ball had to roll into the rover body which required a much more flexible material than delrin.  This final iteration used less pieces which alleviated the weight on the front of the rover, eliminating the need to add the two rods on either side to push the rover back if it fell on its face.  It also allowed the rover to collect the Mars rocks and successfully make it over the hill.


Rover design:
We also designed an outer shell to cover the RSD board on the rover and make the rover similar to the one NASA built.  At first, we constructed a box out of foamcore to test the dimensions and then lasercut it in delrin.  The box was very simple - it had some cutouts to all us to access the abc plugs, on and off switch, white button, and sensor inputs.  Eunice also designed a top piece that was similar to NASA's rover.  At first we tried to piano wire the four sides of the box together.  However, this grew to be an increasingly difficult task since the drill couldn't make it through all of the sides and we had some difficulty pianowiring the pieces together.  Hence, the majority of the sides were pianowired together but some sides were glued.




Without decorations

When we initially began brainstorming goals for the project, we wanted to include a video camera on top of the rover to mimic the one that was on NASA's model.  We planned on video conferencing the user while the rover traversed through the terrain and picked up the object as a method of adding a fun dimension to our exhibit.  Thus, we crafted the neck of the camera out of pvc pipe and made a case to hold Eunice's phone.  However, with the combined weight of the body shell, the rover was unable to make it over our hill without help and we were forced to drop this goal.

With decorations and the camera stand

Throughout the project, we noticed that weight appeared to be a main concern since the two motors could only move so much weight up the incline.  From a previous project earlier in the year, I also learned that having an overall lighter body would also allow the rover to travel faster with the same amount of power. Thus, one of my personal goals while working on this project was to continually make the overall vehicle lighter by finding new ways to use less pieces to accomplish the same goal.  This also helped our cause later when we needed to remove weight from the vehicle overall so the rover could make it up the hill.  It later became apparent that the rover could make it over the hill without the decorative shell which meant the shell had to be changed.
First iteration of the camera case


Second iteration which used less material overall but it was still too much weight in the end

We removed the front and back pieces of the box surrounding the RSD board as well as an unnecessary top layer since the decorative covering served the same purpose.  We also removed the camera case and replaced it with a decorative piece.  All together, this was enough for the rover to handle and served as our final design.


Mars landscape:
At the beginning, we envisioned an uneven terrain that would mimic the rocky terrain on Mars.  To make the landscape seem more realistic, we also wanted to include a hill and ditch for the rover to travel over.  However, we soon realized that including a ditch in an exhibit would require an extensive amount of material to keep the exhibit in one piece.  As the rover was built and iterated upon, we also realized that it would create a number of problems for our rover that we would be willing to address if we had more time on the project.  To deliver everything on time, we decided that it would be appropriate to remove this from our goals.


For our first iteration, we used the wire cutter to cut tiny Styrofoam rocks and glued them to large Styrofoam pieces to simulate the rocky terrain.  However, when we ran the rover across it, it was unable to make it over the majority of the landscape because it caught on the right angles of the rocks.  We then iterated the landscape to remove some of the rocks and make them smaller so the rover could make it over it.



The hill required two major iterations.  The first iteration consisted of several test drives with the rover and many cuts with the wire cutter to determine what the appropriate angle the hill had to be at.  We had to limit the angle of the slope because the rover could only use two motors and could provide a limited amount of power.  Unfortunately, this method did not work out well because the cuts became inconsistent and yielded different angles each time they were made.  On the second iteration, I cut a rectangular Styrofoam section in half to yield a roughly 45 degree angle and whittled down the angle from there.

Lastly, the landscape was spray painted brown to resemble the color of Mars' landscape and side boards were added to prevent the rover from falling off of it during the exhibition.



Mars "rocks":

We initially weren't too concerned about what type of material the Mars rocks had to be made out of but quickly realized that it impacted whether the claw was successful in fulfilling its goal or not.  We started by making balls out of white Styrofoam using the wire cutter and file to help make it rounder.  Using white for the ball color was deliberate because we needed a color that was significantly different from the Mars landscape.  We wanted to use a color that the light sensor could easily distinguish between which would yield less errors for the user when they programmed the rover.  These worked for the majority of the test runs.  However, because the ball was not completely spherical and had some flat edges, the claw would fail to pick up the object at times.  I next tried a paper ball but these also had flat edges that would catch on the edge of the delrin.



Finally, I tested some round plastic balls that were in the Engineering lab and found that they worked the best.  In order to get the same white color as the white Styrofoam balls, I covered the balls in white paper.


Poster board:

We researched some facts about NASA's Mars rover program and included it on a posterboard to educate our users about the rovers and past missions.


We also designed a small pamphlet explaining the user's mission and included information on the commands.  The goal of the pamphlet was to give users an explanation of how to use the commands and give them a short introduction into computer science.


Code:

Although we wanted to teach our users basic programming skills via the PicoBlocks software, it would have been too much to simply instruct them to make everything from scratch: instruct motor a, then instruct motor b, then have all the motors run at the same time, etc.  Our class learned these lessons over the course of a week or two and would have been an impossible goal for our users to accomplish in about 10 minutes.  Hence, we created a set of simple commands for our users to piece together.  These included forward, backward, turn right, turn left, open claw, close claw, and use sensor 1 (the light sensor) forever.  We later realized that the rover needed to move at a slower rate once it had cleared the hill so it could sense the Mars rocks.  Thus, we also programmed a second forward command that moved the rover at a slower rate.


Exhibition:

Running the exhibition was more stressful than I imagined particularly because our users kept failing to clear the hill or the rover wouldn't sense the Mars rocks.  However, once they figured out the correct code, the rover would successfully complete its mission and alleviate my fears that the rover didn't work.  We coached our users through writing out the initial code because it sometimes required some knowledge that we had gathered from using Picoblocks through our lab.  However, overall our exhibit was a success and every user was able to complete their mission successfully.

 Running the exhibit




Code that our users wrote and that worked

Reflection:
I was pleased with our final design since it had gone through so many different iterations.  The position of the motors changed completely from the first design and the body of the rover used as few pieces as possible.  The next step would be to make the claw better if it collected the objects in a more efficient fashion.  I would additionally try a completely different design with the body to see if I could use less pieces.  Since we were unable to incorporate the ditch into this project, I would also be interested in trying to design another rover to address that problem.  The result would probably be to add another set of wheels which would yield interesting iterations considering the new claw design.  Additionally, our rover was not very efficient at turning - it had a huge turning radius that would have spanned the entire width of the exhibit had users decided to use it.  I would have been interested in trying to change the design to allow the rover to turn in a smaller arc if I had more time.  Overall, I thought our rover performed at its best iteration.

I would be interested in testing additional Mars rocks as well.  The final ones we used for our project were slightly too large for the claw but performed well in the exhibit.  It would have been better to use a slightly smaller ball which we could have tried to find or buy if we had more time.

This entire project was very rewarding given the outcome and our exhibition.  Although iterating the rover was a sometimes frustrating and tiring process, I ultimately enjoyed everything that went into this final project.  Completing this final project has shown me what my true interests are in engineering and I hope to continue to pursue them in my further studies.

1 comment:

  1. I don't know if I've told you this already, but your guys' rover looked super cute! I like how realistic your rover and Mars surface looked; you guys probably spent a lot of time on that. Congrats on a very cool final project!

    ReplyDelete