My robot is based on a PC, I like the tools. They are the same tools I use day in and day out. I use Linux, because of this I have full access to virtually every standard available, be it, video, communication, serial, etc.
If have found it easy to try new things, and the hardest part about going from a Velleman K8000 I2C bus based data acquisition card to a Velleman K8055 USB bus card, will be taking apart the robot and drilling the new holes to mount the new board.
I can test my software on my desktop computer, then, copy it to the robot.
I can use a standard debugger to trace the code at the source (and assembly) level.
I can use CVS, on the robot, when quick changes are made there, I can synchronize them with the main system.
I can compile and link software on the robot.
I use standard wireless networking on the robot. There are no wires and it works the same way wether or not it is using wireless or a wire.
Using a camera on the system was as easy as writing this script:
ffserver -f /usr/share/doc/ffmpeg-0.4.8/doc/ffserver.conf & sleep 1 ffmpeg -r 4 -an -vd /dev/video0 http://localhost:8090/feed1.ffm (This was basically taken from a HOWTO doc)
It has a standard way to disply error messages or make sounds.
Its basically a PC on wheels, with all the benefits that come with that configuration.
I have been able to spend my limited time doing the things that are interesting to me, without getting bogged down in developing on a separate platform. One of the reasons why I have chosen not to use custom or embedded types of systems on my robot is ease of development.
I've done a good amount of embedded development, and I find it tedious. While there are clear advantages to these devices, I find them limiting. When you develop software, there are basically two problems: (1) How do I represent that problem within a Turing context, and (2) how do I implement that model on my system.
With an embedded system like a PIC or small processor, I find you spend more time on the second part of the problem than would be required by a larger computer system. Sure figuring out *how* to run something on a small system may be a rewarding challenge, but it seems that it distracts you from your primary objective.