
The deployment of robotic production involves complex design and
equipment integration. We create a digital entity representing
the workspace and all its components, establishing a connection
between these digitalia and real devices.
Through trial runs, using both full simulation and connected
real equipment, we iteratively refine both the virtual robotic
technological complex (RTC) and its corresponding physical
counterpart until the desired result is achieved. Subsequently,
leveraging the resulting digital twin, we initiate the cyclical
execution of technological operations directly within the
production process.
In this article, we will explore the creation of a virtual RTC
using RCWorkspace app.
Preparation
First and foremost, we need to determine which components will be
involved in the production process. We classify them into three types:
- Robots – Devices that perform changes in the position of various objects in space. Robots operate with spatial values.
- Tools – Devices that perform various operations. Tools can be controlled; each operation they perform, or its parameters, is defined by an associated numerical operation code (opcode).
- Parts – All other objects. This category can include both environmental elements, such as tables and storage units, and items directly processed by the RTC to create the finished product.
Additionally, any complex program for controlling a robotic complex
implies the existence of separate computational modules for the
Intelligent Machine Agent (IMA), which perform data processing using
complex algorithms that are difficult to formalize within the IMA
itself.
Once we have identified the necessary components, we need to check the
availability of the required modules. Let's assume the modules have been
provided to us. They may be built into your version of the RCWorkspace
application or supplied as external packages.
Check the list of available modules in the settings – here, you can see
the quantity for each type and their names by hovering over the number.
To connect external modules, tap the
button and select the folder containing the external modules. Now all
packages (with robot, tool, part, and
changer extensions) will be connected.

We are using the standard RCWorkspace distribution. However, we will
also need a set of additional modules. You can download it
here.
Next, we create a set of production complex components and combine them
in the workspace.
Robots
Let's start by adding a simple robot with a 6DOF kinematic type. To do
this, tap
and in the displayed view, specify the name and model (from the
available modules) of the device. All other components will be added in
a similar way.

Now, select the robot card and switch to view mode.
For programming controllable devices – robots and tools – a virtual
pendant is used, which can be accessed by pressing the
button. Single operations are assembled into executable sequences –
programs. Adding, deleting, and selecting programs is available in the
corresponding area at the bottom of the pendant-inspector or at the top
in the case of the Spatial Pendant (visionOS only).

Since the robot operates with spatial values, its control program is a
sequence of target positions to which it directs its manipulator.
The workspace parameters – the rotation and position of its origin, as
well as its dimensions – are configured in the corresponding menu. We
will set its position along the x-axis to 130.
The current position of the robot's end effector is set by sliders –
three for the position (x, y, z) and three for the rotation within it
(r, p, w). The position is recorded into the program by tapping the
button. This manual guidance of the robot and recording of positions is
called teaching. In total, we will create three positional programs:

Down
x | y | z | r | p | w | Speed | Type |
---|---|---|---|---|---|---|---|
0 | 0 | 80 | 0 | 90 | 0 | 100 | Linear |
0 | 0 | 4 | 0 | 90 | 0 | 100 | Linear |
Pass
x | y | z | r | p | w | Speed | Type |
---|---|---|---|---|---|---|---|
0 | 0 | 4 | 0 | 90 | 0 | 100 | Linear |
0 | 0 | 80 | 0 | 90 | 0 | 100 | Linear |
0 | 200 | 80 | 0 | 90 | 0 | 20 | Linear |
0 | 200 | 50 | 0 | 90 | 0 | 10 | Linear |
Return
x | y | z | r | p | w | Speed | Type |
---|---|---|---|---|---|---|---|
0 | 200 | 50 | 0 | 90 | 0 | 100 | Linear |
0 | 200 | 80 | 0 | 90 | 0 | 10 | Linear |
0 | 0 | 80 | 0 | 90 | 0 | 100 | Linear |
For all controllable devices (robots and tools), starting program
execution and pausing it is available using the
button. Each program element has an execution marker – a light dot on
the left. During program execution, it is yellow for the currently
executing element, and green for successfully completed ones.

If program execution has been paused, it will resume from the current
element. To completely reset the execution queue, tap the
button.

Statistical data is also available for controllable devices. You can
view it by tapping the
button. Statistics are displayed as graphs and multi-level nested lists.
Enabling statistical data collection is available via the "Enable
Collection" switch. The obtained data can be cleared or saved to a
preset by tapping the corresponding buttons.

Tools
Next, we add a Gripper tool.
The tool's control program consists of a sequence of operation codes
associated with specific operations or their parameters. The opcode
value is selected in the menu next to the add button and recorded by
tapping it.
In our case, one program is enough for each operation – closing and
opening the gripper respectively.
Execution control and statistics collection are similar to those of
robots.
Parts
RTC Building
Next, we place the created components in the workspace. To add, tap the
button, after which we specify the position in space. Any installed
object can be edited or removed by tapping on it and the edit button
.


We install the table (), the shaft (), the sleeve (), and the robot ().
We attach the gripper to the robot; to do this, tap
and select the available robot. Since there is only one robot, it will
be selected.

The next step is programming the RTC. For this, IMA is used. In our
case, a simple sequence of five blocks-performers will be sufficient. In
the add menu, select the module type and add by tapping
button.

Now let's start the assembly execution by pressing the
button (similar to other controllable devices). The executing module is
highlighted with a gray dot.

After execution, the scene can be reset. To do this, select Reset in the
scene menu.