CMU Cam - CS 460 Senior Capstone
 

 


Home
Journal
Philosophy

Downloads
Web Client
Timeline
Resume


 

 

 

 



Old Journal Entries

04/19/2006 - Code to Come
As the project winds down I have been finishing program after program. By later this evening I hope to have several programs available for download. This will include the SDK code, Follow Me code, Stamp code, and other programs I have completed thus far.

04/12/2006 - Follow Me Video
Work has been progressing on the follow me program. A video of the robot spinning in 360's is available here. Towards the end it starts to run over its own cables but it shows what the robot will be possible to do. video is here.

04/06/2006 - More Updates
I finsihed up the binary streaming in the follow me program and in the advanced joystick program which you can find here, pics of what the binary data looks like here.. There is also a video of the program running showing you how fast the data can be dumped over the serial port, which is here. I know there is some big black text, but I could only find evaluation software to record the screen. Also the program runs faster then what is being displayed as I turned teh frame rate down significantly to compress the video for the website.

Yet another update has been done on the robot to upgrade its speed and ease of use. While I haven't figured out a way to scientifically test the speed difference it is great enough that a human, me, can recognize a serious increase in response from the robot. I hope to get a video of it up some time this weekend.

04/02/2006 - Whole bunch of updates
Finally I do some testing of the DLL to see if it was indeed slower then going straight to the ComPort as it was suggested it might be. I wrote a scratch program (available here) that dumps a frame either by going through the DLL or by going straight through to the ComPort. The results indicate that the DLL is actually faster in every test then going through the ComPort directly in VB. While the test indicates that the DLL barely beat the DLL, the test did not take into accout that when the DumpFrame function is called in the dll it still had to send the command to the dll and then wait for the ComEvent. I couldnt test just the dump since I did not want to track time in the DLL itself. Knowing this the DLL becomes even faster then the straight through approach. I tried two different tests one with compiled and one with uncompiled source code. In both cases the DLL outperformed the straight through approach in VB.

I have also been working on the documentation and have released an updated version of the document here. I also produced a video showing the CMUCam tracking an object by controling a servo, which is available here. Within the next couple of days I hope to have video of the CMUCam tracking an object by controling the 4W4T robot. To make this application even easier I have started re-writting the way the PC talks with teh stamp board. I have implemented hardcoded functions for the various directions and commands the 4W4T robot will have to accomplish. Right now I am finishing the work on the protocal for more precise control of the servos through a PC. The over all goal is of course to minimize the amout of transfers between robot and PC, which before was causing significant lag issues.

The first piece of news is that I had a meeting with Dr. pankratz & Prof. Blahnik. We discussed a number of ways to try and dump images faster. I eventually contacted SeatleRobotics to see if any were possible and found out that none would be possible on the CMUCam. However, on a bright side I did discover a way to dump the image of what object is being tracked which comes in binary (8 pixesl = 1 byte). This should update fairly fast and may actually allow for streaming.

03/26/2006 - More SDK Documentation and Follow Me Code
I expanded upon the documentation to the SDK with more sample code and information users will need to work in the envoiroment. I also started modifing the Follow Me code I had written 3 weeks ago. Initial tests (without the robot attached) proved very promising. I also managed to fix the lag issue I was having with the robot. I found the severe bottleneck was actually in the VB code not the stamp code. I plan on testing the robot either today or tomorrow and hopefully will have some videos to post showing the results.

03/25/2006 - Follow Me
I played around with the follow me code today and improved it significantly from where it was at previously. The robot now responds much faster (tested with joystick not Follow Me). I also looked at some of the ranges of numbers I was using to determine to move or not and made those much more efficient as they were set to small, which was causing constant movement.

03/23/2006 - SDK Documentation
First version of the SDK documentation can be found here. (NOTE: It is not anywhere near complete, but provides lots of examples and information on the SDK)

03/23/2006 - SDK Almost Done & Code Examples Rolled out
The SDK is almost complete, the only thing left is the extensive testing that needs to be done to ensure that it works without crashing. To help with the testing I have been developing little programs that test and demonstrate how the sdk is used. Right now I have a test program in VB and C++ that puts on a light show using the LED tracking light. I also have a program in VB that dumps a frame and displays it using the dll. Finally there is a C++ program that has every function in the dll, which i use for testing. I will be posting pictures and source code soon.

03/20/2006 - SDK Updates
I have finished and refined many of the SDK functions with only 1 or 2 more to go. After that I'll spend a day cleaning up the functions and adding some extra comments for future developers. After that I will start the documentation process for the SDK which should also be finsied in a couple of days. After that I can start either the website or finish up the follow me program. Since I do not want to post unfinised code on the site I took a screenshot of the testing of packet reading using the DLL. It can be found here (once the code reaches a state that it is beyond alpha I will post it for donwload).

03/06/2006 - SDK News
I have written and tested 12 of the SDK functions. They all work as does the modified com code. The modified com code was adjusted so that the handle to the port does not have to be passed with every fuction call. This should allow for much more ease of use since the user wont have to remeber things like that. There is a screenshot of the header file here. Also in the header are some of the constants that are beign used to make things easier on the user

02/26/2006 - SDK Begins
I started work on the SDK portion of my project. I managed to get all of Karl's code transformed to the point were i need it. I also managed to write a coulpe of the CMUcam routines into the SDK (havent tested yet). Hopefully if everything goes well most of the features should go in with little hassle.

