Wednesday, July 28, 2010

Day 17- Squee! Final Project- Complete!

Today was filled with epic success, as the gardening bot is complete and fully functional!

With the back of the bot (the watering part) completed and in place from yesterday, today we focused on the front of the bot (the sensor part) and the programming details. Initially, we attempted to construct a form of "drill" to poke a hole in tightly-packed soil, so not to break the sensor as it entered the soil and read the moisture values. However, this design, reworked multiple times, proved itself to be wholly impractical and difficult to construct. In the end we decided to veto the drill and simply use the bot only in soft soil. For the mechanics of the sensor itself, we connected it to a servo that rotated about 20 degrees, lowering the sensor into the soil accordingly.

A few screws, bolts, and wires later, the mechanics were complete! On to the program. Here is a picture of the block diagram for our program, as well as a basic explanation of how it works:

(Note: the program to lower the sensor into soil isn't included in this picture, but it's just to the left of the while-loop)

Once the servo has lowered the sensor, it constantly reads values of moisture content based on the material it's touching (air, soil, water, etc.). To give some context, the sensor registers air at about -12, moist soil at about 12, and the skin on a human hand at about 36. Within the program, if it's true that the moisture content reads below 5, the front servo will rotate back from 20 degrees to 0 degrees, returning the sensor to its initial position. The back servo will rotate from 14 degrees to 0 degrees, lifting the cover on the hole in the water bin, releasing water into the soil. If it's false that the moisture content reads below 5, the front servo will still rotate back from 20 degrees to 0 degrees, returning the sensor to its initial position. The back servo, however, will either move to 14 degrees or stay at 14 degrees, acting as a cap on the hole and preventing water from being released from the bin.

Here are some videos of our bot in action! The first video is using real moist soil but leaving the back bin empty. The second video is using our hands to provide the moisture for the sensor, but having the plastic bin filled with water to test the effectiveness of the cap.

With such a large task undertaken, (well, for someone who has never worked with robotics before embarking on this internship) I compare the completion of this bot to the pride of a new parent. XD Our robot deserves a big hug for working so well~ ^_^

Tuesday, July 27, 2010

Day 16- On a personal note

I intend to use today's blog post for a more personal purpose, but I'll briefly summarize today's bot progress. With the mechanics from yesterday in place, today I set out to program the servo controlling the mechanism. It was a relatively simple program, but after hooking up the battery, controller, and NXT, the servo wasn't budging! I struggled with rewiring for a while, until Mike came over and offered the friendly suggestion of flipping the servo wire in the controller so that the colors yellow, green, and black lined up with "YGB", rather than the other way around...well, we all make little mistakes like that. Now the servo is fully functional. Here's a small video of it in action! (Note: because the program hasn't yet been completed or connected to the Vernier sensor, I have to manually put in values, leading to the long pause in the middle of the video)

I came to this internship trapped at a fork in the road. Amidst the whirlwind of college touring, selecting, and preparations, I realized that I had fallen in love with two schools, and each led down a different path of the fork. There was Connecticut College, where I could pursue Environmental Studies, and Tufts, where I could pursue Environmental Engineering. Although both incorporated my passion for the environment, the two directions were vastly different!

Knowing that I couldn't walk down two paths simultaneously, nor attend two undergraduate colleges, I had high hopes that this internship would help me determine which path to choose. And I believe now that it most certainly has.

My mother recently shared with me that both of my grandfathers had dreamed of becoming engineers, but neither had ever gotten the chance. Some of their engineering blood must have been passed down to me, because I too love the innovation, the mathematics, the process, the problem solving, the everything! I find myself constantly at work on my projects as the hours slip by, and enjoying every minute of it.

I'm a little susprised myself, as I was initially skeptical about the idea of engineering. I've previously considered myself partially anti-technology, due to my affinity for the "old world" of little farming villages and candle lighting. This internship has opened my eyes to the positive possibilities of technology; how it can be the source of innovation to truly revolutionize the world for the better.

I'm infinitely grateful for this internship, and the understanding it bestowed up me. Although I don't intend to specifically pursue robotics, the opportunity to experience engineering in this setting allowed me to understand the environment, and to see if it was (to use a common college-touring phrase) "the right fit" for me. After my time in the CEEO center, I feel I truly understand what I want to do, and where I want to be. So then, down the path I go, merrily singing along the way~

