To add to the complexity, it must also navigate and motivate itself; a Segway's navigation system takes advantage of the sensors and processor installed in all of its cargo (a handy feature!) to offset the 'heavy lifting' of directional goals.
Segways are already shipping a robotics platform, and it's being used in mobile robots.
Maybe you can explain what you think the advantage of this system over a Segway-based mobile robot is.
There is no "sooner or later" in a one-day competition. Like any project, you look at the requirements and then you choose implementation, not the other way around.
These competitions aren't "like any other project"; they are milestones in long-running research programs.
I'm familiar with that site. But I didn't find a large body of Linux-only robotics code there. Got a more specific link?
You asked why the OS matters to robotics and this is why: there are hundreds of different kinds of embedded and real-time Linux systems to suit every need. For most of the higher-level stuff, the OS matters less, since those libraries can be ported.
If you proposed to your team that this vehicle should be built using "dozens of embedded systems", I'd be surprised if anyone agreed.
I suggest you have a look at their system architecture.
I realize I may not have as much experience as you. 20 years of development isn't very much, I know. And having worked on videogames that sold millions of copies, I probably don't have the extensive product development experience you do.
Thanks for confirming that you're out of your depth: you have no experience with real-time or embedded systems, and you have no idea about the purpose or function of competitions like these.
But tell me: with your experience of video game development, how many games have you delivered for Windows? How many for Linux? Did you work on multiple generations of the same game family and did you rewrite everything from scratch? Still think that platforms, tools, and continuity don't matter?
But the debate here is between Windows and OS X, not Unix.
Why the hell would anybody care whether Microsoft or Apple puts a feature into their OS a few months earlier?
The two things that matter are:
(1) Who invented the feature in the first place, because those are the people we want to give our money to so that they can come up with more good stuff.
(2) If it's a useful feature, how can we make sure that everybody copies it as quickly as possible? Yes, it is beneficial to users if Windows, OS X, Gnome, KDE, and all other desktops quickly converge on the most useful features and UI standards so that people can switch between them easily, competition drives down cost, and companies are forced to come up with something new again.
Note that (1) is usually neither Microsoft nor Apple; so, if you think you're doing something for innovation and the betterment of the world by buying Apple products, think again. Buy Apple because they make well-designed products. But when it comes to innovation, Apple has been pretty much thriving for the past two decades on being a cheapskate and a copycat.
The reason why a lot of their "innovations" aren't widely used in the market is not because nobody thought of them before, it's because they didn't work well when other people tried them before
Something that had prior existance is by definition *not* innovative
Hence the double quotes.
translation: MS is really innovative.
You're such a zealot and so eager to put words into my mouth that you don't even see the first sentence of my posting: "There are few ideas that are original to either Microsoft's or Apple's products."
A summary of research projects conducted over the past two decades..
A site on K-12 education studies that cites five "research" studies? You must be kidding.
Where are Apple's Turing award winners? Where are Apple's academic research grants for computer science research? Where are the conference and journal papers published by Apple researchers? There's nothing. By all accepted measures of research success, Apple is a complete failure.
Go look at research.microsoft.com, www.parc.com, www.research.ibm.com, and other corporate research lab sites to see what kind of activity goes on there. Try to find equivalent records of refereed publications, university sponsorship, university collaborations, honors, and credentials at Apple; there are none.
Genome Research at the University of Nottingham
The article you point to talks about how the University of Nottingham bought a bunch of XServes; according to that artcile, Apple didn't donate any equipment, let alone sponsor any research.
Thanks for illustrating my point so well: even the best examples of Apple research you could come up with are pathetic.
When you have an autonomous vehicle project to complete, you need an OS that runs on exactly ONE piece of hardware, not a variety. If a particular platform (hardware + OS) suits your requirements, it should obviously be considered.
I think your problem is that you have no concept of how real-time systems and robots are built. Most of them, sooner or later, become collections of dozens of embedded systems, and many of those need to be programmed individually.
How are robotics tasks related to the OS? Got any pointers to this large body of robotics code that only runs on Linux?
Only in cases where the OS itself is modified does access to the OS source code matter. Are you talking about application-level code or kernel code?
Yes, and the OS kernel needs to be modified to run, say, on one of the many embedded systems that you can buy. For example, we're using a bunch of intelligent cameras in our work, and they run embedded Linux inside the camera. We have dozens of other embedded systems running Linux that couldn't possibly run Windows. And those embedded systems don't run stripped down Linux systems, they are fully functional, comfortable Linux environments. Even if you managed to put Windows on one of those devices, it would, for all practical purposes, still be a different OS from anything you are used to.
My point was that the choice of OS isn't all that important.
You merely keep making the same point over and over again, that from a technical point of view, Windows XP and Linux kernels are functionally similar. They are that, but it's irrelevant.
The issues are licensing, source code accessibility, range of available hardware platforms that the software runs on, minimum hardware requirements, and user community. And, I'm sorry, if you think that those issues don't matter when building or delivering products, you are both inexperienced and naive.
There are few ideas that are original to either Microsoft's or Apple's products. Most of their software features have either been acquired, copied from other products, or are based on academic work. And that's perfectly OK, that's the way things are supposed to work.
OS X, in particular, is, from the ground up, a copy of other people's ideas, technologies and software: the Mach kernel, the Cocoa GUI, Objective-C, gcc, vector graphics GUIs, hardware desktop graphics acceleration, the BSD userland, RSS, tabbing, smart folders, mouse sensitive corners, virtual desktops, translucency, shadows, desktop search, mail reader spam filtering, desktop widgets--you name it, it almost certainly was invented and implemented somewhere other than at Apple first. But that's OK: Apple makes good choices in what they copy and they implement it well.
In some sense, part of Microsoft's problem is that they aren't copying enough. When Microsoft copies stuff from other people, they are usually successful with it. When Microsoft comes up with something original, they often fail. The reason why a lot of their "innovations" aren't widely used in the market is not because nobody thought of them before, it's because they didn't work well when other people tried them before.
It doesn't bother me that Apple is not innovative; I think their focus on design and copying proven technologies actually makes their systems better. What bothers me is that Apple isn't doing their share to fund innovation. Microsoft is investing heavily in research, both in their own research labs and grants to universities. Those investments don't necessarily lead directly to Microsoft products, but they make sure that 10-20 years from now, there will still be innovations for people to use. Apple is a bunch of cheapskates; they don't have a research lab and they don't support research or education at universities. Apple should be ashamed when they try to pass themselves off as "innovative".
OK, that may be a reason they believe they need Windows, and it's understandable. However, I think it's not a good reason. In my experience (and I work a lot with cameras), many high-tech cameras either conform to standard protocols and work with drivers that alrady ship with Linux, or their vendors supply Linux drivers.
The few times where we thought we needed a Windows-only camera for some special feature it supported have always been disappointments; generally, companies seem to do Windows-only drivers mainly because they don't have a lot of money to invest in driver and software support, but in that case, even their Windows drivers and software tend to be not very good either.
Maybe they were using something like.NET that has a nice dev environment on Windows?
"Nice dev environments" used to be a reason, but not anymore..NET also has several nice dev environments on Linux. So do C, C++, Java, and embedded Java.
You lost me. First, I have no idea why a team needs a "community" to develop an autonomous vehicle. I assume your references to "source code" and "non-disclosure agreements" implies that one would need to modify the OS in order to implement an autonomous vehicle, which is extremely unlikely.
People may or may not need to modify the OS themselves. But what they definitely need is an OS that runs on a variety of different embedded devices, chipsets, etc. They also need an OS that there is a large existing body of code for real-time robotics tasks. The fact that Linux is open source has allowed vendors and research groups to create and share the code and modifications that address those needs.
In any case, you're asking the wrong question. The question shouldn't be "why Linux", the question should be "why Windows". It's just a fact that Linux is dominating this space, and the fact that it's free is an added bonus. I simply don't see any reason to use Windows; what advantages do you think Windows has over Linux for these applications?
I keep seeing this and have to ask.... why does having the source to the Linux kernel matter for robotics? It seems that many people post saying this is a big deal. Unless there are kernel modifications required to support something, the closest to dorking around in the kernel that any of the groups would have to do is write a device driver.
First of all, it's not just the groups themselves that do the kernel hacking; the fact that it's open source means that vendors not only can modify the kernel for their hardware, but also is not disincentivized by restrictive licenses from doing so. With Linux, a vendor can be assured that the software, updates, and their modifications will be available to them in perpetuity and will be supported by a large community, for free; with Windows, they can't even be assured that the next version can even be made to run on their hardware.
What kind of modifications? Device drivers are a big deal, and they are much easier in an open source OS because most drivers can be created by picking one of the thousands of existing drivers and modifying it slightly. Also, you can strip down the OS and remove unneeded features; Linux kernels can be tiny. And a lot of porting to new hardware involves deeper modifications than merely creating new device drivers; it requires changes to how devices are found, configured, enumerated, etc. In addition, both the Linux kernel and the Linux user environment can comfortably run in a few megabytes of memory--the development and windowing tools people have been using for the last couple of decades will work just fine; in contrast, embedded Windows is quite stripped down and has a lot of differences to regular Windows.
But basically, you are asking the wrong question. The real question should not be: "why not use Windows", the real question should be: "what significant features does embedded Windows have that justify the cost and hassle of licensing it"? So far, I have not seen a good answer to that. Visual Studio used to be an answer (and pretty much the only one), but even for that, there are excellent open source alternatives now.
I'm "lecturing" you because you made claims that implied that Apple did a better job with their malloc:
The Darwin version of malloc has some very interesting features; for example, it maintains a sanity-checking system that keeps you from free()-ing memory to a heap that wasn't malloced() from that heap. [...] I have no idea which malloc implementation is faster, but Darwin's generally seems more robust.
These aren't "interesting" features, they are bad design decisions in a standard library. The accumulation of those kinds of bad design decisions is what has forced Apple multiple times to start over again. While Apple has good taste in terms of features, the software industry would do well to stay away from emulating Apple's system architecture or design.
People notice that Windows XP is being used for this, Microsoft gets free publicity, and people like you still keep whining.
The real question is: why did the UFL team bother using Windows XP in the first place? It costs a lot of money, you can't get source code for it, there is much less robotics work being done in it than in Linux, and there are fewer tools for robotics available for it.
So, can you answer the question: why were they using XP, when the obvious choice would have been Linux in this application? Did they get a grant?
I'm sure the same could be done with just about any OS at the "helm".
Purely technologically, you are probably right. In the real world, you are wrong. That has nothing to do with technological differences, it has to do with community, source code, non-disclosure agreements, and tools, and those are quite limited for Windows XP compared to Linux. Using Windows XP to run an autonomous vehicle is quite unusual because a lot of non-technological constraints make it a hard thing to do.
Using XP to run these kinds of systems is noteworthy because it's highly unusual. Almost all robots run Linux or special embedded systems, and for good reason: XP is not a good platform for building robots on. No, that's not because of stability issues, it's because there is almost no robot building community around it, because it's not intended for these kinds of applications, and because it's hard to get even partial source code for it.
Microsoft has seen the writing on the wall, which is why they are trying to catch up in the robotics area, but it's doubtful they ever will be more than a fringe player.
If you want zones or similar features on Linux, use a different malloc library; the fact that glibc performs little error checking and provides few extra features is deliberate. Putting non-standard functionality into standard system libraries is not a nice thing to do because it misleads developers into thinking that non-standard features are standard.
Why should I be "unbiased"? Adversaries like China, Iran, Syria, and Al Qaida couldn't have hoped for a better ally than Bush and the Republicans: they have wasted hundreds of billions of tax payer dollars in Iraq, have done enormous damage to US credibility and influence abroad, have run huge deficits, have done grave damage to the economy, have dismantled civil rights and protections, and have missed pretty every opportunity to actually strengthen the military and the social fabric domestically.
If America has shifted Rightward in the tug-of-war of public opinion, it's not because they're the only ones pulling on the rope, it's because the Left lost their anchor man (the Soviet Union and communism in general) in the early '90s.
Worker's rights, women's rights, universal suffrage, gay rights, minority rights, unions, good working conditions, social justice, social security, and progressive taxation were all strong social and political movements in the US at the beginning of the 20th century. And just to make sure that even a complete dope like you understands the point: that's long before the KGB even existed.
The Left has been struggling along since then. Other Leftward FUD-mantras (Greenpeace, global warming (ice ages before that), freshwater, pollution, gay rights, ACLU, PETA, globalisation, etc.) all have turned out to be too lightweight/marginal to have any actual PULL. Although an Inconvenient Truth was a healthy tug on the line, its messenger was too obviously politically motivated to have much credibility, either.
Yes, you keep pointing out that progressive and liberal ideas are having a hard time in the US right now. But the fact that a many US voters don't believe that those issues are real doesn't make them go away.
History has shown again and again that right-wing populism--a mix of family values, religious conservatism, anti-immigration policies, and corporatism--gets people elected. History has also shown again and again that it has disastrous consequences for nations in the long term.
But it's also a question of quantity, and the side with the deeper pockets can scream louder and harder and move the debate to their side. And that's what's been happening.
ObjC has introspection, dynamic binding, (now) optional garbage collection, (always) a very easy retain-count allocation system, really easy-to-learn constructs
That's all true, but there are huge practical problems: it also lacks a language standard, has holes in its type system, and, until recently, had no platform support outside NeXT/OSX and no significant implementations outside NeXT/Apple. Apple seems to be trying to fix some of those issues now, but that's about 10-20 years too late.
Technically, Objective C could have become a major player; practically, Jobs screwed up badly and effectively killed Objective C in the real world. Objective C is having a small renaissance, but it will never achieve the kind of sweeping success it could have had.
I'd like to know why isn't ObjC more popular outside Apple (and NeXT) circles?
For a long time, there was no usable free compiler available. And the reason for that is that NeXT only fulfilled the letter, but not the spirit of the GPL: they built their Objective C compiler on top of gcc, but they only gave back their modification under threat of a lawsuit, and then in a form that wasn't very usable.
If NeXT had given a usable Objective C frontend to GNU (as they should have under the GPL), and donated a usable Objective C standard library, there's a good chance that Objective C would be wildly popular on UNIX and Linux, because it was just the kind of language people needed in the 80's and 90's. Instead, C++, Java, and C# have taken over that void.
Lack of a use community has also kept Objective C from evolving; garbage collection should have and could have been added a decade ago, and there are some type safety issues in Objective C that also could have gotten fixed.
If apple switched to Linux or FreeBSD's kernel, (lets assume FreeBSD becasue thats what userland is) they would probally have to release closed source drivers for some products to keep vendors happy. This would outrage a very vocal minority
Apple has never given a damn whether they outrage anybody. Also, I don't see anybody in the BSD community complaining about Apple's current proprietary uses of BSD, so why should they start complaining if Apple's uses become more open?
I doubt there will be a hypervisor involved, at least a thin one. The CPU can handle OS virtualization, the "hypervisor" can probally live in firmware.
This is kinda a incoherent justification for GC. Supposedly the reason we need GC in the first place is so programmers without enough ability/experience/care don't screw up and forget to deallocate something. If using GC requires special knowledge training and optimization of GC then the argument for GC in the first place now doesn't go through
Without GC, good programmers produce fast and correct code, while bad programmers produce craches both in their own and other people's code.
With GC, good programmers still produce fast and correct code--and take about the same amount of time to do it, while bad programmers merely produce inefficient software and have bugs point right back to their own code.
However, it's wrong to critisize someone for not being a GC expert as the very point of GC is to make programming work with less expertise/hassle.
No, that's not the point. The point of GC is to protect people like me from people like you, not to make anyone's life easier (it may do that, too, but that's merely a side effect).
If the GC doesn't JUST WORK for the vast majority of apps it is the fault of the people who did the GC not the poor guy who has to select a different GC strategy or optimize his code around the GC.
The GC "just works" for the vast majority of apps, but if you do something stupid, then you'll get poor performance. That's a lot better than with a manual storage allocator where, if you do something stupid, your program crashes.
it is the fault of the people who did the GC not the poor guy who has to select a different GC strategy or optimize his code around the GC.
"Selecting a GC strategy" isn't hard: if your GC supports it, you simply tell it "I want real-time/interactive/batch performance". What you need is a memory management strategy, and those are pretty much the same with or without GC: avoid generating garbage and reuse objects.
I'll be the first to admit that Java is easy to use and has some powerful features. At the same time, I wouldn't write an OS or a device driver in it. Objective C, like C++, was an attempt to retrofit OO features onto a highly machine-oriented language. In the abstract, I think that is a foolish thing to do but, compared with the original C++ grammar, I think ObjC was a better job.
But the fact is that people are using Objective C for programming applications and web services. Since they do, it makes sense to try to improve Objective C. Objective C could be transformed into a language with the safety and convenience of Smalltalk, C-like access to machine features and C-style APIs, and excellent runtime performance, while still preserving the expertise and existing investment in software. I'm just not sure that Apple's engineers are up to the challenge; we'll have to see.
Installing a server using SuSE, Redhat, or Ubuntu is much simpler than using Windows; with the Linux systems, after you select what you want to run, it installs and just runs, and it comes with excellent GUIs for configuring it.
In contrast, getting a real-world server set up on Windows requires hours of third party software installation and configuration until it all fits together, if it ever does.
Between Parallels and VMWare, there is really no need for Virtual PC. And I suspect Xen and various forms of user mode Linux are going to become available for OS X at some point, too.
To add to the complexity, it must also navigate and motivate itself; a Segway's navigation system takes advantage of the sensors and processor installed in all of its cargo (a handy feature!) to offset the 'heavy lifting' of directional goals.
Segways are already shipping a robotics platform, and it's being used in mobile robots.
Maybe you can explain what you think the advantage of this system over a Segway-based mobile robot is.
There is no "sooner or later" in a one-day competition. Like any project, you look at the requirements and then you choose implementation, not the other way around.
These competitions aren't "like any other project"; they are milestones in long-running research programs.
I'm familiar with that site. But I didn't find a large body of Linux-only robotics code there. Got a more specific link?
You asked why the OS matters to robotics and this is why: there are hundreds of different kinds of embedded and real-time Linux systems to suit every need. For most of the higher-level stuff, the OS matters less, since those libraries can be ported.
If you proposed to your team that this vehicle should be built using "dozens of embedded systems", I'd be surprised if anyone agreed.
I suggest you have a look at their system architecture.
I realize I may not have as much experience as you. 20 years of development isn't very much, I know. And having worked on videogames that sold millions of copies, I probably don't have the extensive product development experience you do.
Thanks for confirming that you're out of your depth: you have no experience with real-time or embedded systems, and you have no idea about the purpose or function of competitions like these.
But tell me: with your experience of video game development, how many games have you delivered for Windows? How many for Linux? Did you work on multiple generations of the same game family and did you rewrite everything from scratch? Still think that platforms, tools, and continuity don't matter?
But the debate here is between Windows and OS X, not Unix.
Why the hell would anybody care whether Microsoft or Apple puts a feature into their OS a few months earlier?
The two things that matter are:
(1) Who invented the feature in the first place, because those are the people we want to give our money to so that they can come up with more good stuff.
(2) If it's a useful feature, how can we make sure that everybody copies it as quickly as possible? Yes, it is beneficial to users if Windows, OS X, Gnome, KDE, and all other desktops quickly converge on the most useful features and UI standards so that people can switch between them easily, competition drives down cost, and companies are forced to come up with something new again.
Note that (1) is usually neither Microsoft nor Apple; so, if you think you're doing something for innovation and the betterment of the world by buying Apple products, think again. Buy Apple because they make well-designed products. But when it comes to innovation, Apple has been pretty much thriving for the past two decades on being a cheapskate and a copycat.
Something that had prior existance is by definition *not* innovative
Hence the double quotes.
translation: MS is really innovative.
You're such a zealot and so eager to put words into my mouth that you don't even see the first sentence of my posting: "There are few ideas that are original to either Microsoft's or Apple's products."
A summary of research projects conducted over the past two decades
A site on K-12 education studies that cites five "research" studies? You must be kidding.
Where are Apple's Turing award winners? Where are Apple's academic research grants for computer science research? Where are the conference and journal papers published by Apple researchers? There's nothing. By all accepted measures of research success, Apple is a complete failure.
Go look at research.microsoft.com, www.parc.com, www.research.ibm.com, and other corporate research lab sites to see what kind of activity goes on there. Try to find equivalent records of refereed publications, university sponsorship, university collaborations, honors, and credentials at Apple; there are none.
Genome Research at the University of Nottingham
The article you point to talks about how the University of Nottingham bought a bunch of XServes; according to that artcile, Apple didn't donate any equipment, let alone sponsor any research.
Thanks for illustrating my point so well: even the best examples of Apple research you could come up with are pathetic.
When you have an autonomous vehicle project to complete, you need an OS that runs on exactly ONE piece of hardware, not a variety. If a particular platform (hardware + OS) suits your requirements, it should obviously be considered.
I think your problem is that you have no concept of how real-time systems and robots are built. Most of them, sooner or later, become collections of dozens of embedded systems, and many of those need to be programmed individually.
How are robotics tasks related to the OS? Got any pointers to this large body of robotics code that only runs on Linux?
This is a good start to find out about real-time and embedded Linux: http://www.linuxdevices.com/
Only in cases where the OS itself is modified does access to the OS source code matter. Are you talking about application-level code or kernel code?
Yes, and the OS kernel needs to be modified to run, say, on one of the many embedded systems that you can buy. For example, we're using a bunch of intelligent cameras in our work, and they run embedded Linux inside the camera. We have dozens of other embedded systems running Linux that couldn't possibly run Windows. And those embedded systems don't run stripped down Linux systems, they are fully functional, comfortable Linux environments. Even if you managed to put Windows on one of those devices, it would, for all practical purposes, still be a different OS from anything you are used to.
My point was that the choice of OS isn't all that important.
You merely keep making the same point over and over again, that from a technical point of view, Windows XP and Linux kernels are functionally similar. They are that, but it's irrelevant.
The issues are licensing, source code accessibility, range of available hardware platforms that the software runs on, minimum hardware requirements, and user community. And, I'm sorry, if you think that those issues don't matter when building or delivering products, you are both inexperienced and naive.
There are few ideas that are original to either Microsoft's or Apple's products. Most of their software features have either been acquired, copied from other products, or are based on academic work. And that's perfectly OK, that's the way things are supposed to work.
OS X, in particular, is, from the ground up, a copy of other people's ideas, technologies and software: the Mach kernel, the Cocoa GUI, Objective-C, gcc, vector graphics GUIs, hardware desktop graphics acceleration, the BSD userland, RSS, tabbing, smart folders, mouse sensitive corners, virtual desktops, translucency, shadows, desktop search, mail reader spam filtering, desktop widgets--you name it, it almost certainly was invented and implemented somewhere other than at Apple first. But that's OK: Apple makes good choices in what they copy and they implement it well.
In some sense, part of Microsoft's problem is that they aren't copying enough. When Microsoft copies stuff from other people, they are usually successful with it. When Microsoft comes up with something original, they often fail. The reason why a lot of their "innovations" aren't widely used in the market is not because nobody thought of them before, it's because they didn't work well when other people tried them before.
It doesn't bother me that Apple is not innovative; I think their focus on design and copying proven technologies actually makes their systems better. What bothers me is that Apple isn't doing their share to fund innovation. Microsoft is investing heavily in research, both in their own research labs and grants to universities. Those investments don't necessarily lead directly to Microsoft products, but they make sure that 10-20 years from now, there will still be innovations for people to use. Apple is a bunch of cheapskates; they don't have a research lab and they don't support research or education at universities. Apple should be ashamed when they try to pass themselves off as "innovative".
OK, that may be a reason they believe they need Windows, and it's understandable. However, I think it's not a good reason. In my experience (and I work a lot with cameras), many high-tech cameras either conform to standard protocols and work with drivers that alrady ship with Linux, or their vendors supply Linux drivers.
The few times where we thought we needed a Windows-only camera for some special feature it supported have always been disappointments; generally, companies seem to do Windows-only drivers mainly because they don't have a lot of money to invest in driver and software support, but in that case, even their Windows drivers and software tend to be not very good either.
Maybe they were using something like .NET that has a nice dev environment on Windows?
.NET also has several nice dev environments on Linux. So do C, C++, Java, and embedded Java.
"Nice dev environments" used to be a reason, but not anymore.
You lost me. First, I have no idea why a team needs a "community" to develop an autonomous vehicle. I assume your references to "source code" and "non-disclosure agreements" implies that one would need to modify the OS in order to implement an autonomous vehicle, which is extremely unlikely.
People may or may not need to modify the OS themselves. But what they definitely need is an OS that runs on a variety of different embedded devices, chipsets, etc. They also need an OS that there is a large existing body of code for real-time robotics tasks. The fact that Linux is open source has allowed vendors and research groups to create and share the code and modifications that address those needs.
In any case, you're asking the wrong question. The question shouldn't be "why Linux", the question should be "why Windows". It's just a fact that Linux is dominating this space, and the fact that it's free is an added bonus. I simply don't see any reason to use Windows; what advantages do you think Windows has over Linux for these applications?
I keep seeing this and have to ask.... why does having the source to the Linux kernel matter for robotics? It seems that many people post saying this is a big deal. Unless there are kernel modifications required to support something, the closest to dorking around in the kernel that any of the groups would have to do is write a device driver.
First of all, it's not just the groups themselves that do the kernel hacking; the fact that it's open source means that vendors not only can modify the kernel for their hardware, but also is not disincentivized by restrictive licenses from doing so. With Linux, a vendor can be assured that the software, updates, and their modifications will be available to them in perpetuity and will be supported by a large community, for free; with Windows, they can't even be assured that the next version can even be made to run on their hardware.
What kind of modifications? Device drivers are a big deal, and they are much easier in an open source OS because most drivers can be created by picking one of the thousands of existing drivers and modifying it slightly. Also, you can strip down the OS and remove unneeded features; Linux kernels can be tiny. And a lot of porting to new hardware involves deeper modifications than merely creating new device drivers; it requires changes to how devices are found, configured, enumerated, etc. In addition, both the Linux kernel and the Linux user environment can comfortably run in a few megabytes of memory--the development and windowing tools people have been using for the last couple of decades will work just fine; in contrast, embedded Windows is quite stripped down and has a lot of differences to regular Windows.
But basically, you are asking the wrong question. The real question should not be: "why not use Windows", the real question should be: "what significant features does embedded Windows have that justify the cost and hassle of licensing it"? So far, I have not seen a good answer to that. Visual Studio used to be an answer (and pretty much the only one), but even for that, there are excellent open source alternatives now.
These aren't "interesting" features, they are bad design decisions in a standard library. The accumulation of those kinds of bad design decisions is what has forced Apple multiple times to start over again. While Apple has good taste in terms of features, the software industry would do well to stay away from emulating Apple's system architecture or design.
People notice that Windows XP is being used for this, Microsoft gets free publicity, and people like you still keep whining.
The real question is: why did the UFL team bother using Windows XP in the first place? It costs a lot of money, you can't get source code for it, there is much less robotics work being done in it than in Linux, and there are fewer tools for robotics available for it.
So, can you answer the question: why were they using XP, when the obvious choice would have been Linux in this application? Did they get a grant?
I'm sure the same could be done with just about any OS at the "helm".
Purely technologically, you are probably right. In the real world, you are wrong. That has nothing to do with technological differences, it has to do with community, source code, non-disclosure agreements, and tools, and those are quite limited for Windows XP compared to Linux. Using Windows XP to run an autonomous vehicle is quite unusual because a lot of non-technological constraints make it a hard thing to do.
Using XP to run these kinds of systems is noteworthy because it's highly unusual. Almost all robots run Linux or special embedded systems, and for good reason: XP is not a good platform for building robots on. No, that's not because of stability issues, it's because there is almost no robot building community around it, because it's not intended for these kinds of applications, and because it's hard to get even partial source code for it.
Microsoft has seen the writing on the wall, which is why they are trying to catch up in the robotics area, but it's doubtful they ever will be more than a fringe player.
If you want zones or similar features on Linux, use a different malloc library; the fact that glibc performs little error checking and provides few extra features is deliberate. Putting non-standard functionality into standard system libraries is not a nice thing to do because it misleads developers into thinking that non-standard features are standard.
Nice unbiased word choices. LOL.
Why should I be "unbiased"? Adversaries like China, Iran, Syria, and Al Qaida couldn't have hoped for a better ally than Bush and the Republicans: they have wasted hundreds of billions of tax payer dollars in Iraq, have done enormous damage to US credibility and influence abroad, have run huge deficits, have done grave damage to the economy, have dismantled civil rights and protections, and have missed pretty every opportunity to actually strengthen the military and the social fabric domestically.
If America has shifted Rightward in the tug-of-war of public opinion, it's not because they're the only ones pulling on the rope, it's because the Left lost their anchor man (the Soviet Union and communism in general) in the early '90s.
Worker's rights, women's rights, universal suffrage, gay rights, minority rights, unions, good working conditions, social justice, social security, and progressive taxation were all strong social and political movements in the US at the beginning of the 20th century. And just to make sure that even a complete dope like you understands the point: that's long before the KGB even existed.
The Left has been struggling along since then. Other Leftward FUD-mantras (Greenpeace, global warming (ice ages before that), freshwater, pollution, gay rights, ACLU, PETA, globalisation, etc.) all have turned out to be too lightweight/marginal to have any actual PULL. Although an Inconvenient Truth was a healthy tug on the line, its messenger was too obviously politically motivated to have much credibility, either.
Yes, you keep pointing out that progressive and liberal ideas are having a hard time in the US right now. But the fact that a many US voters don't believe that those issues are real doesn't make them go away.
History has shown again and again that right-wing populism--a mix of family values, religious conservatism, anti-immigration policies, and corporatism--gets people elected. History has also shown again and again that it has disastrous consequences for nations in the long term.
But it's also a question of quantity, and the side with the deeper pockets can scream louder and harder and move the debate to their side. And that's what's been happening.
ObjC has introspection, dynamic binding, (now) optional garbage collection, (always) a very easy retain-count allocation system, really easy-to-learn constructs
That's all true, but there are huge practical problems: it also lacks a language standard, has holes in its type system, and, until recently, had no platform support outside NeXT/OSX and no significant implementations outside NeXT/Apple. Apple seems to be trying to fix some of those issues now, but that's about 10-20 years too late.
Technically, Objective C could have become a major player; practically, Jobs screwed up badly and effectively killed Objective C in the real world. Objective C is having a small renaissance, but it will never achieve the kind of sweeping success it could have had.
I'd like to know why isn't ObjC more popular outside Apple (and NeXT) circles?
For a long time, there was no usable free compiler available. And the reason for that is that NeXT only fulfilled the letter, but not the spirit of the GPL: they built their Objective C compiler on top of gcc, but they only gave back their modification under threat of a lawsuit, and then in a form that wasn't very usable.
If NeXT had given a usable Objective C frontend to GNU (as they should have under the GPL), and donated a usable Objective C standard library, there's a good chance that Objective C would be wildly popular on UNIX and Linux, because it was just the kind of language people needed in the 80's and 90's. Instead, C++, Java, and C# have taken over that void.
Lack of a use community has also kept Objective C from evolving; garbage collection should have and could have been added a decade ago, and there are some type safety issues in Objective C that also could have gotten fixed.
Those "interesting features" are nothing new, and you can get them on Linux, they're just not turned on by default (because they have overhead).
Retain/release and all that are implemented by the Objective C libraries, not libc.
If apple switched to Linux or FreeBSD's kernel, (lets assume FreeBSD becasue thats what userland is) they would probally have to release closed source drivers for some products to keep vendors happy. This would outrage a very vocal minority
Apple has never given a damn whether they outrage anybody. Also, I don't see anybody in the BSD community complaining about Apple's current proprietary uses of BSD, so why should they start complaining if Apple's uses become more open?
I doubt there will be a hypervisor involved, at least a thin one. The CPU can handle OS virtualization, the "hypervisor" can probally live in firmware.
It may well live in firmware; what's your point?
This is kinda a incoherent justification for GC. Supposedly the reason we need GC in the first place is so programmers without enough ability/experience/care don't screw up and forget to deallocate something. If using GC requires special knowledge training and optimization of GC then the argument for GC in the first place now doesn't go through
Without GC, good programmers produce fast and correct code, while bad programmers produce craches both in their own and other people's code.
With GC, good programmers still produce fast and correct code--and take about the same amount of time to do it, while bad programmers merely produce inefficient software and have bugs point right back to their own code.
However, it's wrong to critisize someone for not being a GC expert as the very point of GC is to make programming work with less expertise/hassle.
No, that's not the point. The point of GC is to protect people like me from people like you, not to make anyone's life easier (it may do that, too, but that's merely a side effect).
If the GC doesn't JUST WORK for the vast majority of apps it is the fault of the people who did the GC not the poor guy who has to select a different GC strategy or optimize his code around the GC.
The GC "just works" for the vast majority of apps, but if you do something stupid, then you'll get poor performance. That's a lot better than with a manual storage allocator where, if you do something stupid, your program crashes.
it is the fault of the people who did the GC not the poor guy who has to select a different GC strategy or optimize his code around the GC.
"Selecting a GC strategy" isn't hard: if your GC supports it, you simply tell it "I want real-time/interactive/batch performance". What you need is a memory management strategy, and those are pretty much the same with or without GC: avoid generating garbage and reuse objects.
I'll be the first to admit that Java is easy to use and has some powerful features. At the same time, I wouldn't write an OS or a device driver in it. Objective C, like C++, was an attempt to retrofit OO features onto a highly machine-oriented language. In the abstract, I think that is a foolish thing to do but, compared with the original C++ grammar, I think ObjC was a better job.
But the fact is that people are using Objective C for programming applications and web services. Since they do, it makes sense to try to improve Objective C. Objective C could be transformed into a language with the safety and convenience of Smalltalk, C-like access to machine features and C-style APIs, and excellent runtime performance, while still preserving the expertise and existing investment in software. I'm just not sure that Apple's engineers are up to the challenge; we'll have to see.
Installing a server using SuSE, Redhat, or Ubuntu is much simpler than using Windows; with the Linux systems, after you select what you want to run, it installs and just runs, and it comes with excellent GUIs for configuring it.
In contrast, getting a real-world server set up on Windows requires hours of third party software installation and configuration until it all fits together, if it ever does.
Between Parallels and VMWare, there is really no need for Virtual PC. And I suspect Xen and various forms of user mode Linux are going to become available for OS X at some point, too.