Robot OS discussion

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 do?

Linux because: (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.

Reply to
mlw
Loading thread data ...

QNX Real time platform: Advantages:

  1. Designed for realtime applications.
  2. Microkernel design => easy to develop device drivers in user space (no kernel recompiles)
  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

Disadvantages:

  1. Expensive license, although free for non-commercial use
  2. Hardware support not as good as linux
  3. No hardware accelerated graphics
Reply to
Vilas Kumar Chitrakaran
1) linux : ease of developing and programming 2) windows : because it will sell, play videos, mp3s, internet (PC on wheels) 3) roll your own : because it is fun and you can know it

Rich

Reply to
aiiadict

True.

Linux will do all this out of the box.

You can know Linux, you have all the source, you can even build your own.

Reply to
mlw

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.

Reply to
mlw

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.

Regards,

John

postscript:

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.

Reply to
JGCASEY

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.

Yes.

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.

Reply to
mlw

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.

Regards,

John

Reply to
JGCASEY

[snip]

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.

[snip]

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 that?"

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 them.

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 this thread.

[snip]

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.

Reply to
mlw

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 communications.

Cheers, Ed L

Reply to
Ed LeBouthillier

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 given subject.

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 :)

Regards,

John

Reply to
JGCASEY

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 Boxes.

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. :-)

Eljin

Reply to
Eljin
[...]

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 them win.

Now I am all fired up to go. What's the game plan?

John

Reply to
JGCASEY

JGCASEY wrote: ...

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 ;-)

Cheers

Reply to
Matthew Smith

FYI Elektor Electronics (mentioned above) published some articles on RCX and Lego Mindstorms.

formatting link
and run a Search.

best, Richard

Reply to
HomeLab

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.

Reply to
mlw

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.

Ed L

Reply to
Ed LeBouthillier

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 economically sound.

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.

Reply to
mlw

That's right. Basic Engineering:

1) Concepts 2) Requirements 3) Design 4) Development 5) Delivery

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 up with.

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.

Ed L

Reply to
Ed LeBouthillier

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.

Reply to
mlw

PolyTech Forum website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.