Robot OS discussion

Ben Bradley wrote:


This is true, but one can typically plan around variations in response times.

I submit, not on a "non-precision" mobile robot operating in a "non-precision" environment, unless you are a poor engineer.

I would *never* run a stepper motor with an OS, not even a real time one.

Steppers are for zero feedback control system and out of the scope of this discussion. We are talking about srrvo motors right now.

OK, why? What are the technical limitations that require a dedicated microcontroller? A mere assertion is not good enough, tell me why a dedicated system needs to do it.

Stepper motors are not being discussed.

How does this relate to the conversation?

Can they do it better than a PC at a lower cost to the end user? Is it an easier platform on which to develop?

Right, and arbitration agains conflicting priorities always introduces variance in response times and ALWAYS introduces restrictions on the way something is coded. A "real time" OS on the PC hardware is only as well behaved as its worse process.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
mlw wrote:

Not to be argumentative, but this is EXACTLY what I do, using commonly available commercial software. I operate a CNC router that runs off DOS or Windows 98, through the parallel printer port, and it more than adequately controls three steppers simultaneously to their maximum step-per-second rating (which is also the maximum feed-rate for cutting most materials anyway, of about 1.5"/sec). Step control is better under DOS but quite acceptable under Windows. This is on a Pentium 1 133Mhz PC with 64 MB of RAM.
Strange but true.
I haven't seen too many CNC programs these days that don't use standard DOS, Windows, or Linux. Many of them rely on fairly simple bit-banging through the parallel port for stepper control.
The difference here is that apart from reading limit switches, and maybe drawing the toolpath on the monitor during routing, these programs aren't data-intensive during the stepper-control phase. By the time the router starts moving the path has been plotted, and CPU useage is actually quite low. If the OS were also doing some intensive data-crunching, the steppers would be very jerky. PCs have long been able to do ONE thing well at time.
Again, this is real-life experience, and is at odds with what someone might assume. But there is a rationale for why it works in practice.
-- Gordon
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Gordon McComb wrote:

What sort of interface? A direct driver to stepper winding? Do you hook the system periodic interrupt or do you work from application space?
Is the velocity control precise, or is it relatative across the other steppers?
A CNC router is a very well controlled environment, it should work fine I suppose.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
wrote:

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.

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
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Ed LeBouthillier wrote:

That isn't really how engineering works in the real world, it is more of an iterative process:
10 Concepts 20 Define Requirements 30 Can requirements be met? If no, goto 20 40 Design 50 Does design meet requirements? If no, goto 20 60 Can design be built? If no, goto 40 70 Development 80 Has development discovered any problems? 81 Are development problems based on design, if yes, goto 40 82 Are development problems based on requirements, if yes, goto 20 83 Are development problems based on concepts, if yes, goto 10 90 Delivery - alpha (QA) 100 Has alpha product hit any problems? 101 Are alpha problems based on development? If yes, goto 70 102 Are alpha problems based on design? If yes, goto 40 103 Are alpha problems based on requirements? If yes, goto 20 104 Are alpha problems based on concepts? If yes, goto 10 110 Delivery - beta (release candidate) 120 Has beta product hit any problems? 121 Are beta problems based on development? If yes, goto 70 122 Are beta problems based on design? If yes, goto 40 123 Are beta problems based on requirements? If yes, goto 20 124 Are beta problems based on concepts? If yes, goto 10 130 Delivery - version 1.0 .... ....
You get the idea. Sure, much of this is done in parallel, but rarely is it ever done in such a linear fashion.

Not nessisarily. There are a non infinite number of operating systems available. Most are unacceptable for various reasons. The actual field from which to choose is rather small.
From a technical view point, I find it hard to justify Windows for any sort of control based application. So, that leaves one of a number of UNIX type operating systems. Linux, FreeBSD, and NetBSD are all free. QNX is not free, but free enough for personal stuff. If you have no "real time" requirements, you don't need QNX. That leaves Linux or a BSD. Linux is more popular with better device driver support, so Linux is an obvious choice without any up-front exclusionary requirements.

I would bet most of them are running a flavor of UNIX, and possibly Linux. Linux is huge in asia.

I'm curious, like what?

That is a good discussion, we should have it.

I remember all the crap we had to do at Denning Mobile Robotics with z80s and some of the first 68000s. These days the raw computer power available for $99 is amazing.

That's not true unless you want to develop the infrastructure all by yourself. Using an OS with a lot of supporting programs makes a lot of things a lot easier.

Like any tool, one should learn about their OS.

Interesting, what is?

It is hardly a copy.

Well, that isn't true at all. The new Windows, NT, 2K, and now XP were originally designed to be a portable version of OS/2 for IBM. When MS and IBM split ways, Microsoft put a Windows sub-system on it and called it Windows NT.
The original work on NT was by Dave Cutler, and it is widely acknowledged that Windows NT was based on Digital Equipments VAX VMS. This is one of the things that was settled in a law suit by DEC against Microsoft.

This is certainly not true either. The UNIX environment has created *every* advancement in computers in the last 30 years. Microsoft has not created one piece of original technology yet.
Name some things you think Microsoft created, you'll be surprised where they really came from.

It may not always be the "best" solution, but there is rarely a "better" solution without some exclusionary requirements.

Windows is a disaster, I programmed it for 15 years, published articles on it, and personally beta tested Windows 3x, Windows 9x, Windows NT 3.5, 3.51, and 4.0. I am done. I'll do it for money, but for my own work, I won't touch it.

I disagree, the OS is a serious part of a project. Having opinions based on experience about the relavant merit of one OS over another is a valid discussion, and an important one. If you don't like the discussion, you need not participate.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

I apologize for standing on my soap box a little long last night, but I do not consider my OS a religion. I do have strong feelings for Linux and against Microsoft in general.
I used to work for Microsoft and you should hear some of the attitudes they the company fosters towards its customers, much less its competitors. Having done so, I feel fully justified in my opinions towards Linux being a better OS.

I fully agree with MLW on this. After building the software and cramming it onto whatever storage device you choose, the robot is not going to need the bloat that comes from having a nice GUI on the screen.
Now I am not so blind as to say that Linux is the "perfect OS" for building robots. A standard distro comes with SO much extra software that will simply not be needed running around on a robot chassis, hence the reason I pointed out the "Linux From Scratch" project and an RTLinux kernel.
I have not seen a better solution to the problem yet.
BTW DOS is an 8 bit OS that does not utilize the CPU architecture well at all. It was simply written as a quick CP/M clone to use on the PC jr. It was never intended to have the lifespan it had.
Xerox Corporation built and tried to market the first GUI based software and OS back in the early 80's. It sold well to newspapers as a typesetting engine, but they could not produce it cheaply enough for the home user, also it has always been difficult to get the general population to accept new technology.
We on the other hand are not the general population. We're building machines to try and mimic life and a coherent thought process. We have no room for closed mindedness and boxed thinking.

No need to bet. It's a documented fact. China is making moves currently to swap their governmental computer systems over to Linux and heartily encourages the use of Linux by the general population.

So am I. What has led you to believe that Linux doesn't have awesome driver support? Or are you talking about hardware that Microsoft licensed to be built specifically for the Windows arch, so they could ensure their monopoly in the two markets combined?

I will say again that I used to work for Microsoft and used to think that it was the greatest thing since sliced bread or at least the Atari 400 I started out with. I migrated to Linux after making an extremely WELL informed decision. I liked the shear overload of documentation I could find on everything from how to configure the hardware and software to writing new software and drivers. I liked the availability of the source code so that I could study how it all worked. Most of all, I enjoyed all of the FREE libraries and development tools I suddenly had available to me. OOH even better, I liked not having to steal all the software I wanted, since I never had a decent budget to work with until I went to work for dear old uncle Bill. By that time, I no longer cared and would simply hack my way to any new software I needed or wanted.
Suddenly it was no longer fun to hack any more, since every thing I wanted was either included in the distro or FREE for the download off the net.

I agree, but would probably get banned for starting a flame war, since I enjoy this argument WAY TOO MUCH. ;-)

