Home
Programming
Chemistry
Physics/Electronics
Images
Go back
Rover Programming
There have been two major versions for my rover. Things started out with me playing around with parallel port IO. So, I made a locally controlled robot. It used the arrow keys listening on a window to move around.
Next, I saw this DirectX chat application and decided that it would be interesting to try to integrate my application into it. So, I hacked up the code and made a text based protocol to transfer the data across the network. It was slow due to the parsing. So, when you pressed a key, it would send a text message across the network. One nice feature was the ability to play sounds on the rover. Starting with this, and all future releases, they have used Microsoft's netmeeting to transmit audio and video feeds from my microphone and web camera. The laptop is a 500MHz model I bought for $20 and the webcam was got at a garage sale for $3 if I recall. It uses a wireless card from Linksys to transmit to my Linksys access point.
Now, things are much different. Once I used Winsock to redesign things, things got much better. It now uses a true multithreaded client/server architecture. The rover is the server, clients attach as terminals to it to control it. It still used the same text scheme. However, soon after, I added a header to the data, which allowed me to send binary commands. Now, I could quickly execute the commands and they where sent without delay. Currently, I have it at version 2.2 on the version tab.
I have several software/network improvements I hope to make. For a start, the wireless card broke from heavy use(I used it for a lot of things), so I need to get a new one. However, I'm probably not since I'd rather do something else. I now have a pair of Linksys WRT54G/S access points. They have 9dbi antennas. I can configure one to connect to the other and boost the signal strength to 254mW. This is far beyond the FCC regulation of 100mA, so I'm not sure I'll do it. Default was 38mW. Combined, this should make a high speed(54Mbps) link to exchange video and other data over long distances. I could probably even mount a second camera. If I start working out some camera AI code, I would try to either cluster the robot with my servers or perhaps mount my planned dual processor server on it(using an inverter from the main car battery).
I also hope to feed data to external components beside the motors. I would like to run a serial line to a microcontroller. This would control some servos, pneumatics, and some other fun stuff. However, I would need to write out a serial routine for my microcontroller, which could take a while. I wrote trasmission code for a PIC16F77(, but not recieving code as it involved interrupts, which I wasn't familiar with at the time.