Skip to main content

Simple commands, complex actions: How Bell Labs is making robots accessible to everyone

Four small autonomous robotic vehicles lined up in a row

Robots will be a critical part of our future. They will unload our trucks, deliver our packages, perform dangerous tasks at worksites and transport raw materials to assembly lines, which themselves will be operated by other robots. The robots that perform these tasks, however, won’t come in a single shape or size. Each will be highly specialized for its specific job. At the end of the day that is cheaper and more efficient than creating a single complex robot capable of performing every task.

The assembly line robotic arm will be optimized for its manufacturing job, while the robot vehicles delivering materials and handling finished goods will wheel freely throughout the factory. The robots that transport those goods will look much like the trucks and vans we see on the road today, except without drivers. And once at their destination, flying drone robots will deliver packages to our doorsteps.

The future of robotics is therefore 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.

Such an orchestration platform would guide these teams of robots, instructing them on how to collaborate toward achieving their global system objectives. The platform would optimize the utilization of individual robots and robot types for their unique capabilities. And most important, that orchestration platform would need to be flexible and easily configurable so that anyone can easily leverage it to manage the robots. Since that orchestration technology might be highly complex, that complexity must be hidden. Otherwise, none but robotics experts would ever be able to build, deploy and configure multi-robot systems effectively.

Simple commands into orchestration commands

Nokia Bell Labs aims to tackle the challenge of creating an intuitive, easy-to-program orchestration platform. To that end we have developed a new programming language and platform called Resh, which would enable someone with the most basic coding skills to take control of and manage a fleet of robots.

Simple commands, complex tasks

Named after the Phoenician letter 𐤓 -- which also means “head” – the Resh runtime handles the behind-the-scenes operation and management of every robot while largely automating many of the tedious aspects of programming multi-robot systems. Resh thus allows users to focus on the goals that they want to achieve using the robots.

Any program for a large robot system must include logic for handling a wide variety of scenarios that can occur while the program is executing. For instance, the program must determine which robots are currently available for use as well as what capabilities each available robot has. The program needs to know where each robot is located as well as the physical geometry of the environment they operate in. If a robot is currently engaged in another task, the program needs to understand the priority of those tasks and which new tasks take precedence. The program must even be “cognizant” of conflicts that might be created if two or more robots are activated concurrently. In a typical programming scenario, the logic of the immediate task at hand quickly becomes overwhelmed by code needed to handle all of these orchestration details – even the simplest task results in an enormously complex program.

Resh lets you express, in a simple and direct manner, the intent of the task you wish the robots to perform. The underlying runtime then automatically takes care of the how that task is achieved, who (which robot) should be doing what, and when and where each action will take place. For example, a programmer wishing for a robot to say “hello” at the lobby need only specify exactly that using a simple statement in Resh: ‘say(“hello”)@”lobby”’. The Resh runtime knows the physical environment surrounding the robot and therefore understands where the lobby is located and how to get there. Once there, Resh will instruct the robot to utter the “hello” greeting.

Similarly, a robotic pickup and delivery task can be expressed in just a few lines of code:

An expression titled pickup_deliver with parameters and instructions

The expression of tasks in such simple terms is possible thanks to the sophistication of the underlying Resh runtime system, which automatically handles the job of robot selection and action assignment, as well as continuously monitors the health and the activity of the robots within the group. In this respect, the Resh runtime behaves much like a traditional operating system, hiding all the tedious details while providing a clean and simple abstraction to the Resh programmer.

The language is not restricted to a certain robot type, manufacturer or set of capabilities. It supports third-party robotic vendors, as well as the robots home-grown at the Nokia Bell Labs robotic lab. Our researchers have already used it to program several different robotic systems, including an advanced ground-robot industrial-automation system for enterprises and a drone-based monitoring solution. We are now looking to receive input on Resh from the larger robotics community.

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. To learn more about Resh itself, you can read a paper we recently presented at the 2021 International Conference on Robotics and Automation. The paper and ReshPlay should give you all the tools that you need to get started orchestrating your own multi-robot tasks. All feedback is welcome and can be shared with us at play.resh@nokia.com.

Making robot systems accessible

Right now, Resh is a research prototype. As we further refine the sophistication of the Resh language and runtime, we believe that it could have broad impact on how we use robots in the future. Resh initially would make multi-robot systems more accessible to industries by allowing people with little programming or robotics background to learn a basic set of coding commands that would coordinate the tasks of a cohort of robots. As we refine our runtime and simplify the command logic of Resh, multi-robot systems would become available to smaller businesses looking to take advantage of the benefits the platform brings.

We believe in a future in which robots are accessible for everyone to use – not just individual robots but cohorts of robots acting in unison to accomplish our wishes. We believe that the Resh programming language, along with its supporting intelligent runtime environment, is a major step towards that mission.

Written by Itai Segall

Nokia Bell Labs

About Nokia Bell Labs

Nokia Bell Labs is a world-renowned industrial research and scientific development organization. Founded in 1925, it has pioneered groundbreaking innovations such as the transistor, information theory, UNIX, and fiber-optic communication. Now part of Nokia, it continues to drive advancements in telecommunications, networking, and AI, shaping the future of technology.