The Ithi Macro Assembler (IMA) formalizes methods for robotic systems programming. It is the built-in programming language of the IndustrialKit platform and applications based on it, such as RCWorkspace.
A program in IMA is represented as a sequence of special blocks – elements. There are three types of blocks:
  • Performers – initiate operations on devices such as robots and tools.
  • Modifiers – manipulate data in memory, which is an array of registers containing floating point numbers.
  • Logic – control the order of performing of program elements through conditional and unconditional transitions to given labels.
The memory of the workspace can have a various count of registers. By default, they all have a value of 0. Only modifiers can change the contents in memory, other elements can only read data. However, modifiers cannot affect other elements directly. This organization ensures data separation and better control over the performing of the algorithm.
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.
The sequence of elements can be performed either singly or cyclically. In the second case, after the last element, the first one is performed.

Let's look at the elements separately.

Performers

These elements specifies the name of the robot or tool. The program to be executed can be set on the device itself. Then either its name or the register containing the program number in this robot or tool is selected in the block.
Instead of a program, a single action can be defined, the parameters of which are taken from registers. Thus, for the robot, the parameters of the target position are indicated – location displacements (x y z), rotation angles (r p w) and speed. For a tool, an operating code is specified that is associated with the specific operation it performs.
Note that register values are rounded to the nearest integer in some cases, for example to set the index of the program being to perform on the robot/tool or the operating code for the tool.

Modifiers

A specific value is written to the specified register using Write.
The Move allows you to either duplicate a value to another register or move it by clearing the original one. To perform mathematical operations (+ - · ÷ ^), the Math is used, which writes the result of the calculation to the left specified register.
Obtaining data on the state of operation is provided by the Observer. The robot returns an array of components of its current pointer position, the tool can return an array of states of arbitrary length. Observer receives data from the specified instrument and writes it to the specified registers. It contains the name of the object, the indices of the elements of the returned array and the corresponding register numbers to be written.
Specific operations for processing and changing data in registers are performed by the Changer. It specifies the name of a special function added by the developer. The Cleaner cleans all registers.

Logic

The Mark specifies the next element to be executed and is identified by the given name. The Jump unconditionally jumps to the specified label. Branching is provided by the Comparator. It compares the values in the specified registers and, if the comparison condition is met (= ≠ > ⩾ < ⩽), it jumps to the specified label.

❖ ❖ ❖

This reviewed version of IMA is available in 2.1 versions of IndustrialKit and RCWorkspace.

This assembler is named after Ithi robunny from Δ-01.
The Deltadim is a universe, setting and aesthetic founded by Artifyber and filled upon by him and connoisseurs. It’s nice if in Alterra all system software, such as IthiOS and CorbunneOS and others, is built on this advanced assembler.