Monday, July 26, 2010

Day 15- Drip, drip, drop?

Continuation of the gardening bot (see Day 14)! My big task for today was to make/tweak a stopper for the hole in the bottom of the plastic bin. Yesterday, Naveed had suggested I put a suction cup on the bottom of the metal pipe, in order to vacuum seal out all the water.

This ended up being a brilliant suggestion, and the key to solving the leakage dilemma. However, there was one issue with the method. The hole that the suction cup covered acted as an air vent, and thus prevented the suction cup from creating a vacuum seal. With the metal pipe at an angle to the bin, and no vaccum seal to fill the space, water still continued to drip!

Thus, the next step was to create an all-new and improved stand for the servo controller and metal pipe, enabling it to rest at a 90-degree angle to the bin. With this in place, the suction cup acted as a "cap" rather than a "vaccum", and still prevented water from seeping out the hole.

I got so excited about the success of the mechanism that I took about a billion pictures, so I'll post them all here. XD (As you can see from the images, the bin is filled with about an inch of water, but none is dripping out the bottom.)

Friday, July 23, 2010

Day 14- Let's get gardening!

I'm back, and diving right into the final project. My partner and I are designing a robot that can measure the water levels in soil, and water the soil accordingly. It uses the new Vernier water level sensors.

The front of the robot has a mechanism that moves up and down to poke a 3 inch hole in the soil, and place the sensor in the hole to read the water values. Then, according to our program, if the water levels are below a certain value (yet to be determined), a servo controller will rotate a certain number of degrees (also yet to be determined) to raise a pipe. The pipe covers a hole in the bottom of a plastic bin filled with water; when the pipe is raised, the water pours in a small stream out the bottom of the bin.

Note: This description is the result of continuous trial and error, as our initial design used a water bottle and sliding plate to release the water. The bin, found conveniently in the storage closet (old junk can be so useful sometimes!), was more sturdy and could hold more water than the bottle.

We chose to divide up this ominous task into two parts:
1) The front of the bot that digs the hole and places the sensor.
2) The back of the bot that releases the water.

I chose to work out the watering mechanism, and began by rummaging in the storage closet to find a plastic bin (again, useful junk!). I then designed a platform to hold the bin in place, and, to my general excitement, it fit perfectly! It used four corner pieces attached to the flat base to form a "cradle" of sorts.

When constructing the original plate that was supposed to slide out from under the plastic bin, I realized that it wouldn't stay tightly enough to the bottom of the bin to hold the water in, and there was no Tetrix piece that would function as a movable cover. All the plat pieces had holes in them for attaching other pieces. The holes do serve a useful purpose, but in this case, they were a nuisance! Eventually, I concluded that I would need to cover the hole from the inside of the plastic bin, and the pipes seemed to be the best piece for this purpose. So, I built a stand for the Servo motor and connected it to a pipe so that the pipe was directly covering the hole in the plastic bin. By the end of the day, I was in the process of attaching the pipe to the Servo motor, so I have yet to test the effectiveness of this method.

It's good to be back~ ^_^

Monday, July 19, 2010

Friday, July 16, 2010

Day 9- Round and Round and Round~

Success! Today was a complete success; our group created a potentially completed project. ^_^

At the beginning of the day, we used the fishing wire to reattach the pendulum to our apparatus. At this point, we thought the project was finished, until we realized that we had created the reverse of the concept we were initially trying to represent! The Foucault pendulum shows how, while the pendulum swings in a consistent back-and-forth motion, the earth turns around it, creating the illusion that the pendulum is turning. As you can see in the picture below, the Tetrix mechanism we designed had the pendulum itself turn!

Turning back to the drawing board, we reconstructed our project completely. Andy took over the arch for the pendulum to hang from while I contructed a base to hold the motor in place. A few hours later, this was the abstract and crazy (but sturdy) base I created:

We then attached Andy's frame, which supported the central weight of the pendulum while rotating with the gear on top of the motor. Through trial and error, we learned that it was better to use the U-shaped metal pieces rather than the bars for the frame, and that the frame needed to be wide enough so that the pendulum didn't hit the sides while swinging. After connecting all the necessary electronics and wires (and using another metal piece to prevent them from getting caught in the motor) we tested out the program with the mechanics. The rotation speed was initially much too fast, but after turning the power down to 9 (the lowest it could be and still move), our project was completely successful! Here's both a picture and video of the finished project:

