Sam, Here are a few things I took into consideration when working on a recent project:
My application had a client (the viewer) and a vision system (robot, kind of).
When we plugged in the hardware for doing the vision to a Windows XP computer, it just worked. Getting it to work on Linux was tricky.
Running the Windows OS with the desktop GUI on the hardware doing the vision was a bummer.
After we finally worked through the hassle of getting the hardware working on Linux things went very smooth. In other words, the problem was getting a driver. Once the driver worked everything went beautifully.
We were able to tweak the drivers on Linux to get two hardware devices working at once. In Windows, the driver was easy to get going initially but we could not customize it at all and therefore limited to one hardware device at a time (hardcoded into the driver I guess).
We were able to strip all of the unnecessary drivers and applications (including the desktop, graphical environment) off of the os for the "robot" so that we could get by with a very modest computer. While we're not doing this now, we could easily port our entire application (including the OS) to a 64 - 128MB flash disk. Smaller is possible, but we need a good bit of temporary disk space.
When it came to writting the graphical client software which ran on another computer we used Windows and benefitted from the RAD toolkit of the .Net platform. Specifically, we used the open source and freely available RAD tool SharpDevelop (#develop) found at
formatting link
Really it all depends on what you're doing. We are not C coders nor are we kernal hackers. However using the source code as an example and some trial and error we were able to customize the immature drivers in order to meet our needs. We were also able to scale down the OS so that we had a very lean running system. Its kind of like having the low resource requirements of MS DOS, but having a modern OS, including development tools and a lot of drivers.
I am a big fan of both Windows XP and Linux. I use each when appropriate. After this experience, I feel that for a robot you can get a lot more bang for your hardware bucks using Linux rather than Windows. I have enough licenses for Windows from the various computers I've owned (some running Linux now) that the cost for the OS is not an issue.