Slashdot Mirror


Needed: A LAMP Stack For Robotics

waderoush writes "If you visit Menlo Park, CA-based Willow Garage, you'll meet a $400,000 humanoid robot called PR2 that has stereo vision, a pair of dextrous arms, and enough smarts to roam the building indepedently and even plug itself into the wall when it needs to recharge. But in a sense, PR2 is just a demo. The real action at Willow Garage is around ROS, the Robot Operating System, a free meta-operating system that's already being used by hundreds of roboticists around the world and may soon be handed over to an independent foundation analogous to the Apache Software Foundation. Brian Gerkey, Willow Garage's head of open source development, says 'What we need is a LAMP stack for robotics,' and hopes that ROS will jumpstart innovation in robotics in the same way Linux and other free software components provided the foundation for the Internet boom. Today's roboticists 'have to come at the problem with a very deep expertise in all aspects of robotics, from state estimation to planning to perception, which automatically limits the number of people capable of building new things,' Gerkey says. 'But by providing a basic toolset analogous to the LAMP stack, we can get to a point where all you need to know is how to write code and what you want your robot to do.'"

15 of 65 comments (clear)

  1. Cylons, terminators... It all means one thing. by gestalt_n_pepper · · Score: 3, Funny

    DON'T skimp on the LAMP stack testing.

    --
    Please do not read this sig. Thank you.
    1. Re:Cylons, terminators... It all means one thing. by iamgnat · · Score: 3, Insightful

      All I can think of is, do we really want the typical PHP "programmer" types writing code for robots? Really? It's bad enough what a SQL injection attack can do now, imagine what can happen when it effects something with arms to beat people over the head with (though if it could be directed at the programmer...).

    2. Re:Cylons, terminators... It all means one thing. by iamgnat · · Score: 2

      You seem to think because you see "PHP" that people barely capable of writing anything in the language will be writing code for something that requires rigorous quality control. Truth is, these "programmer" types as you put it are more likely to stick to what they know best and leave the technical stuff to people who know that best. Also, who's to say that these "programmer" types won't try to pretend like they know C, or Java, or SQL? A language is just a language, and anyone can learn any language, but it's how the language is used and the person using it that determines its usefulness to whatever it is applied to.

      The evidence is overwhelming that the average PHP programmer has no business writing code that sees the light of day. At one point something that would process credit cards would require "rigorous quality control", but now many such applications see a minimum of testing (because many companies view QA as more of a cost sink than Dev). It's not a fault of PHP itself, I think it is more a side effect of things like LAMP have drastically reduced the barriers of entry. My issue with these types of programmers is that they pick up a book or two and jump into it with no background understanding and then start following the advise/examples of people that did the same thing which perpetuates the bad things that allow things like SQL injection attacks and cross-site scripting attacks. You are correct, and I share the opinion, that languages are just languages and if you can learn one you can learn another. The difference with the more traditional languages, however, is that they don't have quite the immediate result of something like LAMP and don't have as many "build your e-commerce site in an hour" type tutorials (e.g. you don't see an abundance of sites/people trying to convince you that you can become a C programmer in hours/days with no experience). All languages have similar issues and the fault is on the programmer not knowing how to deal with them. My issue (and what I think you aren't understanding) is that this type of programmer doesn't understand what they don't know so they won't stop and ask themselves if they should leave it to someone else. PHP just seems to attract more than it's fair share of idiots (or maybe it just seems that way since PHP tends to be more public facing so the results of bad code are more obvious).

      I think in this case, it's the company that hires the "programmer" type who's responsible for any dangerous mishaps rather than the "programmer" him/herself. That probably would be enough motivation for that company to hire only the best developers to write code for their robots.

      Firstly, you obviously apparently needed me to add a /sarcasm tag. Secondly, history has again shown that companies are generally are in a race to the bottom for development costs. Bad/Inexperienced programmers (and it's not just PHP by any stretch) cost less than the rockstar programmer with decades of experience that really knows what they are doing. From a simple economics perspective a company will usually hire 2 $50k "Web programmers" than one $100k programmer because (until the damage has been done) it's hard to quantify the additional costs of extra time it takes to complete the project, time spent fixing "basic" defects, and the damage of security problems. And yes I am fully aware that salary has no bearing on quality, it's an example. I do, however, know that experienced programmers that can command high salaries can't compete Web/PHP space because they are competing with cheap labor and quality is not a factor (or a minimal one at best). Yes it is the companies fault for hiring inadequate talent, but that is little consolation to those with the talent that get passed over or the guy that had his arm ripped off because of a simple mistake that wasn't tested/validated very well.

      Also, in the case of open source robotics using a LAMP stack, it's assumed to be "use at your

    3. Re:Cylons, terminators... It all means one thing. by justforgetme · · Score: 2

      I propose they base it on a LARD stack!

      Linux
      Apache
      Riak
      Dart

      So that it will be web scale!

      --
      -- no sig today
    4. Re:Cylons, terminators... It all means one thing. by LordLimecat · · Score: 2

      GLAdOS, MySQL, and PHP?
      Sounds like a dangerous combination, to me.

  2. Follow-on question... by Shoten · · Score: 2

    How standardized is robotic hardware? With the LAMP stack, you're creating an environment with integrated components for OS, database, web services and application services so that you can build what you need from end-to-end. But it seems to me that with robotics, you have one more step to go: the kinetic/physical representation of things. Are there standards for the description of spatial relationships, feedback from sensors and movement directives? I'm not challenging the idea; I think it's great. But I'm curious about this one aspect of it, since I know very little about the robotics world and think that many of the people who will comment on this are in the same boat. (Thus, some clarity on this may improve the quality of comments...somewhat.)

    --

    For your security, this post has been encrypted with ROT-13, twice.
    1. Re:Follow-on question... by houstonbofh · · Score: 2

      How standardised is computer hardware? Linux runs on Intel, Aarm, alpha, PPC, RISC, Spark, IBM (as in AIX mainframe) processors, and more. The point is that a standard would develop a framework lowering the barrier to entry. As more people some in, both the hardware and the software will improve, lowering the barrier further. This is a good thing.

    2. Re:Follow-on question... by mhajicek · · Score: 2

      There are industry standards for CNC machines, which are a form of robot that's been in use for decades. Probably not particularly applicable though.

    3. Re:Follow-on question... by Lije+Baley · · Score: 2

      Yeah, how about a robust, resilient, and cheap USB i/o box, please.

      --
      Strange things are afoot at the Circle-K.
    4. Re:Follow-on question... by MightyYar · · Score: 2

      How standardized is robotic hardware?

      It depends on what you mean by "standardized". Sure, there's nothing directly analogous to a PC with "Intel Inside", but there certainly are a limited number of choices for any robot designer when it comes to any aspect of the design.

      Start with communications... you will quickly settle on a few choices - if millisecond latency is not an issue, you'll probably talk via ethernet or some serial bus, of which the choices are limited. If you need less latency, you'll chose a more traditional bus, of which the options are even more limited.

      Host/main CPUs are more or less restricted to the same ones that already run Linux.

      Servo control is a problem that can be solved in a generic way. Stepper control is the same.

      There are limited options when it comes to sensors, and most sensors of the same type will behave in ways that are similar. For instance, a home sensor is just going to read on or off, no matter what technology it uses. A pressure sensor will return some voltage level that linearly corresponds to pressure. An encoder will return some position. Etc.

      Sure, there are examples of things that won't be a good fit to the canned solutions, but it sure would be nice to be able to concentrate on those and let the framework handle the generic stuff. We write our own software for our entire machine (industrial robot) and right now the only libraries we can fall back on are vision libraries, which are already an excellent example of something that can be generically implemented. We buy ours for various reasons, but there are decent free libraries as well.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
  3. Shameless plug for the best robotics IDE by SomeKDEUser · · Score: 4, Informative

    https://aseba.wikidot.com/

    Not from me, but from a good friend. Need to programme distributed behaviour in swarms of robots with an easy-to-use IDE coupled with a simulator? Need to transparently switch between reality and simulation as well as have access to pre-programmed sensors and robots? Free software ?

    There you go.

  4. Linuxcnc + RTAI by LuxuryYacht · · Score: 4, Interesting

    Much of this is already in LinuxCNC
    http://www.linuxcnc.org/

    It's mostly used by developers to control CNC machines but it also includes support for non-Cartesian motion systems provided via custom kinematics modules. Available architectures include hexapods (Stewart platforms and similar concepts) and systems with rotary joints to provide motion such as PUMA or SCARA robots.

    http://linuxcnc.org/docs/html/man/man9/kins.9.html
    http://linuxcnc.org/docs/html/motion_kinematics.html

    We've use it to control some pretty complex robotic systems.

    --
    Quidquid latine dictum sit altum viditur
  5. why LAMP? by DragonTHC · · Score: 2, Funny

    why do you need a LAMP stack, is the robot going to run around updating its blog and posting crappy instamatic photos?

    --
    They're using their grammar skills there.
  6. Let the "P" Stand For "Probability" by LifesABeach · · Score: 2

    My minor experiences with robotics,(JetLine welders used for ISS), has given me more appreciation for the estimation qualities of Probability. If Udacity could offer a 12 week class on the concept of applied probability for a robotic trash can? For some of us, space management, hardware, and software can be figured out. Applied Probability is not trivial.

  7. There is - JAUS by Animats · · Score: 4, Interesting

    There is such a stack: Open JAUS. JAUS is the Joint Architecture for Unmanned Systems used by many military robotic and unmanned systems. It's somewhat dated, and has a more open-loop approach more suited to teleoperators than fully autonomous systems.

    Dealing with the time constraints in robotics rules out some of the approaches used in other software. Microsoft's Robotics Studio was built on a web-like approach, and it was a flop. Game programs tend to be tied to the display refresh rate, which isn't helpful in robotics. In robotic systems, there may be several subsystems with their own cyclic rate and processing delay, and they need to talk to each other. The inputs which have processing delays, like vision systems, produce outputs which represent the situation at some time in the past. Updates to the world model based on multiple sensors must all be synchronized to the time of the observation, not the time the data became available. This matters when you're moving fast. For slow robots, not so much. Many research robots are slow and pause a lot because they don't do this. That was the norm a few years ago, but it's not any more.

    Robotic systems tend to need hard real time control. That control can be quite complex, not just a simple servo loop. Inside the more advanced and agile robots, like BigDog, you tend to find QNX, not Linux. (Typical test for a hard real-time OS: hook up a square wave oscillator to an input, and a scope to an output. Put a high-priority program in the system which turns on the output when the input comes on. Watch the input to output delay on the scope. Load up the system with lower-priority tasks. If the input to output delay is ever substantially longer, (more than a few microseconds) the system is not hard real time. The "real time" variants of Linux have trouble getting down to 1ms, and 10ms of jitter is observed. In hard real time systems, 10us is more like it. Servo control in BigDog executes every 1ms, balance every 10ms.) However, as CPUs get faster, the limitations of Linux have become less of an issue.