However, since we seem to have more time, there are always little improvements to be made~ perhaps on Monday we'll work out a way to slow down the motor even more!

Thursday, July 15, 2010

Day 8- As the Earth Spins

Today we had to use the Tetrix kit to demonstrate a scientific concept. After a great deal of brainstorming, we decided to create a Foucault pendulum, and use a rotating motor to show how the rotation of the earth causes the pendulum's path to change over time.

With this plan in mind, we began creating a base and arch to suspend the pendulum. With any project, each aspect was redesigned multiple times. The base went from triangular to square, and the width of the arch changed to accommodate the wide path of the pendulum.

For the pendulum itself, we used this weighted block hung on a length of sewing thread. We rapidly discovered that the thread wasn't durable enough to hold the weight for a significant amount of time, so we will be changing the thread to fishing wire tomorrow.

We used a simple program that told the motor to run at the lowest power possible (8). We're also attempting to use and program an encoder to slow down the motor, putting the angular speed at 24 seconds per rotation (representing the 24 hours per rotation of the earth). However, this is still a work in progress. By the end of the day, this was our completed project:

We tried to take a video of it in motion, but the sewing thread broke! So, it's clear that tomorrow we'll need to make some slight alterations to both the apparatus and program to successfully represent the Foucault pendulum.

Wednesday, July 14, 2010

Day 7- Missed

Today, I'm at home, feeling dizzy and hot. @_@ More on the internship tomorrow!

Tuesday, July 13, 2010

Day 6- Our Kryptonite

The main focus of was creating the one thing we've never been able to successfully construct: a line following robot. The horror! Both with the Mindstorms kit and the Tetrix kit, our bots have been able to vaguely move in the general direction of the line, but never along the line exactly, as other bots have been able to successfully accomplish.

Earlier this morning, we completed our battle bots with the Tetrix kit, and pitted them against each other in the square box, which ended in a three-way tie. Here are pictures of the bots and videos of the first two battles:

Battle 1:

Battle 2:

Afterwards, we moved on to adapting our bots to follow a line of black duct tape, as we had done with the Mindstorms kit on day 2. We attached a light sensor to the front of our bot, and opened our old line-following program that used proportional controls. However, while testing our bot, we ran into multiple problems, both with the program and the mechanics.

First, with the program. The equations of the proportional controls were rearranged such that equal power was being added and subtracted, and the constant was multiplying the entire equation rather than just the portion that created variation. We also changed the style of motor to match the Tetrix kit, and added a watchdog to ensure the program ran smoothly.

In terms of mechanics, we noticed that at very low power levels, our bot would still rush forward at top speeds. This was later accounted to us using direct drive between the motors and wheels, rather than using gears in between. At the end of the day, we were in the process of incorporating gears into our bot in order to slow it down significantly.

Although we haven't had much success in the past, we hope that the combination of altered program and mechanics will finally help our bot follow the line, and conquer our kryptonite!

Monday, July 12, 2010

Day 5- On to the metal

Today we opened up brand new kits of Tetrix, a metal-based robotics set that combines with the Mindstorms to build sturdier robots, designed for an older age range. As first time users of Tetrix, we were encouraged to provide feedback, and keep a record of our opinions as we experimented with the kit. Thus, this blog post will be reiterating the list I created, as well as providing elaboration on each point. I'll start with the things I liked about the set:

1. The metal is more durable and sturdy than the plastic Mindstorms pieces. During the construction process, various pieces are much less likely too fall off. One example I can remember is accidenally dropping a Mindstorms robot off a table. While the Mindstorm robot broke into multiple pieces, the Tetrix would remain solid and intact.

2. The style and durability makes the Tetrix kit more applicable in the real world/in real construction projects.

3. The instruction manual provided along with the kit was very helpful and necessary for first-timers. The step-by-step guide on how to build a basic square base and attach two motors for wheels became the basis of our first robot, and saved us a great deal of confusion and time.

4. The design of having various sizes of holes in a "flower" shaped pattern made finding a place to attach pieces very easy.

Now, on to the things I found frustrating about the Tetrix kits:

