Resh and ReshPlay are developed by Nokia Bell Labs as part of the multi-robot orchestration research project.Launch ReshPlay
Programming dynamic, heterogeneous teams of robots to perform coordinated tasks is hard. Even simple tasks can require a daunting amount of logic. The program must include logic to handle the wide variety of scenarios that can occur while the program is executing. For example, the program must deal with the following questions:
- What robots are currently available for use?
- What are their capabilities?
- Where is each robot located?
- What is the geometry of their environment?
- Are they currently engaged in other tasks?
- Which robots can perform which parts of which tasks at the same time?
- What should be done when a robot is added to or deleted from the pool, or when a robot completes, or fails to complete, some part of a task? And so on.
The essential logic of the program is soon overwhelmed by, and intertwined with, code to handle these matters. Our goal is: To enable the programmer to cleanly express the essential task-sequencing logic, and to take care of all other matters for the programmer. This separation can be achieved by burying the nonessential code underneath an API in a traditional programming language. We take a different approach by introducing Resh, a domain-specific language for the problem. The advantage of this approach is that one is free to invent convenient language constructs that may be awkward to emulate with an API. In Resh, the programmer expresses only the task-sequencing logic; other matters are handed by the associated runtime.
Simple commands, complex actions: How Bell Labs is making robots accessible to everyone
The future of robotics is in heterogenous multi-robot systems. As robotic capabilities grow wider and deeper, we will need to combine those capabilities in new ways to perform new functions. And as we scale those functions, the result will be larger and more complex systems utilizing hundreds if not thousands of robots, each performing their individual tasks. Therein lies the challenge: The actions of these robots must be carefully orchestrated.
The paper linked below describes Resh, a new, statically typed, interpreted programming language and associated runtime for orchestrating multirobot systems. The main features of Resh are: (1) It offloads much of the tedious work of programming such systems away from the programmer and into the language runtime; (2) It is based on a small set of temporal and locational operators; and (3) It is not restricted to specific robot types or tasks. The Resh runtime consists of three engines that collaborate to run a Resh program using the available robots in their current environment. Read this paper which describes both Resh and its runtime and gives examples of its use.
We have opened to the public a playground for the language. The playground, which we call ReshPlay, is available at https://resh.io/play. We are encouraging anyone interested in the topic to visit the playground and experiment with implementing coordinated robotic tasks using an arbitrary set of mock robots.