RCML goal No.1

Obtaining the same result regardless of robot performance

Obtaining the same result regardless of robot manufacturer

Based on low-level functions provided by the robot, RCML allows the developer to develop higher-level functions required for the planned technological process within hardware and software capabilities of the robot without its modification.

Additionally, RCML allows the programmer to specify certain functions of robots to be considered identical, and thus specify interchangeability of these robots in the system in the process of program implementation. This approach allows separating low-level robot programming from high-level programming.

Examples include the development of a lower-level function of movement to a predetermined distance based on functions of motor control, and the development of a higher-level function of the path search in the maze based on the function of movement to a predetermined distance. Obviously, execution of a high-level function should not depend on particular of the robot.

The advantage of this approach is that changes to the higher-level programs that provide a technological process are not required when replacing a robot, including all subsequent stages of testing, debugging, and re-commissioning of the entire complex involved in the technological process.

Suffice it to ensure that a new robot executes low-level functions implemented, in the same way as they were executed by the previous robot, with checking, testing and debugging of these functions only for this executive unit.

RCML goal No.2

Providing conditions for joint operation of multiple robots

Providing conditions for joint operation of multiple robots

By using RCML, the developer can use multiple robots to execute the task set, while specifying actions of a certain robot with respect to the actions of another robot.

This provides a number of opportunities for joint operation of robots:

1.Sending in-sync commands to the robots

Within the specific operating system capabilities and robot design, a programmer can implement synchronous and parallel operation of robots or at least simultaneous receipt of commands by them.


  • One robot is not able to move the load. In this case, a programmer can use several machines to move the load, by simultaneously sending the command to move or stop to the robots or so as the robots move smoothly and simultaneously.
  • Assembly of components of some structures may require the robots to perform not identical actions but actions starting simultaneously that can be achieved in this mode of operation.

2. Asynchronous parallel execution of tasks by robots

Where possible, the developer can implement the distribution of tasks between the executive units, organizing their parallel execution in relation both to each other and to the main process.

This parallel execution is asynchronous and can be used to accelerate the process including mutually independent steps. This can be effective in solving technological tasks where the sequence of any intermediate actions of robots is not important.


  • Paint works of cabinets can be executed asynchronously, but with separation of work site for each robot involved in the process.
  • Automatic robotized welding of steel structures by a robot that inserts a blank into tooling and a robot performing welding. When using two conductors for welding, it may be executed in parallel in a single conductor with respect to inserting or extracting of parts from another conductor.

3. Interdependence of actions of robots in the group

When writing a program in RCML, the developer can determine how one robot should operate with respect to the result of actions of another robot. However, to obtain the effect of interdependence of machine actions in the general process, these actions should be executed in a sequential (serial) mode.


  • Joining of two parts with a bolt and a nut. Two robots are involved in one assembly process. The robot screwing the nut on the bolt must not start performing his functions until another robot inserts a bolt in the specified hole.
  • Laying a cable in a trench. Two robots are also engaged in the process: a robot laying the cable, and a robot digging the trench. The first one can not and must not lay another meter of cable, until the second robot digs another meter of the trench for the above cable segment.

RCML goal No.3

Significant simplification of robot programming, reducing the threshold of entering this area

Significant simplification of robot programming, reducing the threshold of entering this area

A programmer who knows low-level functionality of the robot (e.g., motor control functions), can develop high-level functionality based on it – describe functions that make the robot performing some meaningful action (such as moving to a predetermined distance or tightening the nut).

Subsequently, another programmer who does not know features of this robot, based on meaningful actions provided by the robot (high-level robot API), can write a program that implements the required process.

Thus, the second programmer does not need to know features of the robot, which will execute his program, and does not need to know features of all the robots, which may potentially be the executors of his program.

This programmer now needs to know only one programming language for all the robots, rather than study features of programming of each one. Thereby he has the opportunity to organize the same work of different robots.


A programmer of the industrial robot, knowing features of this robot, based on its low-level motor control functions develops high-level functions to perform meaningful actions. For example, tightening the nut with the specified torque according to given coordinates.

A programmer-technologist, without knowing anything about the features of this robot (permissible motor positions, their speed, principles of coordinate conversion in movement, etc.), in his process, when required, can call this function of nut tightening with the specified torque according to given coordinates.

Moreover, this programmer does not have to change his program, if another robot will be its executor. Important is just the fact that this new robot had a similar function of nut tightening.


RCML goal No.4

Optimal robot selection to solve a specific problem

Optimal robot selection to solve a specific problem

RCML provides connectivity of similar robots to a group and thus allows a developer to integrate robots with RCML, set forth a proprietary algorithm to select the most suitable robot-executor from this group, and when writing RCML program for robots of this type, select the robots which are most suitable for the above algorithm as the executors.

The developer can define criteria for selection and the algorithm itself on his own, and they may be multiple, for example:

  • Robot coordinates;
  • Speed or operation;
  • Load-lifting capacity;
  • Energy efficiency;
  • And others.