1. When we first opened the kit, there were massive amounts of random little pieces in plastic bags that seemed to be poorly labeled. Perhaps it's simply because I'm not a big texter, but I can't read "BRKT" as "Bracket".

2. While the kit provided a card with pictures of each type of piece, and a separate list with names of each piece, there was no list matching the picture to the name, or indicating the specific purpose of each type of piece, which would have been helpful in trying to build our bot.

3. Working with the screws and bolts and metal pieces becomes very time consuming, as things are difficult to attach and take apart. Seriously, the 4-piece square base took us over an hour to build. Granted, we built it incorrectly twice and had to re-do it, but nonetheless, each attachment of the Tetrix pieces takes a significant amount of time to complete.

4. Occasionally we would find discontinuity between the instruction booklet and the pieces in the kit, as certain wires were covered by plastic pieces in the kit but not represented as such in the book. Also, the kits labels "shafts" what the book labels "axels", which caused some confusion during piece-finding and building.

5. To quote myself directly from my original list "Ouch- fingers = so freakin' sore". This is likely an unalterable effect of working with the Tetrix kit, but sharp metal can really do some damage on your hands, especially after working so many little tiny screws and bolts!

By the end of the day, our Tetrix bot wasn't quite finished, so I'll post some pictures of our completed bot tomorrow.

Friday, July 9, 2010

Day 4- Battle of the Bots!

