githubEdit

Igus Rebel

Interface to igus iRC Robot Controllers

The igus iRC Interface connects and controls igus robots via the igus Robot Control (iRC) software. It supports all igus robot kinematics controllable through iRC, including the ReBeL 6DOF, SCARA 4DOF, delta robots, and linear robots with variable axis counts.

circle-info

This feature was updated in realvirtual 6.0.10 with support for variable axis counts, speed control, position-based motion commands, and inverse kinematics via CRI.

igus iRC Interface properties

Adding the Interface

Add the interface via the realvirtual menu: realvirtual > Add Interface > igus iRC.

Adding the igus iRC Interface from the menu

Prerequisites

The igus Robot Control Software (iRC) is freely available at https://www.igus.eu/automation/robot-control-system/robot-softwarearrow-up-right.

igus Robot Control Software enables simple and intuitive robot programming and control systems. Thanks to the modular structure, various robot kinematics including delta robots, linear robots and multi-axis robots can be controlled. The software can simulate individual movements on a 3D surface without a physical robot connected.

We deliver one example robot, the igus ReBeL, but after importing step data and defining the kinematic and drives, all other igus robots controllable by iRC can be used.

Properties

Active (enum) Determines when the interface is active. Options include:

  • Always: The interface is active at all times.

  • Connected: Only active when realvirtual.io is in "Connected Mode".

  • Disconnected: Only active in "Disconnected Mode".

  • Never: The interface is deactivated.

See more about connection states: Runtime UI - Connection Statusarrow-up-right

Is Connected (boolean, read-only) Displays the current connection status to the igus robot controller.

Address (string) IP address of the igus iRC controller. Use 127.0.0.1 for local connections.

Port (integer) Port number for the CRI connection. Default is 3921.

Drives (list) The robot axis drives. Each drive corresponds to one robot joint. The interface supports variable axis counts from 1 to 9 axes, making it compatible with all igus robot types (6DOF, 4DOF SCARA, delta, etc.).

Num Outputs (integer, read-only) Number of digital output signals from the robot to realvirtual.

Num Inputs (integer, read-only) Number of digital input signals from realvirtual to the robot.

Speed (float, slider 0–100) Controls the robot movement speed as a percentage. Changing this value sends an updated override speed to the iRC controller in real time.

Is Moving To Target (boolean, read-only) Indicates whether the robot is currently executing a position-based move command.

Target (RebelTarget, read-only) The current target the robot is moving towards during a position-based move.

Kinematic Error (boolean, read-only) Indicates whether the last inverse kinematics calculation returned an error from the iRC controller.

Active Command On Start (boolean) When enabled, sends the initial command activation sequence to the iRC controller on connection start.

Debug Mode (boolean) Enables detailed logging of all CRI protocol messages sent to and received from the robot controller. Useful for troubleshooting communication issues.

On Move Finished (UnityEvent) Event invoked when a position-based move command completes. Use this to chain movements or trigger actions after the robot reaches its target.

Robot Commands

The interface provides methods for controlling robot motion programmatically or via RebelTarget components.

MoveToPosition moves the robot to a RebelTarget with configurable offset, speed, and motion type (PTP or linear). MoveToPositionAsync provides the same functionality as an awaitable async method for use in coroutines or async workflows.

SetSpeed updates the robot speed override (0–100%) in real time.

SetRobotOutput controls digital outputs on the robot controller.

SetActive enables or disables the robot controller.

RebelTarget

The RebelTarget component defines a target position and rotation for the robot. Attach it to a GameObject whose transform represents the desired robot end-effector pose. Assign it to the interface's motion commands to move the robot to that position.

Inverse Kinematics

The interface supports inverse kinematics calculations via the CRI protocol. Use GetJointAngles to retrieve current joint positions and CalculateAngles to compute joint angles for a given Cartesian pose. The Kinematic Error property indicates if the last IK calculation failed (e.g., target out of reach).

Inputs and Outputs

The igus iRC Interface communicates with the robot controller using Global Signals and Digital Outputs.

circle-info

Note: Digital Inputs on the igus robot cannot be controlled directly from the simulation. These inputs are controlled by the robot controller. Use Global Signals instead.

Global Signals: Serve as inputs to the robot controller and must be configured within the iRC software's Project Configuration.

Digital Outputs: Robot controller outputs that send digital signals back to the simulation in realvirtual.

Connected IOs between realvirtual and iRC

To use Global Signals as inputs, set them up in the Project Configuration within the iRC software. Once configured, these inputs can be controlled from realvirtual through the assigned PLCInputBool signals.

Project configuration of iRC for defining Global Signals

Setting Up Digital I/O Signals

To use digital I/O with the igus iRC Interface, create child GameObjects under the interface GameObject and add the appropriate signal components:

  1. Digital Outputs (DOut): Add a PLCOutputBool component to a child GameObject for each digital output you want to receive from the robot controller. These correspond to DOut21, DOut22, etc. in the iRC software.

  2. Global Signals (GSig): Add a PLCInputBool component to a child GameObject for each global signal you want to send to the robot controller. These correspond to GSig1, GSig2, etc. in the iRC software.

Set the Num Outputs and Num Inputs properties on the interface to match the number of digital output and input signals you have configured.

Signal Assignment Logic

There are two ways to assign signals to the iRC controller:

Option 1: Sequential Assignment (Default)

If no SymbolName is set on the signal, signals are assigned sequentially based on their hierarchy order:

  • Digital Outputs (DOut): The first PLCOutputBool maps to DOut21, the second to DOut22, and so on.

  • Global Signals (GSig): The first PLCInputBool maps to GSig1, the second to GSig2, and so on.

Option 2: Explicit Assignment via SymbolName

You can set the SymbolName property on a signal to explicitly assign it to a specific DOut or GSig number. For example, setting SymbolName to 25 on a PLCOutputBool maps it directly to DOut25, regardless of its position in the hierarchy.

This is useful when you need non-sequential signal mapping or when the hierarchy order does not match the iRC signal numbering.

circle-exclamation

See Also

Last updated