A Standardized OS For Robots
Hugh Pickens writes "The New Scientist reports that at present, all robot software is designed uniquely, even for parts common to all robots but that could be about to change as roboticists have begun to think about what robots have in common and what aspects of their construction can be standardized, resulting in a basic operating system everyone can use. 'It's easier to build everything from the ground up right now because each team's requirements are so different,' says Anne-Marie Bourcier of Aldebaran Robotics but Bourcier sees this changing if robotics advances in a manner similar to personal computing where a common operating system allowed programmers without detailed knowledge of the underlying hardware and file systems to build new applications and build on the work of others. 'Robotics is at the stage where personal computing was about 30 years ago,' says Chad Jenkins of Brown University. 'But at some point we have to come together to use the same resources.' This desire has its roots in frustration, says Brian Gerkey of the robotics research firm Willow Garage. If someone is studying object recognition, they want to design better object-recognition algorithms, not write code to control the robot's wheels. "You know that those things have been done before, probably better," says Gerkey, who hopes to one day see a robot "app store" where a person could download a program for their robot and have it work as easily as an iPhone app."
This is actually quite interesting for me, since we've gone through (or are going through) a similar thing in the MFP (Multi Functional Peripheral (Printer/Scanner/Copier/Fax machine)) manufacturer industry. While it may be much less glamorous than the world of robotics, we do essentially need to deal with a lot of the same concepts.
Essentially, an MFP has two main "parts" to the firmware. One is Engine control, which tells all the physical bits how and when to move, temperature control for the fuser, paper take-up, feeding mechanisms, electrostatic charging, laser control and so on. The other is the "user" part, where we deal with how to access networks, interpreting print jobs, user authentication systems, file format conversion, user interface and so on.
The "user" part generally is pretty standardised for each individual manufacturer across the manufacturer's range. As a base, it's not uncommon to run things on an RTOS such as some flavours of Linux or VxWorks.
For the "Engine Control" part however, it's a lot more chaotic. Almost every machine from every manufacturer is going to be vastly different with code being rewritten many times for what is essentially doing the same thing, just with a bit of different hardware. My day job is as a developer for these things, but pretty much exclusively in the "user" part of things and I haven't even touched the Engine control. I do however talk from time to time with the engine guys, and they're in DESPERATE need of some standardisation. Personally, I'd love to see standardisation across the industry, but I doubt it'll happen. If we ever do get there (which they appear to be heading towards, slowly), we'll probably end up with a different solution for everything in each different manufacturer, which is the current state of play for the "user" part also.
My book about LSD and Self-Discovery
Also on facebook as: DroppingAcidDaleBewan
As far as I know we don't have a standard OS for cell phones, do we? The problem with robots is the huge variations in platform ability. And I personally sure don't want a least common denominator solution. With the PC, you had one kind of hardware, the IBM PC, that everyone cloned, and that made a common OS a lot more practical. Cell phones & Robots have taken a completely different path so far. Yes, I dabble in robots - a hitec RoboNova. It's fairly limited as to processing power, but comes with an adequate RoboBasic language. If I really wanted to do more serious things with it, I would bolt on a PC (yes they have them for it now). In that respect, there is already a common OS available - the same common OS that any PC can run. And yes, it will run DOS, Windows and/or CE, and linux - pick your poison.
slashdot troll = you make a compelling argument I do not like the implications of.
Sure, that makes sense from a technical perspective. The problem is the legal perspective... because "fewer errors" does not equal "no errors". Bugs will still happen. And who takes responsibility when a bug results in a robot suddenly whipping around and killing someone? (We just talked about OSS & liability last week on Slashdot.)
So, would you contribute to such a project when you might get summoned to court years later because someone misused a function you wrote, somebody died, and the developer blamed you? Even if you prove that it wasn't actually your fault, you're still out legal fees and time and stress. (And that's assuming you really didn't make a mistake...)
I recognize that this is a common FUD tactic against Linux. But Linux isn't generally used in situations where people could die if it fails. I'm not sure, given the legal landscape, any open-source OS could work in such situations.
PHEM - party like it's 1997-2003!
I think the classification schemes for the animal kingdom can provide insight for robotic development. The robotic community should pay attention to billions of years of evolution, and mine all the information possible :) There is a lot in common across all animal nervous systems (nerve conductors, synapses, brains, muscles, etc). Take the animal system for the eye for example - muscles, structures, nerves, synapses, and a brain to interpret. At the most fundamental levels, there is commonality in the types of cells used by animals. But there is incredible diversity in how they are implemented. One might compare the building blocks of the nervous systems to the robotic components, the way these components "work together" as the robotic OS, and the universe of ways they are implemented in animals as the "programs". Animals are categorized into Kingdom, Phylum, Class, Order, Family, Genus, and Species. In a very mature robotic development environment (many years from now), will we have similar classes of robots, with a set of category-specific OS subsystems and components? For example, the industrial robots mentioned above which are capable of accidentally moving a half-ton object as if it were a piece of paper will need a different OS subsystem than the Roomba, which is mostly harmless. Robots moving in water or air will belong to different categories, etc. Ultimately, if the animal system is a good model, robots will have some things in common, and much that is unique to their category.