IMA Modules

Global control of the entire robotic complex is carried out via a program on the IMA. During its execution, individual devices within the complex are controlled, and data is collected and processed. This data is then used as input parameters for single operations on robotic devices or as pointers for executing their internal programs.

All this data consists of a set of numerical values and is stored in an array of virtual registers of the complex’s workspace. IMA provides a minimal set of elements for transforming this data, as well as for managing the execution sequence of the program. For more complex data processing and transformation, there is a special program element called the Changer, whose modules are individual programs that modify the contents of the registers according to a specific algorithm.

This article presents a set of IMA-Changer modules required for performing the automated assembly of spline joints – a common technological operation in mechanical engineering.

So, what modules do we need?

  • Spline Defaults – sets the parameter-variable values into registers 10–22;
  • Align – performs calculation and updates the robot’s tilt angles (in registers 3–5) depending on the parameters of the force configuration (in registers 7–9);
  • Rotation Shift – updates the P tilt (register 4) around the Y axis and the end-effector offset along the X and Z axes (registers 0 and 1), causing the shaft (whose height is stored in register 10) to rotate around its bottom point rather than the end-effector;
  • Alignment Correction – adjusts the tilt angles of the robot’s end-effector based on force configuration data during the insertion of the shaft into a hole.

Each of these modules has its own implementation of the change function, which modifies the values in the array of virtual RTK registers, represented as a Float array.

Spline Defaults

Before performing the assembly operation, various parameters must be set as specific numerical values in the registers of the digital RTC. These parameter values can be obtained in different ways – for example, from a separate file, either external or bundled with the application. The current implementation contains the initial parameter values as constants in the code, whose values are sequentially written into the register array.


The Changer element with the Spline Defaults module can also be replaced with a set of other IMA program elements that implement the retrieval of the required parameters. For instance, the distance to the bushing surface d and the insertion depth i can be obtained using the Observer element, which reads values from a rangefinder.


Align

The shaft axis may be misaligned with the bushing axis. To prevent jamming during the assembly of the joint, it is necessary to align the shaft to the normal of the bushing surface.

Before this element is executed in the RTC control program, the shaft is moved downward along the Z-axis by a value o to generate a reaction force. Then, the Changer element with the Align module determines the deviation of the shaft’s axis from the normal and updates the target position parameters. After that, in the next IMA element, the shaft is lifted upward by the same value o, which eliminates the reaction force from the support.


The function processes the following parameters: end-effector position X, Y, Z, R, P (registers 0-4), current force configuration Fx, Fy, Fz (registers 7-9), shaft length l (register 12), distance to the bushing surface d (register 13), and vertical offset for generating force at a single-point contact o (register 14).

Based on the measured data of the current force configuration – resulting from the contact between the lower end of the shaft and the upper end of the bushing – the tilt angles R and P are updated. Next, horizontal shift compensation is performed with consideration of the shaft length, by updating the X and Y values. As a result of the alignment, the shaft is rotated around the lower contact point with the end face plane.


Rotation Shift

During the search for the center of the hole, the shaft hanging above it tilts forward so that, with iterative horizontal displacement, it eventually contacts the inner surface of the hole. However, the rotation of the shaft is defined as rotation at the end-effector point, and the lower end of the shaft inevitably shifts backward. To compensate for this, the end-effector is given an additional offset along the X and Y axes. As a result, the shaft rotates not around the end-effector (its mounting point), but around the point where the shaft axis intersects the surface of its lower end.

Since the rotation occurs in the XZ plane, the offset is added only to the register containing the X value; the Y parameter remains unchanged. Thus, the function processes parameters located in the 23rd register (rotation angle increment P at the end-effector) and the 10th register (shaft height from the lower end to the end-effector), and updates the position parameters in X, Z, and P (registers 0, 2, and 4).


Alignment Correction

This module is used to correct the alignment of the shaft with the bushing hole during insertion. The process is organized as a loop in which each iteration includes a downward movement of the shaft by a fixed distance, followed by execution of the Changer element with Alignment Correction, which updates the shaft's rotation in R and P (registers 3 and 4) based on the force configuration Fx, Fy, Fz (registers 7-9).

The module’s function determines the direction of shaft deviation and accordingly updates the tilt angles, reducing the ratio of the forces acting on the shaft along the X and Y axes.