Weekly Journal

Week 1: First week at the college was very exciting. Prof. Sklar and Parsons showed Carlos and me around the robotics lab where we will be working in. The lab has many different really cool robots like the Sony Aibo, Pioneer, Scribbler, Surveyor, Lego MindStorms, Roomba, and even a modified Segway. The lab is pretty cool and I can't wait to play around with all the robots. Prof. Sklar has given us the outline of what we want to achieve. We have a lot of work that needs to be done before we all head out to the RoboCup 2009 in Graz, Austria.

Week 2: For our research we are using Player/Stage which is a program that simulates robots in a bitmapped world. By using a server-client model it allows us to send a command with a controller and have the simulated robot run that controller. This is a great piece of software that allows us to really see how a robot will behave without having to risk any of the tangible (and expesive) robots. So far I managed to succesfully get it compiled and running on the linux machine in the lab after unsuccesfully trying it on my machine.

Week 3: Since this is the first time I am doing anything in robotics Prof. Sklar has let me use "The Robotics Primer" which is a great introductory book on the whole of robotics and robotics research told in an easily accessable manner. It's been a great companion on the train. I also read several papers that Prof. Sklar has given us and have been using and modifying the player/stage software to see what it does and how it does it.

Week 4: Stage is a simulated world where the simulated robots can interact with objects and the environment such as walls and borders. Right now Stage takes an image (.png, .jpeg, .gif) and converts it into a monochromatic bitmap. Using test images to figure out how Stage interprets the image. It can pick up colors like blue and green and converts them into an object but colors like red and yellow get converted into the background. It also scales images to fit into the world. The main goal is trying to get an image of a soccer field so the robots can move on the field but still detect the lines but not act like they were objects in the world. So far I have reached a road block on how it actually converts each image pixel by pixel.

Week 5: While my soccer field hopes are put on the back burner I started to investigate the issue of having more than one robot on the stage and how we can control them. Player is client-server protocol so an instance of player (terminal window) has to be set up for each robot. We hope to simplify this by being able to control multiple (select) robots with one instance of player. This seems straight forward enough, just have an array of robots and iterate through each of them when you want to send a command. This basic idea is proving to be very complicated and complex in practice. Right now I'm running a seperate local version of Player in order to safely modify the source code in order to create dynamic arrays of robots and proxies.

Week 6: Austria baby!!!
I traveled to Austria for the RoboCup 2009. RoboCup is the international Robotics competition where teams from all over the world come to put their robots up against other teams in various competitions like soccer, rescue, home, and simulations. There are many different categories but I volunteered in the RoboCup Junior Division Rescue as a judge for one of the courses during the event. Check out the RoboCup site for more info on the competition.
Check out these pictures of me at the RoboCup 2009.

Week 7-8: Bridges to Computing.
Upon arrival back to the States I was thrown into the Bridges to Computing workshop for high school students. This workshop lets students who are interested in computers but don't have the resources at their school to learn about it. The workshop runs for about 2 weeks, the first 3 days every student goes to a taster course for each of the 4 categories, GIS (Global Image Simulation??), Robotics, Graphics and Crypto. Then they choose which course they are most interested in to do during the afternoon. Everyone loves creating web pages so the morning session everyone gets to do web design, they are provided lunch and then they go off to their "picks".
For more info go to the Bridges website.
I was part of a group of 4 volunteers or "Ambassadors" (that just sounds cooler), with Carlos, Jamari, and Julian. We all helped out in the morning session with web design, fielding any questions and providing support and inspiration for their web sites. We all helped get lunch together and served the food and afterwards we each had to help out with one the picks. I had the opportunity to work with Prof. Parsons on the crypto course.
Getting to work on the cyrpto course was great because this is something that I have been interested in for a long time (it's actually the reason why I became a Computer Science major). Prof. Parsons is great, he knows the material so well and was able to present in a manner that was both fun and educational to the students. I had the opportunity to give a short talk about The Enigma crypto machine and it's importance. This didn't go as well as I had hoped (I don't like to speak in public) but it was great that Parsons gave me that shot. During the course the students worked on an online tutorial designed to take them through a step by step approach, with examples and excercises, to learning all about cryptography and cryptanalysis.
They also used a free software called CrypTool which lets them use virtually any encryption scheme they want to encrypt and decrypt a message and several tools for analysis and visualizations of certain cryptographic protocols. This is great tool for anyone doing any research in cryptography or just wants to learn by getting their hands dirty (there are also several presentations that teach you about cryptography in general).
They also had a chance to use a version of PGP (Pretty Good Privacy) called GPG (Gnu Privacy Guard) which allowed them to generate a public and private key and exchange messages using assymmetric key encryption. The Bridges Workshop was a great program and the students really seemed to be interested and engaged in the material.

Week 9: 2D to 3D SLAM task
Working on Simulatnious Localization and Mapping (SLAM) using only a camera. Searching through several papers has yielded some very promising results. Most papers deal with using either 2 cameras for a stereo vision or using a camera and a laser sensor to calculate distances. This technique would be useful but the infrared sensors on the surveyor bot output what looks like random values. I am talking to a professor who has worked with the IR sensors but he believes that they are a lost cause. < br / > A paper from Andrew Davidson entilted "SLAM using a single camera" looks to be my best hope for getting this off the ground. The paper does explain some very useful vector math to calculate distances from a set point and it seems that Mr. Davidson has created a program that can take an image and run calculations on it's dimensions. I will download this program and see how it'll work next week.

Week 10: Surveyor and SLAM
Last week I found some good papers on doing 2D to 3D SLAM and finally decided that MonoSLAM would be the best tool to use for this task. Before I can download and run the program I have to run the surveyor robot on my machine in order to be able to get the image from the camera and have the robot move around the field in the best way to survey the area.
The surveyor was having issues with the python script on the lab machine, but the java console version seems to be working, although there are some issues with the turning command that randomly cause the robot to turn more than intended. I have no idea what could be causing the robot to turn more than commanded but it seems to be somehthing in the way the surveyor handles commands at the wheels and I cannot fix that.
The surveyor does provide some decent images from it's onboard camera and I have tried to figure out a good interval in which to grab frames, the surveyor takes frames every second (on very low resolution) so I can take each frame and upload them onto a seperate file for analysis.
The MonoSLAM program is having issues compiling on the lab machine and I'm running out of time to get it to work. I have left detailed instructions on the lab machine about what I was able to change and what else needs to be done to get it working, hopefully someone will be better capable to finish the surveyor project. I do hope I get a chance to work on this project again because it was really interesting and I feel that it could really be something very cool once it's finished.