IndustrialKit

2.3.1

The open source software platform for creating applications that enable the design and control of automated means of production.
MalkarovPark/IndustrialKit

What's New

IndustrialKit 2.3.1

2024-03-14T14:00:02Z

Stability improvements.

IndustiralKit

IndustrialKit

License Xcode 14.1+ SPM

IndustrialKit is an open source software platform for creating applications that enable the design and control of automated means of production. The framework provides modules that can be used out of the box, or extended and customized for more targeted use cases.

Table of Contents

Requirements

The primary IndustrialKit framework codebase supports macOS, iOS/iPadOS, visionOS and requires Xcode 15.0 or newer. The IndustrialKit framework has a Base SDK version of 14.0, 17.0 and 1.0 respectively.

Getting Started

Installation with SPM

CareKit can be installed via SPM. Create a new Xcode project and navigate to File > Swift Packages > Add Package Dependency. Enter the url https://github.com/MalkarovPark/IndustrialKit and tap Next. Select the main branch, and on the next screen, check off the packages as needed.

embedded-framework

This sample demonstrates a fully constructed IndustrialKit app.

IndustrialKit

IndustrialKit is the overarching package that provides all need classes, structures, functions, enums for build industrial applications.

IndustrialKitUI provides some views and modifiers for use in design and data processing tasks.

Workspace

Described by the Workspace class is the basis of the production complex, which consists of robots, tools, parts and controlled by a global program, presented as a sequence of blocks - algorithmic elements. Thus, this class contains four properties of an array of values of types of workspace objects (WorkspaceObject class) inherited such as Robot, Tool, Part and elements of the global control program with type WorkspaceProgramElement.

For arrays of objects, a standard set of functions is used, including adding, deleting, selecting, deselecting, searching by name. However, some features may not be available for some objects.

Robot

The Robot class describes an object of the production system that works with the representation of positions in space and is able to move its arm (manipulator) endpoint to them. The robot contains in its property an array of positional programs related to the PositionsProgram class.

The positional program contains an array of target positions of type PositionPoint. Position describes the location (x, y, z), rotation angles in it (r, p, w), type and speed of movement.

Robot can add, delete and edit its programs. There are functions for selecting and starting, pausing, resetting the program.

Tool

Other kinds of industrial equipment used in a technological complex is described by the Tool class. Tool can be either free-standing or attached to the endpoint of the robot manipulator.

Interaction with tools is organized by opcides and infocodes. The opcode is responsible for the executable technological operation - when a numerical value is set in the spectial property, the start of the operation associated with the code is initialized. The default value for this property is -1, which means no operation performed. When the operation is done, the value of the opcode is reset to this value.

Operational code sequences are contained in the programs array, the elements are the OperationProgram class, with a set of numeric code values with OperationCode class. Program management is similar to that of robots - there are functions for adding, deleting, selecting and performing.

Part

Parts form the environment, such as tables, drives, safety fences, etc., and also represent objects with which the executing devices interact directly - an example is the parts assembled by robots. Described by the Part class.

This class has a set of properties that describe the appearance and physical properties of the part. A part model can be obtained both parametrically - from an array of lengths and the name of a geometric primitive, and by importing from a scene file.

Connectors

Connectors are used to connect and control industrial equipment. They are divided into two subtypes - for switching robots and tools, described by the RobotConnector and ToolConnector classes, respectively.

Connectors of individual models are inherited from these base classes and have their own specific redefinitions of functions and variables.

Connection to the equipment is performed by the connect function, disconnection - disconnect. The connection state returns by Bool property. State of the equipment returns in array of dictionaries. They contain String name of the returned property and the value of Any type. The connection parameters are set in the corresponding array of structures.

Model Controllers

This controllers are used to connect to and control robot and tool models in the rendered scene. Represented by RobotModelController and ToolModelController subclasses.

Also, controllers can change the model in accordance with the specified parameters.

Functions

Some functions that can be used both in framework and independently by developers.

  • mismatched_name – finds and updates mismatched name;

  • origin_transform – transforms input position by origin rotation;

  • apply_bit_mask – applies certain category bit mask int value for inputed node and all nested;

  • pass_robot_preferences – pass parameters between robots, such as origin location/rotation and working space scaling;

  • pass_positions_programs – pass positions programs, specified by names, between robots.

  • element_from_struct – universal function, that initializes the workspace program element by corresponding file struct data.

Extensions

Added methods for Float and uses to convert radians to degrees – to_deg and vice versa – to_rad.

Provided new methods for SCNNoderemove_all_constraints to remove constraints and reset default position, remove_all_child_nodes to remove all child nodes from this node.

Extension for provide the pngData missed method for UIImage (UIKit).

Aliases for NSImage, NSColor to use them as UIImage and UIColor respectively (AppKit).

The built-in programming language of the IndustrialKit platform formalizes methods for robotic systems algoritmization and organizes unified connection and control of various robots and equipment tools.

IndustrialKitUI

Object Scene View

The simple view for SceneKit nodes. Initalises only by SCNNode and has transparent background.

It has the functionality of double tap to reset camera position for macOS.

Cards

Used to display various objects. Can display a description with an image or a SceneKit scene model.

Can be used in conjunction with objects inherited from WorkspaceObject. The card initializer is passed the values returned by the object's card_info method.

The small card has no subtitle.

The program element card. Marked if corresponding program element is performing.

The register card allows edit the register value.

Position View

Provides editing of positions, for example for production objects in the workspace or target positions for robots. The editing window contains two groups of three editable parameters:

  • Location with editable position parameters in a rectangular coordinate system - x, y, z;
  • Rotation with editable rotation angles at a point - r, p, w.

Each editable parameter consists of a field and an associated stepper. The described sequence of groups can be displayed in a vertical, horizontal or some other stack.

Position Control

Provides position editing with sliders. For location should set upper limits (lower limits have 0 value). Rotations are limited to the range -180º – 180º.

Registers Selector

Pruposed for elements, registers from which they take data can be specified. This functionality is provided by the Registers Selector control. One or more registers can be selected.

Charts View

Output of an arrays of WorkspaceObjectChart charts, with the ability to switch between them by segmented picker (if count of arrays of arrays is more than one). The type of chart is determined by its properties.

State View

Output statistics by the StateItem array. If the elements are nested within each other, they will be displayed in the corresponding disclosure group. Icons are defined by the name of avaliable SF Symbols.

Spatial Pendant

A universal UI control for programming and handling workspace and its constituent industrial equipment. Contents of this pendant vary depending on the specific selected object and its type – Workspace, Robot or Tool. Content of this control is blank if no suitable object is selected.

The spatial pendant allows you to set the sequence of program elements and control their performing.

Getting Help

GitHub is our primary forum for IndustrialKit. Feel free to open up issues about questions, problems, or ideas.

License

This project is made available under the terms of an Apache 2.0 license. See the LICENSE file.

Description

  • Swift Tools 5.9.0
View More Packages from this Author

Dependencies

  • None
Last updated: Sun May 05 2024 22:35:39 GMT-0900 (Hawaii-Aleutian Daylight Time)