I'm deciding which is the best operating system to choose to
run my robot using 802.11 wi-fi technology. I've seen a few security
robots running on Windows costing about the same price as those
running on Linux. And seen many robots run on Linux and perform
just as well, such as the IRobot. Why do robot makers prefer Linux
Well, just compare the cost to license Windows, as opposed to Linux.
Then look at the ( dozens? ) of embedded platforms that Linux
runs on, compared to Windows/CE/Mobile/etc.
The choice is obvious. ;-)
You can't beat the price, especially if you want real-time scheduling
(yet more $$$ on top of Windows). Robots don't generally need a
familiar GUI or to be able to run Office 2009 and Half-Life 5, so the
compatibility argument is pretty weak too.
Why /would/ you want to run your robot on Windows?
My favorite quote is from Steve Oualline:
"DOS/Windows programmers spend 90 percent of their time fighting the operating
system and 10 percent of their time doing real work.
UNIX programmers spend 90 percent of their time doing real work and 10 percent
of their time engaging in flame wars in comp.lang.c++."
I find it easier to work with hardware and OS services on Linux than on
Windows. Also, Linux runs fine on resource limited hardware (older, slower,
less memory) that would not even boot recent versions of Windows.
And, of course, since Bill Gates already has plenty of money, he does not need
any of mine.
Two obvious reasons are that Linux is available for a huge range of
platforms, from the largest mainframes down to some very small
microcontrollers, and that it is available in a wide range of specialized
distributions optimized for various uses. Windows is available for x86,
Itanic, and ARM and that's about it (was also available for PPC, Alpha, and
a few others once but that was a long time ago), and in only a few
variations, aimed at servers, desktops, and handheld devices. Then there's
the source code issue--the source code for Linux is freely available, as is
the source for most applications. The source for Windows used to cost
something like $85,000 and I'm sure that they've raised the price
considerably since if it's available at all, and to get the source for some
of the applications you'd have to buy the software house that produces
Another advantage of Linux over Windows is that if there are
compatibility issues, you can just use another distro or version of
Linux (for free). With windows, an additional windows disk needs to
be purchased for every computer and robot.
Networking and terminal connection are built into Linux, whereas in
older versions of windows at least, it's often an addon program.
Don't get me started about the disk and memory requirements.
"The cat was once revered as a god. They have never forgotten this" - Anon
Isn't the question more like: why would you use Windows?
Just because it seems familiar?
Well, think again. Once you'll have to mess with Windows
on low level, you'll realize that it's not so familiar... ;-)
Besides, the help you can find on the web, compared to all
the Linux resources, is virtually useless. Go to a MS newsgroup
and ask a very specific question, if you want to be convinced.
A whole bunch of MVPs there... and not much information.
Believe me, unless you're ready to pay a lot of money for
support and/or for third-party tools, Windows will take a lot
more of your time. Almost guaranteed 100%.
"Tim Auton" wrote
Since it is implied that we are talking about some kind of embedded linux, I
will talk about windows xp embedded:
1 - Because it is a more productive environment (if you are used to windows)
2 - Because there are far more market support for windows
3 - Usually it is easier to setup new hardware on windows
There is a paper somewhere on the web that compares true costs of
implementing linux embedded and windows xp embedded. According to that
study, it is cheaper to deploy winxpe than linux.
So, my final take is:
If you are a hobbyst and much more familiar to linux than windows, then go
If you are a company and intends to deploy a commercial device, I'd go with
"Jeff Shirley" wrote
I don't know where this guy got this statistic, but I've been doing windows
development for the last 10 years of my life and I don't have to fight the
OS. I tried to get more involved with linux at least half dozen times, and I
gave up everytime... perhaps I'm not intelligent enough for linux...
A productive enviroment is were one can produce with ease and at low
cost. Maybe with fun. In my experience, Windows is not. But I agree with
you, if you are abused^H^H^H^H^H^Hused with Microsoft APIs and its
grapical cage (ops, IDE, I mean), than you'll save a lot of time than
trying to understand different worlds.
What that should mean? I suppose people would buy robots being based on
they ability to their job, rather that on what OS they run.
Oh, unless you are talking about that Microsoft Mafia that you can find
around PC sellers...
Oh, yes, and it also easier to let its crappy driver crash the whole OS.
However, I don't think this strictly applies to robotics. Or XPe has
driver for R/C servo and IR sensors?
Fascinating. Now I wonder, who wrote that paper?
Then, when next Win XPe worm will spread world wide, I hope I have as
less as possible of that commercial devices around me.
Irrelevant in an embedded application, unless you want your toaster to
If you mean plugging a webcam into your desktop PC then yes, Windows
wins. If you mean getting the OS running on your own custom board then
I can't imagine anything better than being able to examine and edit
the source code for the kernel.
According to studies Linux is cheaper the Windows, which is cheaper
than Linux, which is cheaper than Solaris, which is cheaper than
Windows, which is cheaper than the previous Windows, which is cheaper
than NetWare, which is cheaper the Windows, which is cheaper then
OS/2, which is cheaper the Linux, which is cheaper than AIX, which is
Yuhuuuu! I love flame wars...
Productive means you are able to produce more. Nothing to do with cost.
It means that there are many more applications, drivers, companies,
professionals and so on available for windows.
I'm relatively new to robotics, but I already realize that you must divide
tasks and assign them to the most appropriate tool at hand. If I want to
control an R/C servo, I won't use neither linux or windows, I will probably
use a PIC that will receive/send messages to my host computer... running
linux or windows. Although winxpe has a RTOS module available, I don't
believe it is the appropriate way to handle things.
Search, read and find out.
Only if you let. Most of embedded devices will never have a network
connection... can't beat that kind of security can you?
There is a difference in prefering something because it is better or because
you are passionate about it.
I am passionate about my favorite soccer team, but it doesn't mean it is the
Not when this embedded application can be developed using the same tools you
use for your desktop applications.
The question is: I don't need to mess with the kernel. My goal is to create
software for a robot, not fixing bugs in the OS.
It all depends on your point of view :-)
I would agree with you if you said "most embedded devices do not have a
network connection"...but to use the future tense is being pessimistic
about the future of embedded microcontrollers. In the near future I hope
they are all networked: the TV, microwave, fridge, car, dishwasher,
water heater, thermostat, security system, etc. etc.
Of course, when that day comes I also hope that *none* of them are
running anything resembling the current versions of Windows.
Doesn't everybody prefer freedom ?
If you answered "low cost" then the question should have been
"Why do robot makers prefer Linux over vxWorks ?"
A related issue is "Why did NASA prefer vxWorks over Linux for
the Mars rovers ?" I bet part of the answer is that few people
knew about Linux at the time the rovers were designed.
Looks like we might see Linux-based robots from NASA someday:
Oh, and don't let anyone tell you that Linux crashed Beagle 2:
the lander was running a custom operating system, not Linux.