This is a question and maybe a challenge. If you use a PC mainboard for the
computer basis of your robot, what OS would you use? I've heard that many
people would use Windows. If you've read anything I've posted in the last
month, you'd know I use Linux.
Let's start a discussion. What are the top 10 reasons you choose the OS you
(1) Most all distributions (not Linspire!) come with the development tools
and lots of development languages.
(2) Graphical interface optional
(3) Good support for hardware
(4) very customizable
(5) very stable
(6) Full source code access
(7) Can be as big as a data center and as small as an embedded device.
(8) Lots of software available
(9) Great networking support.
(10) It is totally free.
QNX Real time platform:
1. Designed for realtime applications.
2. Microkernel design => easy to develop device drivers in user space (no
3. Very good documentation and help system (way ahead of linux man pages)
4. A helpful user community and useful newsgroups (news server: inn.qnx.com)
5. Availability of most tools and apps from the open source and GNU world.
6. Most unix/linux apps can be recompiled in QNX with little or no
modifications to makefiles, sources
1. Expensive license, although free for non-commercial use
2. Hardware support not as good as linux
3. No hardware accelerated graphics
That is very nice.
Most operating systems have the notion of modular kernel drivers. Even old
DOS Windows had VxDs which could be loaded dynamically.
Hmm, that is an interesting opinion. I'd like to take a look. Linux has a
does lot of man pages and HOWTO documents, on the other hand.
Yea, Linux used to have a very helpful community, but I think the trolls
have taken over in a lot of places.
Isn't amazing what's available?
Yea, I've seen my share of "#ifdef QNX" in code.
What is the license?
That may or may not be a problem in a robot. As long as you can choose H/W
based on compatibility, it probably isn't too much of a problem.
Linux is good here, but not perfect.
The most important requirement of any OS
or computer language is that you know how
to use it. Something as simple as QBasic
and DOS can control a robot if that is all
you know and the task is not too demanding.
The bottom line is everyone will use the OS
and language they are good at. In your case
you have a wide choice and thus for you Linux
is an option. For others they would have to
ask if the learning curve is going to be
worth it. A good idea will run just as well
on Windows as it will on Linux and should
be transportable between operating systems.
When you have published your PID hardware
and associated software i am sure we can
all adapt it to our own situations if it
will solve a given problem.
So in answer to your question I would say
that it doesn't matter what system you use.
It is not the tools you choose only that
they are sufficient for the task and you
know how to use them.
I actually like the idea of Linux if only
because it is not Windows :) I will take your
suggestion to download "knoppix" but in the
meantime will use the tools that I already
have some skill in using to build my robots.
That is nonsense. Don't you want to learn anything?
Your catch phrase "the task is not too demanding." What about those people
wanting pointers or alternate opinions?
That I disagree with. I am a published author in the Windows software
development realm, but it is the motivation to learn more that has lead me
to Linux for my robot.
This is a pet peeve of mine. I'm having a hard time placing the decade, but
there has certainly been a disquieting change. Since when is it wrong to
learn new things? A "learning curve" is a good thing.
Well, with regards to Windows, it is a *bad* OS from any technical
perspective. Strategies that would run on most platforms have a way of not
running on Windows.
Funny you should mention that. I have the C++ class written. I have the PID
class written. I have a lot of digital photos taken. I am very close to
putting up the web page that describes how to use a ripped apart mouse as
an encoder. It's pretty cool, also I'm having a blast.
That isn't the point of the discussion. The point is to debate the relative
pros and cons, you know, intellectual discovery.
That is a really simplistic point of view. It brings to mind the saying: "If
all you have is a hammer, then every problem looks like a nail." A rich
vocabulary of technology and ideas helps you do things easier.
Don't misunderstand what I am saying, this isn't about Linux. I have my
reasons for choosing it, but I would like to hear the reasons why people
choose other systems. I am curious. Right now, I'm thinking about
downloading QNX to try it.
I didn't say I didn't want to learn anything.
I thought I was giving an alternative opinion?
And we are all motivated in our particular field
to learn more. Mine is not software or hardware.
I do have other time consuming interests. Robots
happens to be one of them.
We all have a different entry point and different
goals. If your goal is to understand how machines
might learn, adapt, navigate, "see" (AI) then the
actual OS is irrelevant providing you can use it
and it is sufficient for the task.
Good or bad it's part of learning but we all have
different ideas about what is worth learning.
In fact "learning theory" does interest me and
flattening out that learning curve is in my
opinion a desirable goal due to the enormous
amount of learning curves we have to deal with
on a daily basis.
I knew an ex teacher (principle) who woed the
fact that children today couldn't spell. One
day he complained to me how his local church
newsletters editorial had spelling and grammar
mistakes. I asked what the editorial was about.
He didn't know (and probably didn't care) as
his real concern was not on the goal but the
means. He isn't with us anymore but I wonder
what he would make of the shorthand used by
todays youth when they send text messages on
thier mobile phones. They are concentrating
on the goal of communicating not the means
by which to communicate.
I will have to take your word for that. So far
my little vision and control programs seem to
work with Windoze (or DOS).
And if you have a nail gun a hammer isn't good
enough to put together the kids playhouse?
Look I think it is great that you have all that
knowledge on software and hardware. Hopefully
you might share some of it with lesser mortals.
As I pointed out above we all have different
entry points into this hobby. For example have
you seen the different ways people can program
the LEGO Mindstorms RCX depending on their
level of expertise?
Experts can restrict access to technology to
all but those who do the hard miles or they
can use their expertise to make it easier for
others. An example I saw of this was a book
on writing games for windows. It only required
the ability to program in C++ as all the DirectX
and windows programming stuff was provided on
a CD and instructions on how to use it. Sadly
it did not cover webcams :(
Another example might be DOS extenders. You
might get all elitist and say, sorry, become
an expert on switching between protected and
real mode or you might instead provide WDOSX.
I basically agree with this statement in so much as the OS is irrelevant to
your algorithm, but some operating systems are easier on which to develop.
My pet peeve is that I remember they day I thought the USA was in trouble.
Someone said to me "Why do I need to know that?" about a technology they
used day in and day out.
30 years ago, someone would be embarrased to say "Why do I need to know
I remember Popular Electronics, Byte, Popular science, and magazines like
this. All had projects to build. All were "popular" magazines. Now, they
are little more than shells of what they once were, and hardly anyone reads
My highschool physics teacher told us to study everything.
The only way to flatten out a learning curve is to learn basic concepts and
apply them to new subjects.
I guess I have a different perspective.
This is a different debate, it is a great debate, and while it may have some
interesting parallels, I'm not sure we can do it justice in the context of
Having used a nail gun, and assuming I have access to one, yes, I would use
the nail gun every time. Just as I would use an electric screwdriver to
mount a plant hanger. It makes no sense to waste effort doing what a tool
can help you do more easily.
That's a pretty discourage way to look at it, for both of us. Personally, I
want to learn. Debate and discussions are a great way of exchanging ideas.
My son has the RCX package (Mindstorms), its kind of cool if limited. I have
been looking at the idea of ripping apart the mindstorms sensors and
actuators and figuring out how to run them from a PC.
Einstein said "It should be as simple as possible, but no simpler." With a
little more depth, the webcam should have been fairly self-explainitory.
FYI -- a lot of the Windows video stuff is in the multimedia SDK (which you
can download). There are at least one or two program that can be modified
to intercept a video stream and periodically save a bitmap.
No, that falls under the electric screwdriver example. One should understand
real vs protected memory, as well as the different types on the x86 (It can
make some wierd problems obvious), but it is best to rely on an extender to
do the work.
I choose an OS because:
1) it does the job
2) is widely supported
3) I'm familiar with it
4) the tools I need are there
5) The documentation I need is there
6) It runs on the machine that I've chosen
7) The input and output devices I need are supported
8) It is customizable
9) The performance is predictable
10) The OS doesn't get in the way of the job
In the past, the above reasons demanded DOS or Windows.
Your question is difficult to answer without first identifying what
you need the OS to do. If you don't need the OS to do much, then
I would say you don't need an OS. One step up from no OS would
be something like DOS (or FreeDOS).
Really, how can you choose the delivery platform until after you
decide what you want to do?
For example, suppose you need to count motor revolutions. If your
motor runs at 3000 RPMs, then Linux would be a bad choice to
monitor signals like that. Out of the box, Linux's tick is 10
milliseconds. That means that you can't even begin to count
those signals. You'd need some hardware to do the counting.
Therefore, without some kind of hardware support, linux would
be worthless for a direct motor control task. On the other hand,
without an OS, many microcontrollers are able to do it just find
(especially if they have counter hardware). In this case, no OS
beats out OS = Linux.
I've developed robots on Windows in the past because there
was wider support for the hardware that I wanted to use. Linux
still has problems with getting drivers for off-the-shelf hardware.
Linux's hardware/driver support is nothing to be too proud about.
Linux is great for high-level tasks, but I think one still needs
something like a microcontroller without an OS to do low-level
interfacing. Then again, without having to deal with low-level
interfacing and being able to program in Visual Basic or C#,
Windows is a great high-level platform with much wider support
for many input devices.
So, in summary, which is the best robot OS? None for low-level
control. For high-level control, it doesn't really matter; it's just
a preference. I'm leaning in the direction of Linux for robot
control but I've enjoyed using Windows in the past. Both
Windows and Linux have support for serial and network
I wouldn't worry about the USA being in trouble
due to a lack of brain power. Wealthy countries,
like wealthy entrepreneurs, hire the technical
brains. One of the problems developing countries
have is the brain drain to the USA. Indeed most
of our brightest in Australia are enticed to go
to the USA to add to your well being and wealth.
Think back to the second world war. Who made up
the elite that made the atomic bomb and delivered
the know how to enter the space race and where
did they come from?
You are going all nostalgic :) The world has changed
and there are other things to attract the techie type
youth. There are still some mags left like Elektor
Electronics (UK) and Silicon Chip (Australia) that
have projects and interesting articles. As for software
there is Doctor Dobbs Journal and other specialty mags.
Information overload! A general education is important
but I think there is a need today to specialize and to
be goal orientated in how much time you allot to any
Perhaps I should have said flatten the *time*
it takes to get over the learning curve.
How information is presented can make a big
difference as to how long it takes to assimilate
that information. It also reveals something
about how our brains work.
May I respectively suggest that time spent
learning how we learn will be better spent
than time spent on yet another OS if you
want to make a smarter machine any time soon?
A debate about OS is fine between those who know
what they are talking about and I wasn't trying to
suggest it not take place. All I was pointing out
was that if your goal was to build a robot then
it wasn't the main issue. And my "contribution" to
the debate was simply "to use what works for you".
I have read these debates on computer language sites
and no one seems to agree.
But have no idea how to use :)
As I have mentioned I have been using a VC++ shell
to grab LogiTech webcam images into an array for
processing and display. However it is too slow and
I don't really want to use VC++. Apparently there
are LogiTech drivers available for Linux and thus
I am not adverse to using Linux and C++ if it is
not too time consuming to learn.
Really I am waiting for you to get your little bot
up and running with web cams so I can learn from
your C++ code as to how to do it :)
So you chose Linux huh?
This is basic Engineering 101...
EEEEHHHH!!!! Wrong answer! You did say "Out of the box" which I'll give
you, but I haven't seen a computer yet that I didn't have to configure
with all the proper drivers, be that Windows and having to spend 15
hours downloading all the different drivers that do not ship with the
factory CD-ROM or the hour I spent rebuilding my kernel to include the
drivers I needed to streamline my box at home.
So why not spend a little extra time, download RTLinux, build the kernel
and get the clock ticks you are asking for and not have to waste time
fiddling with assembly code for an MCU.
Also, with the technology available to us, why constrain yourself to a
little toy line follower or an over rated RC Car (read "Mobile Robot").
The Japanese are kicking our rear ends in their home work shops building
Bi-Pedal robots that play soccer and do Karate moves.
Does your robot need to use a GUI or am I missing something?
A good robot doesn't need a TV screen with pretty graphics.
It just needs to do what it's told.
Check again on our hardware/driver support, you might be really
surprised. Most people who make that statement either tried Linux years
ago when it hadn't gotten as popular as it is now or are trying to ride
the "bleedin' leadin' edge" so hard the not even windows has a driver
for their hardware yet. Furthermore, having worked as a technician for
twelve years in the field, before having the good sense to move on, I
had just as many problems getting new hardware to work under DOS or
Windows as I have had with Linux.
Don't think that something is better just because you have to pay for it
and the license to use it and to talk to Habib the technical support
representative who doesn't know any more about it than you do.
Please, I do not mean any offense to our Hindu and Middle Eastern
friends here. I am only referring to a HUGE problem we have here in the
US trying to get good technical support over the phone.
Which brings me back to the driver issue. I have found a plethora of
documentation for Linux and its associated drivers and hardware that I
was never able to find for Windows or DOS until the Linux community
forced them by example to start shining a little light into their Black
MCUs will always have their place, but with recent developments in AI,
hardware and other software, I think it is time to rethink the soap box
that hobby robotics and other areas of robotics in general have stood on
for decades. I can now have the full power of a PC to work with in the
palm of my hands, with Megs of software to control it for CHEAP.
Except for having to take the time to remove the BLOAT of your standard
operating system, Having a fully functional PC or better to work with is
EXTREMELY attractive to me. Voice control itself requires a more
powerful processing unit add in color vision and you start to seriously
crank out the BOGO MIPS. Give the bot a decent enough database of know
ledge to use in its daily tasks and the search algorithms alone will fry
your MCU in a second.
Use the MCU for motor control and channeling sensory input back to the
main CPU so that it can do the real decision making.
Once again I can not agree with using Windows for anything other than a
monitoring station and I've got the Gnome for that. For building a
custom robotics application that will be more than just a toy I
personally will choose Linux or a variant thereof any day.
"Linux From Scratch" is a very good place to start for removing the
bloat out of the operating system. Utilize an RTLinux Kernel to get real
time access to your sensors and actuators.
And this may be the most important point I can make.....
STOP using "Interpreted Languages" (ie: Visual Basic, JAVA, Lisp, ....)
for developing any kind of code, especially AI code. The computing
community has spent Billions of dollars building faster computers only
to have people slow them back down again with bloated GUI s and
interpreted software. I spend just as much time now waiting on my
expensive GUI to load up as I did waiting for my 4K of code to load off
my old tape drive on my old Atari 400. Why did I get a "faster" computer?
The "Learning Curve" is what makes it fun a challenge. I want my robot
to go get me the proverbial beer from the fridge. I want to live in the
most technologically advanced civilization on the planet and I don't
want to move to a foreign country to do it. We have the tools and the
ability to build that robot. We have to stop limiting ourselves and
sitting in the box that people like Bill Gates want us to sit in. The
open source community is our best starting point to achieving that goal.
What I don't know, my friend over in India does and what he doesn't know
his friend in Denmark does and We don't have to make some corporation a
little richer to SHARE what we know.
In conclusion, let's go build some robots guys and let's use our heads
doing it. :-)
So are we talking C or C++ ?
Or a case of reinventing the wheel umpteen times.
Lets aim high here :)
How about we aim for one world with different teams?
Look at the earth from space, do you see any borders?
The one that gets beer from the fridge?
Unfortunately that's socialism and doesn't really take
human nature into account. No one is going to share a
good idea without reward. Life is like a football game.
Most people like to compete and have an audience see
Now I am all fired up to go. What's the game plan?
Ah, so true; there was a time when I wanted to write everything in Perl
but found that it wasn't quite up to embedded applications...
C is probably the best for embedded programming - can make for smaller
code, which is important if you've only got a few k of memory to play
with. When we're talking PCs, however, I don't know if the difference
would be noticable. If you're used to OO programming languages, C++
would probably be more familiar; apparently it's easier to build larger
applications in it than C, but I'm just taking that on faith.
If you have an MCU looking after each motor, you could do that bit in C
(or assembly if you're that way inclined) and then do the PC stuff in
C++ if you're happier with that than C.
Don't forget that any speed advantage means that you get your beer that
much quicker ;-)
This is a common misconception. C++ can create just as compact code as C,
and in fact, depending on your design methodology, i.e. object oriented,
can make code more compact since you don't have to create code to simulate
what the compiler can do.
C++ is mostly a superset of C. Anything you can do in C, you can do in C++.
Depending on the motor speed.
No, actually I've tended to choose Windows or Dos.
Linux is nice, but its documentation isn't anything special.
Just saying that you can read the source code doesn't
mean that documentation is good.
I probably will choose Linux for future projects but it
hasn't been able to meet all of the requirements.
Until the 2.6 kernel, Linux could not have been said
to be a real time OS. Neither has windows.
You should read a little about the "free" software community. ("free" means
freedom, not always absense of cost.) Many people mistake it for socialism
because it isn't as restricted as they are used too. It is actually very
The system works like this:
You want to accomplish a task. Rather than roll your own or buy everything
you need to do it, you pull from the huge libary of GPL applictions and
source. If money was involved for doing the task, you still get paid and
you don't have to pay for the tools you used. All the community asks is
that if you alter software that you used, which really doesn't belong to
you in the first place, that you make your changes for other people to use
as well. If you write your own software from scratch, it is yours to do
what ever you want with.
I have a project out there in the "free" software community and I contribute
to a few others as well. Because of my contributions, I can get software
that does what I need "out of the box" and on my "free" projects I have
recieved a number of bug reports that have let me fix problems I didn't
even know about.
Conceptually, it is no different than a bunch of farmers working together to
build an aquaduct. They still compete with product, but cooperate with
infrastructure. The wealth of GPL software is astounding. You should look
at what's available, absolutely for free!
I'm hoping to have a working prototype of my super-cheap PS/2 mouse based
motor encoder system with source code and pictures by the week end,
assuming I don't have to spend too much time ferrying children to
instrument lessons and sports, and the wife doesn't have friends come over.
That's right. Basic Engineering:
The requirements drive the design. This is basic Engineering 101...
I think you've started with a conclusion: Linux is the best OS and
followed from there. You've turned OS's into a religion.
Big deal. I doubt very few of those are running Linux.
Additionally, who says I *was* "constraining myself to a
little toy line follower or an over rated RC Car?"
No, they just needed hardware and driver support that wasn't
available under Linux.
Don't think something is better because you start out thinking it's
better. None of your arguments have been specific to developing
robots. I think you're involved in an OS religious war, not a
thoughtful evaluation of OS requirements for robots.
I agree. In fact, if you knew me, you'd know that is my own position.
That was my point exactly. I'm glad you agree.
Once you do that, it really doesn't matter which OS or no-OS you use.
There's nothing wrong with interpreted languages. Scripting (read
interpreted) language are flexible, fast, easy and fun to use. Their
performance is not generally an issue. Also, Lisp is a compiled
language; it has been for 30 years.
The learning curve should be on robot tasks, not the operating system.
and I don't
Ummm... Linux is not the most "technologically advanced" OS around.
It is a free copy of something that was developed over 30 years ago.
Windows actually is the most technologically advanced OS. It has
developed numerous technologies that Linux is only recently catching
My point is that you need to get out of the "Linux box" which is built
by its own religious zealots and consider requirements to drive
decisions. Linux will not always be the best solution.
I program Linux for a living. I write kernel-level drivers, data base
programs, network programs and user interfaces. I like Linux; it's not
my religion. I'm willing to consider Windows; it too is a modern and
capable OS. Sometimes DOS is just wonderful too.
I agree. Stop bringing up OS religious wars.
I can see DOS, as it is more or less an over glorified boot loader, but
Windows? My god man!
I'm not so sure I'd go that far. Linux has lots of documentation, in my
experience, I have been able to find more information about Linux internals
and workings than Windows.
Curious, like what?
None of the systems you mentioned are real time operating systems.