Such a beautiful thing....

The performance is a huge issue when working with a slower processor and less head room. I apologize for including LISP in there. I got a little carried away with that one. Bad EMACS memories.....

The operating system of a robot is it's tasks. Technically a hard drive is a robot that is manipulated by the CPU and OS and BIOS (firmware). A robots arm or leg needs to be thought of in the same way. Take a look at the MCU on your network card or video card and then read up on the firmware stored there. You'll start to realize that an arm or leg or sensor is just another peripheral to the robots main CPU.
Using that analogy, create your hardware and then write a driver to support it. Your robotic control software (OS) will take over from there.

It has evolved into something much greater than its beginnings. You obviously have not spent too much time looking into Linux.

Windows itself is merely a new version of the same technology developed at Xerox 30 years ago.

Well if the Linux community would start stealing as much code as Microsoft has and could field as big a team of lawyers as MS has then maybe we wouldn't be so far behind in whatever area you seem to think we are behind in.
BTW what area are we behind in? Do you think that Linux doesn't crash enough or something? I'm not understanding what it is that you are referring to.

I submit that it is you who are reacting like a religious zealot in defending such a flawed and over monopolized OS as Windows is. MAC users tend to be far more zealous.
What does "consider requirements to drive decisions" mean? What's the matter? Without Big Brother Bill around to feed you your answers, you can't form an intelligent sentence?
I won't even begin to say that Linux is the BEST solution, but I haven't found a better one yet. Something new will come along, probably from the open source community, that will redefine the robotic operating system.
Both Windows and now Linux are wrong for the job. You don't use a hammer to turn a screw. Both operating systems are now designed for desktop use. A robot is not a desktop. Do I think that Linux will be easier to convert into a true robotic operating system than Windows is? I will give a resounding YES!!!!!! Do I think that it will in any way resemble the desktop computer system I am currently sitting at? NO!!!
I will be able to talk to and call up information from my robot using natural speech. I will not have to log onto my robot to get it to respond to my commands. I will rarely have to look at a screen and read at least not one directly attached to my robot, so the GUI will be nonexistent.
I am currently talking about the software related to the operating system itself. I think that the Linux kernel could be modified for use or maybe the HURD would be better suited. Either will be vastly stripped down and modified to handle the specific requirements that a robot has. You can't do that with the Windows kernel. Bill Gates and his copyright lawyers will not allow you to.

