- 1/20/05
Over break and this week I started working on the Flash interface that the user will see when interacting with GuideBot. Also today, there was a problem with the Java-based code and we needed to rewrite the HTML loading it to point to the IP address of the robot's laptop.
- 1/27/05-1/31/05
Today we were able to get a map of the 3rd floor of Jobst from Mr. Mattus. I meausured and marked off way points on it.
- 2/3/05
I started working out a file format for the way points and began thinking about how we were going to incorporate the way point idea into code. Also, Mr. Mattus installed Flash and I was able to work on Flash code capable of communicating with the robot server over TCP/IP. This enables the user to send commands from the GUI to the robot.
- 2/7/05-2/8/05
I spent some time playing in Dreamweaver working on ideas for this site.
- 2/10/05
Today John and I spent a lot of time discussing how exactly way points are going to work. We decided to divide the hallways up into streets and lanes, allowing for easy indexing of way points. I also spent some more time perfecting the communication between the robot server and Flash by testing Flash code with a simple Java server. In addition, I spent time learning how to work with sound in Flash.
- 2/15/05-2/22/05
I researched various C implementations of XML parsers as Dr. Malinowski suggested we use XML for the way point file. However, it turned out that most of the implementations in C won't work under Windows without a lot of includes, and those that didn't require dozens of external libraries were to complicated to easily use. I decided to simply store the data in a comma delimited text file instead and worked on developing a function to read the appropriate values into memory in a manner that would allow other functions to access data based on the index of the way point. This took a few days, as I had to review structs and find a way to ignore comments.
- 2/25/05-3/1/05
We wanted to get the patrol program John had been working on functioning, but it turned out the robot's batteries were dead. We informed Dr. Malinowksi and Nick and he will look at replacing them if necessary. John and I took time today to outline some tasks we wish to complete including having the robot follow a patrol along a set of way points, patrol along the entire hallway, seek any way point from any other way point, and implement collision avoidance. We will tackle these goals in the following weeks. I also spent time changing the way point file reading code to read all of the way point file data into an array of structs accessed based on the index of each way point.
- 3/3/05
We spent a little time today working on our presentation for next Tuesday. In addition, I spent time trying to implement a non-blocking socket in the robot code so that it is not dependent on receiving data from a client. This way, it can constantly execute code and process requests from the client as they occur. However, this puts the burden of timing on the server and functions will need to be implemented in order to poll the sensors at the appropriate intervals. I did a little research into Windows timing functions to be able to do this. It turns out the best way to do it is using the multimedia libraries. In the coming days, I will begin writing code to allow for events to occur at regular intervals, and integrate that code into the main robot server program.
- 3/8/05
Today John and I prepared a PowerPoint presentation for our progress report. We presented it to Dr. Malinowski, Dr. Anakwa, and Dr. Schertz at 2:30. The PowerPoint presentation can be found on the menu to the left.
- 3/10/05
John and I spent some time getting this website together, making it more functional and cool-looking. We also tested some of John's code on the robot once our serial cable was returned. It had been missing in the morning as Nick had been fixing the sensors for us.
- 3/14/05
I came in over break to try and get some of the timer code I had researched working. I also spent time trying to get the Sleep function working. These tasks turned out to be fairly easy to code so I went ahead and implemented them in the robot server in conjunction with a non-blocking socket. Other than the occasional bad syntax error from the robot server, this worked really well. In the coming days, John and I will integrate the timer functions to be used for polling the sensors at regular intervals. Today I also gave Dr. Huggins the information he needed to order our touch screen.
- 3/15/05
Today John and I worked for a little while and made sure the new robot server code worked properly with the drift correction and way point detection. Unfortunately, the laptop battery died so we were unable to complete the testing. Instead we talked more about how the way point functions would be coded and spent some time adding all of the way points on the third floor to the way point file.
- 3/18/05
I spent some time working in implementing the timer functionality to the server code. I wrote a function that returns a 1 after a specified time interval has passed, and a 0 if not. This function would have to be called each pass through the main loop and would have to be called for each timing event, but can be used for any number of events. I also spent time working on the way point functions. Using the way point struct I created, I wrote functions to manipulate data from two way points and return the distance between two way points in the X and Y directions, as well as the absolute distance (pythagorean distance). I also wrote a function that determines whether two way points are in the same lane. These are simple, yet useful functions that John and I will use in the main program to determine where the robot should go.
- 3/22/05
Today John and I spent some time discussing the navigation algorithm and were able to optimize some of it to shrink the size of the way point file. We also decided to create a separate file for points at which the robot can cross the hallway at as waypoints aren't always the best places. We decided to hold off on implementing this however, until we are sure we can get the robot to guide along one lane without getting lost. I spent the rest of the day working on getting my C code and John's code compiling correctly. I also spent time working on a function to extract a way point index from a string sent by the Flash interface.
- 3/24/05
Today I implemented some of the revisions to the mapping file John and I talked about previously. I also worked on getting the Flash interface to properly send strings via an XMLSocket to the C-based robot server. This required looking at working examples of Flash servers/clients and winsock code. After a few hours of debugging though, I was able to get both the Flash interface and the C code to send and receive data over a TCP/IP connection using a non-blocking socket.
- 3/29/05
John and I decided today to combine both of our sets of code into one whole project. Until this point, we had both been testing features and code independently, but by now we feel we have enough working functions that we can create one unified project to be used as the server on the robot. AFter spending some time working out bugs related to including files, we were able to do this successfully.
- 4/5/05-4/7/05
We wrote the abstract for the student expo. today. We also worked on an outline for our presentation. John and I were also able to get all of our code interoperating correctly, so I added some more code so that the Flash is told when the robot has reached it's final destination. We also worked more on the Guide mode portion of the robot server.
- 4/12/05-4/14/05
During this week I did not spend much time working on my portion of the robot. Instead, John and I spent hours debugging the core C navigation code. We took the robot out into the hallway both on the second and third floors, testing the code and making sure the robot didn't get lost in between waypoints.
- 4/19/05
Today we worked on our second practice presentation and also spent more time debugging the navigation code while testing the robot.
- 4/26/05
In the past week we showed GuideBot off at the student expo. Today I spent time looking over the website and updating it.
- 4/28/05-5/13/05
John and I spent the week working on the final report for the project. We also presented our final presentation to the faculty. We would have also formally demonstrated GuideBot, but someone had unplugged the robot from the wall and thus when our demo time came, the batteries had died. We made final corrections to the website and also turned in our laboratory notebooks.