Phase01 of the robot project and some history.¶
I started playing with microcontrollers in 2005 and now almost 6 years later I've completed the first phase (which doesn't even include a microcontroller).
OOPIC, 2005¶
The first microcontroller, oopic, that turned out to be a really restricted product:
Here's one non-functional prototype from 2005:
16fxx, 2006¶
After the oopic I switched to 16f628 microcontrollers with a small devboard (I did get help with the schemas and soldering):
In 2007 I had a 16f88 and a more featured microcontroller board for driving the motors. An iPAQ was used to provide e.g. wireless connectivity. For the mechanics I bought a cheap Nikko RC car and ripped of the electronics in it:
Gumstix Verdex, 2008¶
Next thing was to get Linux in the picture so I bought a Gumstix Verdex and started to learn more about electronics, like i2c:
Gumstix Overo, Phase01, 2010¶
After several planning iterations and code rewrites I ended up using Qt both on the Gumstix and on the GUI controller. I decided that trying to optimize everything from the memory and CPU consumption to the network bandwidth just isn't worth the time spent in implementing it. Using Qt framework with self made simple protocol over UDP I got the Phase01 code implemented quite quickly compared to my previous efforts. The protocol allows low priority packets (like periodic statistics and video stream) to be lost and guarantees the passing of high priority packets (control commands etc.). Also only the latest control command of each type is retransmitted, i.e. an old packet is not retransmitted if a new overriding command has been given already.
The controller GUI shows the states the slave sends, like motor speeds, WLAN signal strength, CPU load average and some protocol statistics like round trip time and the number of retransmissions.
Currently the motors are controlled using the a,s,d,w keys in 10% steps and the camera is controlled dragging the mouse left button pressed on top of the video window.
Here's a video (direct link) of the Phase01. You need HTML5 video capable browser with Ogg Theora/Vorbis codecs.
<video src="/blogstuff/pleco-phase01.ogg" width="768" height="576" controls></video>