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.
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.

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

Prerequisites
The igus Robot Control Software (iRC) is freely available at https://www.igus.eu/automation/robot-control-system/robot-software.
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 Status
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.
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.

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.

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:
Digital Outputs (DOut): Add a
PLCOutputBoolcomponent to a child GameObject for each digital output you want to receive from the robot controller. These correspond toDOut21,DOut22, etc. in the iRC software.Global Signals (GSig): Add a
PLCInputBoolcomponent to a child GameObject for each global signal you want to send to the robot controller. These correspond toGSig1,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
PLCOutputBoolmaps toDOut21, the second toDOut22, and so on.Global Signals (GSig): The first
PLCInputBoolmaps toGSig1, the second toGSig2, 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.
When using sequential assignment, make sure the order of your PLCOutputBool and PLCInputBool signals in the hierarchy matches the order of the corresponding DOut/GSig signals in the iRC software configuration.
See Also
Last updated