I'm more than willing and able to keep this going. I do not , however, want to limit this to just a Windows vs Linux debate. I came to this site to learn something, not keep dredging up and rehashing the same OLD crap over and over again.
I want to hear some one come up with something different. Something I haven't heard of before. Micro-controllers will play an integral part of the overall system, but I do not believe that they can successfully handle the overall job of information sorting and processing. So please, some one is just sitting out there with another idea. Speak up. I for one want to hear what you have to say.
Eljin
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Eljin wrote:

Hear hear!!

I worked indirectly as a contractor for Microsoft in the late 80s and early 90s, I know exactly what you mean.

I don't have anything against GUIs or displays on robots, but it is important that they be optional.

There is *no* such thing as a perfect OS, but Linux is the least sucky OS thus far. IMHO.

Actually, it's funnier than that.
Seatle Computer wrote QDOS (Quick and Dirty OS) for the 8088/8086 and it was a virtual clone of CP/M. IBM was looking for an OS for their new IBM PC, and after a negotiations failure with Digital Research, approached Microsoft for an OS. MS then purchased QDOS for $50,000.
Talk about an investment paying off!

Xerox PARC had a number of cool technologies, but the company, as a whole, did not understand them and therefore did not know how to sell them.

Unless you are careful, being "out of the box" simply means you are in a different box.

Windows-only hardware is a bad thing, not the least of which it is a rip-off. There is no guarantee that the OEM will support an old product on a new OS. I had a number of Windows 9x compatible peripherals that were never going to be ported to NT,2K,XP. So, even though the hardware works, it won't work on a new OS. Stupid and wasteful.
That's why Linux is great. If your device is supported on Linux, you'll be able to use it as long as *you* want.

I have a similar experience. Linux (or FreeBSD and the other BSDs) are "free" both with regards to acquisition and freedom.
Windows is not free on both accounts. *Anything* done for Windows is by its very nature designed to keep Bill rich. I would rather invest my time and energy on other things.

It is so true. I used to love Windows. I wrote a couple articles in the book "Tricks of the Windows 3.1 Masters," and a couple about sharing device driver code across Windows 9x and NT.
With Linux, Windows is no longer interesting. It is a dead platform.

As long as it does not devolve into a flame war it should be OK. Most robots need an OS, and a good discussion about them should be helpful.

Linux is a fairly good OS. Its power is that it is based on POSIX, which is based on UNIX which is based on Multics.
The computing world owes great respect to Multics one of the most revolutionary concepts in computer operating systems. Almost every system in use today build on their early work.

Slight correction here.
Linux is not designed to be a desktop. It is mostly designed to be a general purpose computing platform. Most distributions target the server and desktop markets, but make no mistake, Linux, like unix before it, are designed as general purpose computing systems. Ideally suited for robotics.

I think we can dispence with the Linux aspect of the discussion and focus on OS phylosophy. POSIX vs Windows. These are two very different design criterias, and where POSIX is intended to be general pupose computing and Windows is designed to run consumer desktops, I don't see any real debate. POSIX wins.

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Seems like Windows XP Embedded would be a nice fit, but looks like it is not easily available. It runs windows 32 binary programs, therefore you can use the vast array of development tools, hardwares and drivers for it, but without the hassle of "user friendly" features. For example, it is not going to checkup for "live updates" while you're trying to process images from the video cams.
I particularly like windows because it's easy. Although I agree that theoretically linux makes sense, in practical terms I know I'd spent lots and lots of time dealing with issues not related with my program (e.g. trying to make the OS to recognize one given USB driver with a given webcam that was made with windows in mind). If I had that time to spend, I'd probably go for it, but it is rarely the case.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Which distrobutions of linux do you recomend for robotics?
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here. All logos and trade names are the property of their respective owners.