We kicked off the day with finishing and presenting each of our SAM animation videos. They were all different, and all interesting in their own way! (To see ours, check the day 3 post; to see the others, check the other group members' blogs)

After the presentations, we began our newest project: creating battle bots! Everyone got a little carried away with this, but it was loads of fun. Here are some pictures of everyone's bots:

(Rachel and My Randomness Bot)_____________(Naveed and Andy's Bull Bot)

(Edward and Branndon's Spatula Bot)

The basic concept behind our design was to push the other bots backwards with the two wheels, using the rubber of the wheel to provide friction. The claw-like attachments on the back were initially designed to be attached to the front, but were too unstable to be effective. At one point, we considering attempting to design a mechanism that would allow the claws to actually grab the other bots, but the idea never went past the drawing board. Although the image given doesn't show it, the back of the bot is stabilized by two smaller wheels connected by a solid block of various attached pieces. Figuring out where to connect each section of the block in order to provide maximum stability took a significant amount of time. However, we still had some time leftover near the end, and took the opportunity to make our robot look absolutely awesome! We added four Lego people in chairs (a ninja, a stuntman, a wizard, and a guy wearing a top hat), two flags, and two steering wheels, to add to the overall affect (and potentially intimidate the other bots ^_~). We also attached weighted Lego blocks to the side and back of the bot, making the bot heavier and harder to push out of the battle ring.

In terms of controlling the robots, we were initially planning to use a combination of the mail feature and bluetooth signals, however, this didn't work out the way we'd hoped. I'm unsure about the specific details regarding the problem, but in the end we resorted to keeping the bots attached to our laptops and using key commands.

After each bot had been built, we battled it out in a little square marked by black tape on the floor. The rules were relatively simple: The first bot out of the ring loses, whether they accidentally ran out of the ring or the other bot pushed them out. After some intense battling, our bot took a proud second place! Videos of the first two battles are below (Sorry, I laugh a lot ^_^;;):

Battle 1:

Battle 2:

Overall, it was a fantastic Friday. ^_^

Thursday, July 8, 2010

Day 3- Potpourri

Today included an incredible multitude of projects! Initially, we spent a short amount of time attempting to improve the light-sensing bot, however, this proved wholly unsuccessful. Neither rearranging the physical design or editing the speed on the program seemed to prevent the robot from crawling off the line. Soon, it was time to move on to the next subject. Well, if the overall purpose of this week is to understand the various programs, then this project certainly helped us reach that goal. While the bot itself went unfinished, my knowledge of LabView has improved. R.I.P (Rest In Pieces) dear little unfinished bot.

On a more cheerful note, the next project was creating a SAM animation that explained a certain concept in LabView. Choosing a random slip of paper, we were given the task of explaining "flags" through stop animation. Rather then explaining the contents of the final video in words, I'll post the video itself! (Sorry for the poor quality).

The activity following the SAM animation was experimenting with Lego Education kits, sets of Lego centered around collection solar and wind energy. Being interesting in Environmental Engineering, I was ecstatic! However, to my disappointment, the kits were BETA testers, and thus had quite a few frustrating bugs.

Upon first recieving the kit, the idea popped into my head to use the kits in answering a simple question about wind energy: does the number of blades affect the amount of energy obtained? I would like to say I discovered an answer to this question, but the time with the kits was almost entirely spent trying to get the apparatus to work properly. We were able to construct a working miniature windmill, and positioned it in front of a basic house fan. We hooked it up to the computer and used NXT 2.1 programmer to set up a graph measuring joules collected per second, for a duration of ten minutes. Turning the fan on high would cause the windmill to turn, and theoretically generate energy. However, while the monitors registered the watts being gathered at any given moment by the windmill, the collected joules failed to be represented.

We attempted to remedy this issue by doing various things such as repositioning the fan, changing the situtation of the blades on the windmill, and replacing some of the electronics with those from a new Lego Education kit. Nothing changed! Finally, we replaced our windmill with one made by another group, and this appeared to solve the issue. As the windmill turned, joules appeared on the screen. However, the minute we turned off the fan and the windmill stopped turning, the joules vanished! The screen read 0J, randomly erasing records of the joules the windmill had collected. Buggy! The strangest part of it all was that we couldn't make heads or tails of what was causing the issue in the first place, or the source of the problem. Nonetheless, we made a lovely model of a windmill.

I'd like to work with the Lego Education kits in the future, to see if other (more successful) energy effieciency experiements are possible.

Wednesday, July 7, 2010

Day 2- Where's the line?

Today we continued working on our second project, the bots that use a light sensor to direct their movements, having light values indicate a certain movement. Last night, I was pondering the issue of how to have the bot relocate the line after getting sent off course, and thought I had come up with a viable solution. So, the first thing we tested this morning was programming the bot to, once it saw values that indicated it was off the line, turn right for a set amount of time (about 2 seconds), then turn left for the same amount of time. This, however, was not as successful as I had envisioned. Well, it's all about trial and error!

So, many alterations to the program later, we had designed a complicated mechanism where the bot, after getting off the black tape, would turn right for 3 seconds, then move backwards using the back wheels while turning left for 4 seconds, in hopes that I would return to the line. We also faced yet another problem: the front wheels weren't turning enough, or quickly enough, to get back on the line! After testing out multiple wheel types and positions, our final bot looks something like this:

The robot's ability to follow the line was improving, however, some of the turns were too sharp and it would often be sent on a curve beyond the line, and then lose sight of the line completely. This had us stumped. Luckily, it was about then that Chris gave a brief seminar in which he gave us the following equations regarding the motor speed:


After returning to the bot, we essentially scrapped our original program, and used this method instead. While the back motor propelled the bot forward, the two front motors used varying speed in relativity to the light to turn the bot along the edge of the black tape. As you can see in the following video, this method worked very well!

There's still more tweaking to be done, which will be tomorrow morning's first task. ^_^

Tuesday, July 6, 2010

Day 1- Begin!

Today was the first day of the internship. When we first walked in, we were immediately shuffled to the back room to fill out a survey and begin our first project! I was excited to get right to work, but I'm sure another thought running through my mind was "Wait, who is everyone and what is going on here?" XD Nonetheless, a meeting later solved any anonymity and confusion.

So, let's summarize the first two projects! First, we were asked to design a robot that could move itself forward without using any wheels (as wheels, however, it seemed using them as claws/limbs was acceptable). This turned out pretty well for the first time using the software and products...I mean, nothing exploded! XD The race at the end didn't work out so well (none of the robots made it from the starting line to the finishing line) but today was all about experimenting!

The basic design of our robot was to create two mock-wheels by having two leg-like pieces move facing the same direction on opposite sides of a central rotator, like the blade of a fan. In addition, there were two front legs on a third motor that helped stabilize the robot. It sort of "hopped" and moved in a curve to the left, but was overall successful! Here is a picture and a video of the robot in action:

The second project, which will be continued tomorrow, is to create a robot (we can use wheels this time) that uses a light sensor to follow a curved line of black tape. However, we cannot use the "follow the line" feature (that would be too easy!). This is a work in progress, as there's been difficulties with determining the exact light levels of the black tape versus the white tile. Better luck tomorrow, I hope!