A programmer develops a program using two robots-transporters of different load-lifting capacity. Load-lifting capacity of the first is 50 kg, power consumption is 5 kW/h, of the second – 250 kg, 10 kW/h. Both robots can be engaged in transportation of small loads up to 50 kg in the program, but minimum energy consumption for transportation is possible while using the first robot. However, if the robot with optimal specifications is busy at a time when a new transportation task arises, and transportation time is critical, the developer can use the second robot. In this case, commands to the robots are universal because their functionality capabilities are equal.

RCML goal No.5

Robot switching between multiple simultaneous tasks

Robot switching between multiple simultaneous tasks

When writing RCML program, a developer can specify the time of robot engaging/disengaging in the process.

I.e. a developer can use a particular robot (from the existing group) only when necessary and release it if the robot is no longer needed. The released robot may be engaged in another program that solves another task.

Thus, the robot may be engaged in several tasks, and can switch between them. This reduces robot downtime.

Convenience for the developer is that he does not need to write a single program for all tasks where the robot is engaged. The developer can write a separate program for each task and run them in parallel. 


In conveying vehicle body painting, one robot can be used on two assembly lines at once. The executable RCML program may be implemented so that after painting of one vehicle body, the robot does not wait for receipt of a new body, but switches to an adjacent line, wherein the body is already fed. Thus, the mechanism of robot switching between several simultaneous tasks can reduce the number of robots used without compromising the work performed.

RCML in brief


/*...*/RCML is a high level programming language, allowing to co-operate different robots within a single task. It allows simultaneous execution of several tasks by a group of robots, and to switch a single robot between several tasks.

/*...*/Resolutions of technological tasks implemented in the RCML language provide the same result for robots with identical functionality.

/*...*/The language contains a number of I/O points for connection with the software products created with the use of third-party technologies via appropriate software interfaces.

For whom written language

Production and Industry

The use of RCML programming language levels down the dependence of the result on a specific robot and takes into account only device functionality. Relying only on robot functionality, programmers can use and write universal programs, where the replacement of executing units does not affect the final result of work.

Engineering Companies

Using the effect of independence of the result on robots, engineering companies can develop programs that implement a certain technological process without being tied to a specific robot, as well as facilitate compliance of these programs with the new robots. This reduces the risks associated with dependence on specific hardware solutions, as well as the cost of migration of company products to new robots with the required functionality.

Software Developers

Software developers can develop new, more complex and high-level functionalities of robots using low-level functions described by robot developers.

Thus, it is possible to extend functionality of executive units as part of their existing hardware capabilities. At the same time, software developer does not need to buy a robot to test the result.

Research Institutes and Laboratories

Ease of RCML integration with systems of speech analysis, machine vision, and mechanisms of space mapping allows rapid adaptation of these systems to all executive devices with the required functionality.

It facilitates integration of scientific research and innovations into business and industries associated with robotic technology.

Robot Developers and Manufacturers

Integration of new robots with RCML is one of the possible ways to expand the sales market, opening the possibility of using robots in the range of the previously unsolved problems. In addition, robot manufacturers gain a competitive advantage due to compatibility of their robots with all existing intelligent products also compatible with RCML, as well as with various solutions to technological problems described in RCML.

The manufacturer has an opportunity to focus directly on the development of robot hardware component. RCML ensures robot compatibility with all other developed algorithms and systems.

Robotic Communities

Robotic communities get a universal connecting link for all developed products, whether hardware, software or algorithmic solutions. Through RCML they can combine all their experience into a single system and interact with other robotic systems.

Extensions and integrations

The RCML environment has several APIs for integration with other systems, including robots. The functionality of the language itself may be further extended by adding new functionalities.

New robots are connected to the language through adding robot modules. The modules are dynamic link libraries that provide the required API and implement the relationship with particular robots. Using a robot module, the following can be described:

  1. Actions for setting up a communication channel with a specific robot
  2. Robot selection algorithm
  3. Enabling or disabling algorithm
  4. The algorithm of reaction to calling robot functions from the language

Function modules can be used to extend the set of the RCML language system functions. Since the function modules may be created using conventional languages and programming environments, the RCML environment may be integrated into other software and technologies. The following integrations may serve as examples:

Integration with machine vision systems

Adding integration functions into any databases and other software

Introduction of the functions that deal with various intellectual tasks, calculations, etc.

Control modules are used to connect the control devices to the RCML environment. Such devices are used only in the robot manual control mode. Modules of this type may be used to implement the control over the same robot from different control devices. And on the contrary, there is the possibility of using the same device to control different robots. The diversity of connected devices is limited only by the imagination and the capabilities of the module developer. These devices may be:

  1. a keyboard
  2. a joystick
  3. a VR Helmet
  4. other

12, Monastyrskaya St., lit. A,
Office 600, Perm, Russia


+7 (342) 214 01 84