Hello, I would like to present to your attention a new open-source framework that enables bringing industrial capabilities into the Swift and Apple ecosystem.
Concept
IndustrialKit implements an object model of a robotic technological complex as a composition of means of production (ProductionObject) arranged within a unified space – Workspace. The means of production are represented by means of labor – Robot and Tool, and by objects of labor – Part, which are transformed by them in order to obtain a product:
Robot – an automatically controlled programmable manipulator that performs positioning and orientation of the end-effector in space. The robot operates with PositionPoint for the Tool Center Point (TCP), to which it moves its end-effector. Target positions can be organized into named sequences – PositionProgram.
Tool – a class of other robotic devices with arbitrary functionality. They are controlled via OperationCode and their named sequences – OperationProgram. The supported digital values of codes and their associated functions are defined by the device. Tools can also be mounted on the robot’s mechanical interface as an end-effector.
Programming of a Robotic Technological Complex (RTC) is carried out by means of IMA ProgramElement, organized into a ProductionProgram. The elements are of three types:
- Performers – control robotic devices, both as individual operations and as programs.
- Modifiers – form and transform data stored in the Workspace register memory, including mathematical computations and data acquisition from robotic devices.
- Logic – control the execution flow of the production program and include conditional and unconditional branching.
For visualization and physical simulation of the robotic technological complex, IndustrialKit utilizes the RealityKit framework. Virtual means of production control their entities via ModelController and their specialized variants RobotModelController and ToolModelController.
IndustrialKit enables linking virtual robotic devices with real ones via Connector (RobotConnector and ToolConnector). When switching a virtual means of labor into Real mode and connecting it to a physical device, it becomes a digital twin of the latter, through which it can be controlled.
The digital twin can utilize a model controller, thereby transferring the state of the real device to the virtual entity.
Extensibility
Extensible support for types of means of production is achieved by creating subclasses of ProductionObject, as well as Robot, Tool, and Part. The same approach applies to model controllers and connectors.
Support for new device models within a single class of means of production is provided through a system of industrial modules, which can be declared in code or connected and imported from external sources.
Application
The framework serves as a foundation for:
- RCWorkspace – a development environment for designing and controlling robotic technological complexes.
- Industrial Builder – an environment for configuring and deploying production systems.
- ABB App – a simple application for ABB robot handling.
These applications demonstrate the use of IndustrialKit as a platform for constructing engineering tools for production system design.
Wrap Up
IndustrialKit tutorials, detailed information about our Swift-based industrial developments and their applications, as well as reference materials and our scientific activity in industrial robotics, can be found on the website.
I would appreciate feedback from the community, particularly regarding API design, system modeling abstractions and architectural decisions.
