23 Sep 2003 MartinCalsyn   » (Journeyer)

I've been doing a lot of thinking lately about the applicability of message-based systems and process calculii to robot programming. It seems that message-passing and process calculii (like the Pi-Calculus) would be extremely useful in implementing behavioral and subsumption programming for robots.

Forget the definition of 'process' that you know now and consider every behavior - in fact you could even consider every component of a behavior - to be a process. Consider that all processes run asynchronously and in parallel. Each process exposes a contract and the communication between processes is by messages.

Now, if your drivers and behaviors are processes and each exposes a contract and each communicates with each other via messages, you have

  • an excellent framework for distributed processing among processors within your robot and easy relocation of processes from one cpu to another
  • an excellent framework for cooperating with other robots - even those made by other builder/programmers since you need only agree on the process-contracts (note that process contracts document not only the message contents but the permissible ordering of messages)
  • support for real-time computing by prioritizing messages
  • a means of implementing behavior subsumption by redirecting, throttling or discarding messages.

    I'm currently trying to work up a framework that would allow for familiar C/C++ programming within a process- oriented-programming messaging-bus framework. Modules would be coded in C or C++ and described by contracts in an xml document. The modules could communicate to other modules only through messages and the framework would match messages to contracts (a key component here is that modules should not know about each other a-priori, but should be paired up solely because a message that was sent by one module matches the contract exposed by another.

    In any case, that's the path I am taking with my current work. Watch here or on the Scarab Robotics web site for more info.

  • Latest blog entries     Older blog entries

    X
    Share this page