A robot in RCML is a kind of executive resource that can be engaged to perform a specific task (function) and then released for re-engagement, but in another task for example. The immediate analogy is processing core of CPU, which can be engaged in only one process at a particular time. However, OS means allocating very small quanta of CPU time to different software processes or tasks, can create the illusion that one core handles multiple tasks. In RCML, the robot as a resource is controlled by the interpreter, but the robot is engaged not for a period of time, but to perform a specific function or multiple functions, and thus the time of its engagement may be different.

A robot is an object of the real material world, and its actions are often not as instantaneous as in the above analogy with the CPU core. And it takes time to perform its function, and this time may be different for the same function as a robot is affected by many factors of material object world.

A robot module as such provides RCML environment with robot class description assigned to it. It is assumed that locally in the object world where RCML is used, maybe one or more robots of the same class assigned to one robot module. And there are two key types of objects as part of the robot module in RCML environment, as shown in Figure 4:

  • Robot module acts as a controller for robots of the class entrusted to it, i.e. selects a free robot to be engaged and released after work;
  • Robot representation – a reflection of a specific physical robot in a virtual RCML environment, translating commands to the physical robot.

Figure 4 Virtual representation of objects classes in RCML environment

It should be noted that many robot classes may be connected simultaneously, i.e. many robot modules, and each of them can provide access to multiple robots in its class. Robots within the same class must be completely identical, both in physical and functional performance.