CS460: Senior Capstone Experience in Computer Science By: Brandon Gigot Project Description: Definition and Requirements On week 1 I was given a Linksys-G Internet Home Monitoring Camera by Dr. Pankratz. The idea of the project was to use the Linksys camera to stream video from its built in camera server to any PC on the internet. The project also needed to integrate servos motors to control the camera itself! (Moving left, right, up, down) An application must be made to combine the two into one well-polished craft that would be able to view the video and control the motors. Project Description: Solutions(s) or: “Here is what I did.” First and foremost, I had to figure out how to get the camera working on the SNC network. Router firewall settings caused some initial concerns. I needed to find some decent servos and I found them in the form of Kevin Paprek’s Phidget servos which he used in his 2005 project. It had been awhile since their use, so I needed to find the proper libraries to install off the Phidget website to get them up and running. C# was the ideal choice for developing my application. Project Description: Solutions(s) or: “Here is what I did.” Naturally, I need to figure out how to mount my camera on the two servo motors. I also needed a firm base. The login for my application allows user to get the username and password off my capstone website. The next step depends on whether you’re using the host computer the servos USB is plugged into or a remote location. (You can log in pseudo remotely even on the host…both require the IP address of the host computer) Project Description: Solutions(s) or: “Here is what I did.” I learned how to program the Phidgets using example code off their website. Once I figured out a little bit of it I could expand on their primitive design and make my own. To remotely control a servo over the internet I used the Phidget WebService utility that comes with the installation of Phidget libraries. You can give your server a specific ID, Port, and Password. The video is displayed in a carefully crafted C# web browser control that uses Linksys’s own web tool which is unfortunately only used to its fullest potential in Internet Explorer. The Dynamic DNS website automatically updates the IP of the router in one permanent link that was used in conjunction with adopted Java and Html to stream the video. Project Description: Solutions(s) or: “Here is what I did.” My application allows users to: Enter degree coordinates for X and Y positions Center both servos Manually click directional arrows to move one degree at a time Mouse over the video image and click a key to move the servos to that relative position on the screen Change the auto-pan/auto-tilt speed View the current position while giving out of bounds messages View connection status View an included help tutorial Use the built in Linksys viewer to zoom in on the video, take pictures, and adjust the incoming volume. Project Description: Exceptions or: “Here is what I didn’t solve.” I found out there was no way to actually program the camera itself, so I couldn’t manually shut off the camera. Although I had the means to create a compass clock to move the cameras, the click screen idea eclipsed the functionality of that, and I never bothered using a joystick to simulate directions. The client server relations are all done by Phidget WebService and built in function calls from the Phidget libraries to remotely operate the servos. (Although threading and sockets are involved, Phidget made it easy for me not to get my hands too dirty.) Project Description: Methodology or: “These are the methods, techniques, designs, and experiments that I used.” A lot of trial and error testing was employed for programming the C# application. Various hiccups with the camera, WebService, or libraries alone would hang me up for extended periods of time. My methods, techniques, and designs are all quite simple to follow. Anyone really has the capacity to operate my finished product! Each addition to the application was done in various stages. Don’t work on a bunch of different features at once and keep a backup of the working product handy at all times. Demonstration Time! Time to: Install Phidget Libraries for C# (included WebService) Obtain Host IP Open Linksys video viewer in IE to install ActiveX plugin for my web browser control. Setup server on WebSerive Run! Learning and Developing Process: Strategies: My best learning techniques. Where and How? Playing around with the camera and the included features helped get an understanding….put IP into browser and adjust the features to my liking… For programming the Phidgets, most of the information came from their web examples and included manuals. The Linksys and Phidget forums offered incite when I got stumped. Dr. Pankratz offered suggestions along the way, and Dr. McVey was key in implements the click-screen feature. For minor C# related issues, Francis was in the lab to offer assistance. Professor Rohm helped with the networking on campus, and Ryan P. gave me a rundown on some networking terminology and suggested the use of Dynamic DNS. CS350: Event Programming paved the foundation for my C# knowledge. Knowledge: CS Concepts C# programming was the most important for creating my application. (Battleship and Yahtzee programs paved the way) Resourcefulness and flexibility allowed me to adapt various pieces that were already provided. Networking with the camera and Phidget WebService was very instrumental. Microsoft Publisher along with a little html knowledge helped in the creation of my website. Extensions: The senior who gets my project next could….! Mount my equipment on something movable… Perhaps a Roomba? Instead of using the web browser control, you could stream the video directly through the application manipulating bits for various purposes. Integrate motion and image detecting software to cause the servos to follow you around. Extend these to use for virtual classes at SNC… Advice: For next year…! Look into your requirements early and see what is and what isn’t possible. Some features will come easy and some won’t so it’s important to weigh the costs and benefits of what you implement. Don’t feel like you have to rush things and go crazy on your project, but set various goals for yourself so you don’t fall behind. Ask questions! Whether it’s to your professors, fellow students, or from an online community…don’t get hung-up and frustrate yourself. Have fun, be creative….! Special Thanks! Dr. Pankratz Dr. McVey Professor Blahnik Professor Rohm Kevin Papreck The people at Phidget My dad All my fellow CS majors! SNC Q & A: ??? How can I help you? Anything you’d like to know? Everything will be posted on my website by May 4… Feel free to contact me if you want to play with this!