02/22/2006 - Progress
I met with Dr. Pankratz last Tuesday to update him with all the progress I had made to date. We then proceeded to discuss the remaining steps of the project. I was able to lay out my ideas on the web portion and get his insight on a solution.
This week I also took my first look at Karl's API from last year. It looks like I will be able to use it with only a few modifications. This should speed up the SDK development significantly.
Finally, I also met with Prof. Rohm on Tuesday. She gave me a good Java book which should help me in the development of my web solution.

02/15/2006 - New Projects Started
I was planning on starting the development of the web portion of my project, but that has to wait until I discuss the matter further with Dr. Pankratz. Prof. Rohm and myself came down to two possible ways to implement it and I am waiting for more input before I move forward. In the meantime I have started the CMUcam follow project. This project is to make the CMUcam and robot follow an object or person. The first build which was done tonight uses object area to determine if the CMUcam is to close or to far away, and adjusts the robot accordinly.
Also it can turn the robot (using all 4 wheels) either left or right either based on the servo position, or if the servo is disabled it uses the X coordinates to control left and right movements. I have yet to fully test it, as it is simply dumping out text right now, but it looks promising. Finally I posted some new pictures of the programs and frame dumps

02/13/2006 - All Kinds of Stuff
Today I finally got a serial cord and was able to test the CMUcam in parallel with the robot. Everything worked well and some simple tests on using both serial ports at the same time. Also I reworked some of the minor issues I was having and have released a new build of the joystick program (here).
Seeing how that portion of my project is mostly done I have begun development on the web application of the project. While it is not possibly to talk to the serial device on a remote computer I think I have come up with a solution that is easy to implement. Basically the VB program I have already written will server as the server and controller of the serial ports. This will allow for the ports to be locked down in the event of multiple connections (diagram coming soon).

02/10/2006 - Sit down with Pankratz and Blahnik
Today I demoed the program so far. Profs Pankratz and Blahnik got to see the how the CMUcam performs and discuss directions in which my project can go. I will also have a new build of the program up later tonight with a few changes to the COM.input loop as well as the final set of features that will be going into this project. After that work will begin on the SDK portion of the project.

02/09/2006 - Preparing to test Robot and CMUcam for first time
Tonight I finished up my first build of the joystick program. With some help from prof. Blahnik I was able to pound out the last of my buffering issues. Later tonight I hope to mount the CMUcam onto the robot and take her for a test drive before my presentation with Dr. Pankratz & Blahnik tomorrow morning. Program is available for download here (src included).

02/08/2006 - Final Touches on the Joystick Program Done
Tonight I implemented and tested object tracking with the CMUcam. It works fairly well if there is a bid enough distinction between object and background. I also implemented the servo to move the camera to follow an object which it does quite well. The only thing left to do with this program is to check if the raw transfer mode is any faster then the standard dump. Finally I have to paste in the code that controls the vehicle to so both can be done at once.

02/06/2006 - Finishing up the Joystick Program
As of right now almost all functionallity that the CMUcam is inside the joystick. All that remains is to add the color tracking, which will only take a couple of minutes. After that I will merge the joystick program that controls the robot with that of the CMUcam and see what happens. In other news I am still awaiting a reply from the company selling the bluetooth devices.

02/02/2006 - First Images from CMUcam
Today I managed to pull my first image of the CMUcam. I also posted some pics of what the images look like here. Work is also progressing on the VB interface for the CMUcam. Right now it is able to handle com traffic with relative ease,with the exception of some minor buffer issues, and can send and decode most of the basic commands the CMUcam is capable of using.

02/01/2006 - Resume and Philosophy Statement

Updated the site with my resume (downloadable PDF) and philosophy statement

02/01/2006 - Proof of Concept
Today I learned that the CMUcam is limited in its ability. The component of my project that requires the use of streaming to the web and to the client program will not be possible. Each frame takes 8-10 seconds just to dump to the PC through a serial port. This means that is simply not possible to stream. However other commands will work fine as the robot can internally process 17fps.

Some suggestions to replace the lost vision our to mount a Logitech camera on the robot for the sole purpose of streaming vision. Anther option is to place a logitech cam within the vicinity of the robot which would allow the user to watch the movement of the robot from a bird's eye view. However, for now I am just going to continue working with making the other parts of the CMUcam and program work as continuing discussion on the Streaming part with the other CS profs.

01/29/2006 - Website up & Robot Code
Website was created with several of the pages being added. Prof. Blahnik ordered the CMU cam so that should be in some time next week so I can start to figure it out. In the meantime I have been refining the joystick code of the 4W4T robot. To see all the material I started with click here.

01/28/2006 - Attack Startegy
After looking at my initial project description I determed the best way to solve my problem is to start little and work my way up. Alont the way I will be making several smaller programs that do a number of different things. After I finally get a good handle on how the CMU cam works I will start developing an SDK in C for it. Finally I will work on the web protion of my project. So I am dividing it into 3 parts.


- Little programs to show proof of concept and certain features, there will help me learn about the CMUcam and all its functions
- Development of and SDK in C and full documentation to support it, this will be based off my work with the smaller programs
- Finally develop a web solution to allow remote control of the camera