The First Week (May 30, 2008 to June 6, 2008)
When I heard I was going to Knoxville for the summer, I was very excited. I heard from everyone that Knoxville and the surrounding area is beautiful, that I'd love it. They said, the people are great! There are mountains! The weather is perfect! So I knew that I'd love the place I was going to visit, but I knew very little of the University of Tennessee, my mentor, and my project before I got here. But boy was I excited. Robots!
I arrived Thursday night (after a 20+ hour drive from Galveston, Texas, accompanied by two friends) and stayed in a hostel, since my dorm room on campus was not ready. The next day, Friday, the official start day of my internship, I got settled into my dorm and headed over to Claxton Hall, where they keep the robots! I met with my mentor, Dr. Lynne Parker, and we met and discussed my project. I was a little nervous, My computer science background is light, only two semesters, so I wasn't sure she'd hired the right girl for a CS internship. It turns out I'm working on a computing and robotics education project, so the fact that I have only taken a small amount of C++ is to their advantage. I won't look over important introductory concepts and I'll know which order of concepts is most easily understood. For a broader description of the project click here and scroll down. I'm also lucky because the education project I'm working on is the same one we're trying to implement at my home school in the fall, which I will be helping out with as a student assistant.
After we discussed the project Dr. Parker showed my around the building, to the different labs, most of them very lonely on a Friday. I got to see the robots(!), and Dr. Parker introduced me to Richard Edwards, the grad student I'll be working with. He's writing the C++ interface for the little robots. Dr. Parker also introduced me to the low-cost educational Scribbler robots that I'll be working with this summer.
Some more paper work and that was pretty much it for my first day. That weekend I got settled into my dorm room (also a little lonely because my roommate/research partner hasn't moved in yet). On Saturday I went out the the Great Smokies National Park, my first time time walk around in the Smokies. I went with grad students in the computer science department here, some of which study under Dr. Parker. We enjoyed the cool air, some bar-b-q, and a babbling brook of fresh mountain run-off. Gorgeous.
The next few days of work involved me reading up on the current curriculum for the cs 102 intro class here at UT. I need to be very familiar with the concepts covered in the class, so that we make sure that we can incorporate them into the robot labs. I spoke with the professor who will be lecturing for the class, and we discussed her ideas about the curriculum. This was very helpful in pinning down some ambiguities in the project. About mid-week I got my very own Scribbler robot hooked up and named it Windy. My next task is to go through the existing Myro textbook with the Scribbler robot and become familiar with the computing with robots curriculum. So, my task for next week is to finish out the Myro exercises and start synthesizing the two curricula.
But I can't be playing with robots all the time (well, maybe), so I'm also trying to explore the city of Knoxville. From the campus, I'm able to walk to most of the attractions in the city, which is quite convenient. So, when I'm not cooking my meals in the evenings, I've found free swing and tango lessons to attend, free improv comedy shows (and practices), free live outdoor music in market square, and plenty of close, healthy places to grub. I think I'm going to like it here.
The Second Week (June 7, 2008 to June 13, 2008)
Sunday afternoon I helped one of the graduate students, Chris Reardon, with his experiments. He's testing a human-driven target locator and autonomous target locator robot team. The human driven robot is, of course, a blimp, which is nearly impossible to fly. I helped him with set up and "baby sat" the blimp as he performed a test run without the autonomous rover. The focus of the project is to have the two robots work together when they need to, then be able to search independently when it is more convenient. I helped with the set up of the experiment (placing green balloon targets and recreating the floor-plan of the laser map) on a couple evenings this week as well.
More Myro textbook exploration! I finished reading through the text book and outlining the chapters. The little scribbler robots are surprisingly versatile. I named mine Windy. Each of the Scribblers has two IR sensors in front for obstacle detection; two IR sensors on the underbelly for line following; and three light sensors. It also has various led warning lights. There is also a fluke upgrade module we're working with the plugs into a serial port on the machine. It houses the Bluetooth capabilities of the robot as well as three more IR sensors and a camera.
The idea of a cheap, powerful robot is very interesting to me (as it is to many other people in the world), so I'm enjoying playing around with the sensing capabilities. Python also captures my attention because it is so easy to follow--the reason they chose it for the Myro project to begin with. Another aspect of the curriculum I found stimulating was the section discussing behavior based programming. I haven't been exposed to that idea (directly), so I'm glad to have a new problem solving trick up my sleeve.
After all the playing I began to start piecing the two curricula together. I drew up some outlines and tried to get to the meat of each section. My partner comes in this Saturday, so I'll be catching her up on my research and we'll start creating the labs together.
Last night I went to see Citizen Cope play in Market square with a grad student that work in my lab. It was a lot of fun and there were a ton of people out. I'm really enjoying the weather here. Tonight I'm going dancing at the Museum of Art. Hokum's Heroes are playing and I've heard you can swing dance to them! I'm excited, and it's my lucky day! I was born on a friday the 13th.
The Third Week (June 14th, 2008 to June 21st 2008)
Saturday morning, after a full evening of good swing dancing, I went to an Appalachian music and arts festival at a state park nearby. It was a beautiful place with beautiful people and beautiful music. I splurged and bought four cds. After the festival I drove back to town and to the knoxville airport to pick up Allison from the airport. We moved in and went in to town for some good grub (market square was FULL OF DOGS, unexpectedly). Sunday We went dorm necessities shopping and I went to a free Argentine tango lesson, the last one, unfortunately.
Then I went to work. Allison and I still had paper work to sort out, and computer access issues. The lab uses Linux, I use windows, so I'm adjusting and trying to get a computer in the lab on which to run the Scribblers. Richard gave us a functional C++ Scribbler interface on Monday, so we started to go about the process of developing the labs and working them out. It's also our job to catch any bugs in his code, so we're working on that.
So far, we've tested two labs and brainstormed a few others. We don't yet have a C++ interface to access the sensor data on the robots, so we're only working on the first few labs using motor commands. Along with working through the labs, I've been testing the sensor capabilities of the scribbler robot, in Python. I've written a program that allows the robot to navigate using its infra red sensors on the dongle and the stall sensor on the motors. The program tells the robot to move forward unless it "sees" something in front of it, in which case it surveys its sides and turns in the direction of "least obstruction". Of course, there are small areas on the robot's sides that can run into objects that it cannot sense (low obstacle, far left and right obstacles), so there is the chance that it will bump into something and stall. If the robot stalls, it the backs up and turns left, then tries again. Some adjustments that need to be made involve the case in which the robot stalls while backing up. I need to find some way for the robot to sense when it is stalled because an obstacle is at its rear. Also, a lot of the testing of this algorithm has to do with the path you give it. Due to size constraints, the width of paths and distance between obstacles determines how effective the algorithm is. This may mean writing one algorithm for an "open room" and another for "tight spaces" where the robot has to be more sensitive.
This weekend I'm heading out to Michigan to take my twin to the Ann Adams Harp competition where she has made finals. She has a performance on Sunday to determine the winner of the nation-wide conference. I'm heading out this afternoon in the hopes that I'll get there before dark. I'm really excited to see her play again, it's been awhile. I'm also hoping that I'll be able to bring her to Knoxville after the performance and show her around a little, I'm really liking it here, and I think she will, too.
The Fourth Week (June 22 to June 29)
Well, my sister did not place at her competition, but she played very well and the road trip was a blast. I rode (drove some of the way) a total of 26 hours last weekend. It was ridiculous, but through very beautiful parts of the country, so it was enjoyable.
After my "vacation," I had to hop quickly back into work. I met with Dr. Parker and we talked about what all I've done so far. Allison and I have made good progress on three of the lab write ups, and are still just brainstorming the rest since we don't have access to the sensors yet. Well, we can access the sensors, but not in the way the students will in the fall, so we can not run the labs as they would. For now, we are brainstorming on possible labs.Richard has "translated" the camera functions, so we're next going to look at a lab which involves the camera. Maybe a spyBot?!
We meet with Dr. Parker and the two other professors who are working on the project and Richard next week. Then, we will discuss what we've donne and make sure we're in line with what they're expecting. I'm looking forward to this--it will give me more confidence in developing the rest of the labs if I know I'm on the right track.
When I met with Dr. Parker a couple of days ago we also discussed my second project, involving swarm intelligence. One of the first steps to creating a swarm is setting up the system over which the swarm communicates. Currently, the robot is connected via Bluetooth as a slave to my computer (the master). My first task on the swarm project is to explore the possibilities of bluetooth communication with the robot. I've read up on the technology, and any worries about signal interference are now clearly not a problem. It looks like we'll be able to have 7, maybe more, slave robots hooked up to one master computer. We will not, however, be able to link the slave robots with each other in this network.
Today I bound two robots via bluetooth to my computer (Oh! Also, Allison installed Linux on my personal laptop! Now I can run Richard's new API, and use C++ to program the robots! This is all very exciting, if you can't tell. Seriously.) Now we know that that can be done. I also wrote a program that had the two robots travel alongside each other simultaneously, which was neat. I don't believe this is possible to do with the python interface, unless you open two shells and just hit the commands at once.
That's about it for this week in the work area. I'm looking to have a pretty busy weekend: Live music dancing, farmer's market, cooking, birthday party, and a movie. And there is a chance that I will be able to see some Brazillian street dancing!
The Fifth Week (June 30th to July 4th)
This is halfway through my internship! It's weird to be in a place and know I'm going to leave so soon. It seems like I just got here, and I suppose I did.
I feel good about the progress I've made. We had a meeting today with everyone involved with the robot and C++ curriculum project. It went well because Allison and I got several of our questions answered and got some reassurance concerning the labs we've already written. We're on the right track! Wohoo! We also discussed a lot of issues that need to be addressed to have the lab section ready for next fall. As a team we have to solve problems that range from what to use to number the robots to how to decide which students will take the experimental lab section to how to grade the labs.
This week I've been working on the fourth and fifth labs for the students. Richard got the camera functions working at the beginning of the week, so the idea is to use the takePicture function in the Array labs because the function returns a one-dimensional array of intensity or RGB values. So, I've been writting a light following program for the robot. Essentially, the robot takes a picture, analyzes it, then travels in the direction of highest intensity. I've been working on that all week and I am still trying to add features that make the decision making of the program more robust.
The lab will span across two sessions because we plan to introduce more complex camera functions in the next section. Hopefully I'll be able to work in the streaming video capabilities Richard has just developed to make the light following program easier for the students to debug.
Also this week I sat in on a thesis defense. Chris, who I helped a little with his experiments, defended his thesis on Wednesday, and I also attended his practice on Monday. It was interesting to see both the process of perfecting his talk and the actual work he presented. His project concerned cooperative behavior between a manually driven blimp robot and an autonomous rover robot. Both robots were searching for and localizing targets, and Chris' reseach was aimed at discovering if cooperation between the two robots made localizing the targets "better" (easier, more accurate, faster, so forth). Something Chris mentioned in his talk about future work: automating the unweildy blimp. I found this very interesting to ponder, mostly because blimps are very cool (they float!) but unbelievably difficult to fly. It would be a complex problem to automate one.
I'm excited about the Fourth of July weekend because I'm going to visit my twin in the Blue Ridge Mountains. If all goes we'll we'll be campin' and dancin' and listenin' to music! I'm excited to meet her friends and see where she's staying again. I think we'll get to campfire and swim in a lake!
Also, a group of us from the robotics department are going to see WALL-E tonight. I haven't been to a movie theatre in several months, and I can't think of a more fitting film to see.
The Sixth Week (July 5th to July 11)
July 4th was an absolute blast! I got to see my twin and meet all of her friends and the visit exceeded my expectations. The mountains are so beautiful and the weather was great and all of her friends were kind and talented (it's a music camp and everyone there is fantastic!).
This week has been tough. My light following program is too touchy to apply to the labs yet. I'm very worried that we'll write all these labs, then the students won't be able to solve the problem accurately enough. With the light following, for example, right now the code causes the robot to be "easily distracted" by reflective objects. Also, the students might need a dark room to de-bug their code. Will they have access to a dark room? Or should we write a light seeking program that works in office lighting? These questions make it difficult to solve the problem.
I'm also having difficulty with the IR sensors on the Scribblers. The IR line following sensors on the bottom of the robot are difficult to interpret. The robot cannot "see" black tape on a white surface, but has no trouble with white tape on a dark surface. The dark surface, however, is the carpet of the lab, which has light flecks in it. This is not a good test field, but it may be the only resource the students have as well.
Basically, I'm frustrated because we're having to solve both a problem and an answer. We're thinking of the concepts the students need to learn, then we find the functions of the robot that use those concepts, develop a problem that uses those functions, then solve the problem. Of course, we also have to tailor the problem to the solution. If the robot can't follow a thin line, we have to make sure we have thick lines for the students to follow. If the robot can't follow a black line, we must have white lines in the lab, etc. There are a lot of variables that we're discovering along the way, and we're running out of time to solve them.
On the bright side, I do feel like I've made a lot of progress this week in understanding the robots' capabilities. As I said, a lot of writing the labs is iguring out what the robot can do, and I've done a lot of that this week. I've used the camera, the line following sensors, and I spent a lot of time working with with the movement functions at the beginning of the week. We've also discovered that the robots eat batteries, and their battery power greatly affects their performance.
Also on the bright side, I had dinner with Dr. Parker on Monday, and it was quite enjoyable. We went to a local Bar-B-Q place (Tennessee is known for it's Bar-B-Q). We talked about why came to academia, the advantages of different careers, what I'm studying and which paths I have the choice to follow. The experience was informative, inspiring, and enjoyable.
For dinner tonight Allison and I are treating some of the researchers and staff to Breakfast for Dinner. Alessanrdo, the researcher for Italy, has never had pancakes, so we're going to change that. I'm also excited about live blues music this evening at the museum of art. Last night, a group of friends and I had an improv workshop coached by Paul Simmons, a member of Knoxville's Einstein Simplified improv troupe. I was very pleased with it, had a lot of fun, and I think we're going to make it a weekly event. !
The Seventh Week (July 12th to July 20st)
So my computer screen finally DIED mid week last week. It's been threatening for a few months now, and it's finally completely kaput. So, I can only use my computer in the lab, where I have a sweet monitor/keyboard/mouse set-up. Because of the relatively low access I have to my computer, this week seven entry is a little tardy. I do apologize to those of you who may have noticed.
I can't believe I only have three weeks left! Luckily, the work is coming along. As of today, we have all of the solutions to the labs we've devised (all of the labs we'll need, potentially). This means that we need to complete the write-ups (which are over half finished), and proof read them, then double check to make sure we haven't missed any huge gaps in the curriculum.
This past week was also pretty tough. There were lots of ups and downs. Again, I was worried about the infraRed line sensors not being sensitive enough--how would we ever come up with a lab to replace them! Then I was worried that the light following program I wrote couldn't be robust enough for the students to be convinced that it worked. The I couldn't figure out how to organize the labs so that the students would actually get the concepts in lecture before lab.
But then! Oh, but then. You're going to love this. Then I realized that the line sensors were not the problem, and it wasn't even the quality of the line itself (as I worried the previous week)! It was the move() function. Somewhere along the way, the C++ version of the move function diverged from the python version! When I was certain the robot would turn right, it was actually going left! The nature of the code (very small movements very quickly) made this difficult to perceive. Sure enough, whenever the robot was reading values that said "go right! go right!" it would move left! You can imagine how relieved I relieved I was to discover the problem had nothing to do with the sensors or my code. Well, it had a little to do with my code. All right.
And after that, I moved to the light following program. Essentially, this program takes a picture, divides it into three panels, analyzes the panels, then tells the robot to go in the direction of the brightest panel. Straight forward enough, but the robot was still distracted by reflections and poor photography. Richard kept telling me to increase the size of the center panel, but I was skeptical. Could this simple change make that much of a difference? I was not convinced. But, finally, I heeded his advice. I'm convinced. My robot is so smart, now!
The last epiphany, you may wonder? How are we to organize the labs properly? How, if we have a lab with pointers and arrays, and they cover the two topics over two weeks, will we ever find a place to put this lab? Of the nine existing C++ labs from last semester, three of them were in fact two week labs! We'll just put our awkward multi-topic labs over two weeks! what a great plan!
We also met last week with the professors involved in the program. This was a very reassuring meeting--they told us what we'd done looked great and to keep it up. This kind of message is the most motivating. Especially when you're enjoying what you're doing.
Finally, everything is starting to piece together, and I guess it makes sense that the end of my internship is near. I can finally see that our project will be a complete piece before we leave. Yea!
My weekends this week (since it includes two ends) were also very good. Both included dancing at the Knoxville Museum of Art and baking. Last Weekend was Sweedish Summer Rye Bread, and this weekend was cookies, two varieties, made up, and sucessful. Last Thursday's improv workshop also went well--some new folks attended. Sunday night (last night), Allison and I had dinner at Alessandro's, where he prepared an Italian meal. Or, as he kept saying, as close as he could get with ingredients from America and his cooking skills. It was delicious, full of tomatoes, pasta, bread, and cheese--all my favorites.
The Eighth Week (July 21st to July 27th)
The write ups are finished and under professor and Richard review. So far, we've had a lot of positive feed back, which means that what we've done will be good for them going forward! Wahoo! It looks like the Panorama lab I developed will need to be changed to incorporate a more complex image stitching algorithm that Richard has developed. Also, We're going to add blob-following to the Light following lab. This should be a natural addition (crosses fingers) and won't take much fitting.
Now the slow process of wrap up begins. We're waiting for the revision comments to trickle in, and Allison and I are writing our technical papers. I've never written a technical paper before, and this project seems hardly suited for anything "technical." Since it's curriculum development, it's difficult to talk about in terms of procedure, results, materials and so forth. It's coming together, however, and writing it is helping me bring closure to this project (I don't need therapy, I swear, I'm just going to miss the robots...)
Our last big assignment is to brainstorm some ideas for the students' final obstacle course. That means I'll have to write a driver program and make sure all of the navigation functions we wrote play nice together. We've already come to one problem concerning the video stream and memory management, but Richard has taken care of it.
Next week we go to Oak Ridge National Laboratories with Dr. Parker for a tour. I'm looking forward to that. We're also going to have our final meeting with the CS 102 professors, to clarify all of the touch ups. Then I'm leaving! It's so weird!
This week Cristabel and the Jons are going to be playing in town, and I'm super excited to go dance to them.
If you're at all interested in robots, you need to check this out. It's MIT's Personal Robots Group's website. Way cool stuff.
The Ninth Week (July 28th to August 3rd)
Week Nine was all about writing the paper. We finalized a lot of the write ups, and sent them off again. Richard wrote a program to inteligently stich some robot pictures together to make a panorama, so I'm now going to write a lab write up for that and replace my clumsier panorama lab with it. I suspect this will take awhile.
For the Final Report, I've learned how to use LaTeX for formatting. This was interesting, and It's pretty cool that my paper looks like an actual report, not a simple MLA double spaced word document. I've sent it off to my mentor for her to look it over and give me some pointers, which means I'm on schedule with it.
The past few days have been a weird whirl-wind of worry and bliss. Sometimes I'll feel like I have tons of work to do and that there's no way I could get it done, then the next moment I'll feel like I'm home free and virtually finished with the project. Possibly it's how I've organized what I have left to do that's making me feel this way.
Wednesday's concert was as exciting as I expected it to be. The band was really awesome and A large group of dancers from the wednesday night class ended up going as well. Lots of fun was had by all. And, the pizza was good.
Thursday was the last improv workshop I had with the college-aged group here. The group is starting to shape up and mature as a team. It's a shame we're all going different directions now and can't continue to grow.
Friday I got my car aligned (preparations for leaving town), and began packing. Saturday I finally got to go to a lake. My friend Mike and I rented a tandem kayak and we paddled and swam around Concord Lake. It was peaceful and fun. It rained a little, thundered a couple times, then cleared up to sunny skies. I'm very glad I got to swim in a Tennessee lake before leaving. Saturday Night I saw my friend, Megan, perform a solo blues routine at a variety show in town. That was a very fun show, with bellydancing mostly, but other dances and musical acts. Another side of Knoxville I hadn't seen. Sunday I packed, went to Megan's house where she prepared a good fattening dish of pasta alfredo. Mmmm. Then I went home and made muffins and scones. I've got to get rid of my cooking supplies somehow.
All this sounds like a lot of fun, but this past week and next I'm going to have to work hard and play hard to get everything in. Such is life.
Next week is Our final meeting with the Robot Lab Development Group (a new title, for convenience here), and Xingyan, a PhD student here, is giving her dissertation talk. Dr. Parker is also taking us to ORNL on Tuesday. I'm excited. Very.
The Tenth Week (a partial week?) (August 4th-8th)
ORNL was awesome. Honestly, I didn't know muh about ORNL before I got there, so there was a lot to learn. We had tours for the high-speed computing facititly, the SensorNet program, the Robotics lab, and we checked out the Graphite Reactor. The Computing facitily was a surprise. I'm normally not really interested in really big or really fast things (I mean, they're interesting, but normally not any more impressive than kinda big or kinda fast things. I don't know, maybe I'm jaded), but the facility was still really cool. I haven't considered the computational sciences before, again, wasn't very well aquainted with the idea. The types of experiments and modeling they're doing there, however, were very interesting. Also, we got a tour of the floor where they keep the big computers. Very loud in there. Needless to say, after learning about the cool stuff they do there, I can get behind really big and fast computers.
The second part of the tour was an explanation about the SensorNet program. We learned about a new project, SensorPedia, which takes aspects of already existing public information sharing applications (wikipedia, squidoo, facebook, flicker, twitter, googlemaps...) and uses them to create a sensor data sharing interface. The description of the process the designers went through to get the idea for the project was very interesting. I've started thinking about intuitive interfaces, human-technology interaction, and the knowledge of the masses and how to access it. Deep philosophical things.
Visiting the robotics lab was the highlight of the trip for me. We met Lonnie Love there, who gave us a tour of the facilities. He showed us the strength amplifying robot they made for loading weapons of aircraft carriers. It turns out that at the same time I was working on the very beginnings of NASA's Chariot's crab drive wheel module in 2006*, the robotics lab at ORNL was developing a crab drive system for their strength enhancing vehicle. It was very cool to see the same idea manifested in two places. They're also working on hydraulically powered finger joints. Miniature hydraulics! That was also very neat to see in comparison to JSC's work (Robonaut's hands are cable-driven).
*A Side-note: As I was waiting for my baggage at the claim in the Honolulu airport from my flight from Houston, I ran into Rob Ambrose from Johnson Space Center! He's in charge of the robotics group working on Robonaut and other projects at JSC. He's in Hawaii to learn about rocks, which ones to pick up for testing and so forth. It was so unexpected, and a pleasant surprise!
Everyone giving a tour liked to tell us about the internship opportunities they offered. There are a lot, apparently. I certainly wouldn't mind working out there next summer...
The Graphite Reactor was...impressive? Funny? Weird? It was amazing to walk into the control room and see the desk and monitors and buttons, and not a single modern computer. The monitors were of the pen on moving paper variety. I guess it's the same idea you get when you think about how we sent people into space and all the way to the moon when we still recorded data on paper and tape. Here are these guys running a nuclear reactor, and the log book is hand written! Incredible.
So that was ORNL. Dr. Parker knew a lot about the place (she worked/works there, after all), and was able to answer most of our questions. She gave "insider information" on the buildings and development of the Lab, what they've done there, who's in charge, etc. It was good to spend all day with her, as well. She's a very knowledgable women, and easily approachable; not only did I learn loads, it was a very comfortable and fun day. I was exhausted, mind and body, when I got home.
Concerning the robots and the lab write-ups? It's all done. Richard has a couple of write-ups he'll have to finish (having to do with image stitching and blob-following) because he solved them; the image stitching one is pretty complex. I wrote the basics of those write-ups, so they would match the tone of the rest, but he'll have to go through and fill them out. Allison packaged all of the labs up nice and pretty for delivery, and on the last day we numbered and packed the robots in their lunch kits with Richard and Brian, one of the IT staff members. We got a good assembly line going and the thing was done in no time. Also, RIchard brought us donuts in the morning, because Allison and I had been craving them, but couldn't bring ourselves to buy any. All in all, the last day was a good one.