Available Robots and Drivers
In order to simulate and interact with a robot in Parametric Robot Control, you need to provide the robot type and the robot driver. Both refer to classes in the PRC.Library.dll, i.e. KUKA.KUKA_KR1000 constructs a KR1000 robot via PRC.Library.Robots.KUKA.KUKA_KR1000().
The driver sets the appropriate kinematic solvers to perform the simulation. A driver may generate robot code or provide a real-time interface.
Drivers#
KUKA.KSS_KRL_DriverPreview: Driver for simulating robots running KSS (KRC1-5). Outputs code in KRL format. Via the UseSplineMotions setting it can optionally emit spline motion commands (SLIN/SPTP/SCIRC with the C_SPL approximation criterion) instead of LIN/PTP/CIRC – this requires KSS 8.3 or higher.
KUKA.KSS_IOB_DriverProof of Concept: Driver for the IO Builder integration, derived from KSS_KRL. Two interaction modes are chosen via the Interaction setting: Servoing streams the robot's current axis position as JSON over UDP to an external system whenever the simulation updates, and visualizes positions received back live; Path-Table takes each motion's absolute time from the metadata key TimeStamp (seconds) instead of computing timing from speed, and generates a time-stamped axis_recorder take file (JSON) as its code output instead of KRL.
KUKA.KSS_MXA_DriverExperimental: Driver for connecting with KSS robots via mxAutomation. mxAutomation must be installed in a version that fits the mxAutomation.dll. Experimental, expect some issues.
UR.UR_DriverExperimental: Driver with support for Universal Robots UR5e/7e, UR10e, and UR20 on both Polyscope 5 and Polyscope X. Outputs URScript code.
UR.UR_RT_DriverExperimental: Realtime driver for Universal Robots: simulates PRC tasks with the UR solver, streams them as URScript programs over the controller's secondary interface (port 30002), and displays the actual robot position live via RTDE (port 30004). Both channels are officially supported on Polyscope 5 and PolyScope X.
ABB.ABB_RAPID_DriverExperimental: Driver with support for ABB robots using RAPID. The IRCVersion setting targets the controller generation: IRC5 (save the generated module as .mod) or IRC7/OmniCore (default, save as .modx).
ABB.ABB_RWS_DriverExperimental: Realtime driver for ABB robots via Robot Web Services (RWS): connects to the controller over HTTPS with a controller user account (IP address, RWS port, username, and password are set in the driver settings), generates the RAPID program, and uploads and executes it directly on the controller. A WebSocket subscription streams the execution state and the live robot position (joint and Cartesian values, also exposed as variables) back into PRC for live visualization. The base can reference a persistent base on the controller by name.
IGUS.IGUS_DriverProof of Concept: Highly experimental driver with support for the IGUS ReBel robot.
NEURA.NEURA_SIM_DriverExperimental: Driver with support for NEURA robots (MAiRA 7-DOF and LARA 6-DOF). Generates Python code that requires the NeuraPy library to execute.
NEURA.NEURA_RT_DriverExperimental: Realtime driver that connects to the NeuraPy server on the robot control box (default 192.168.2.13) and executes/streams motions live, with configurable blending, follow-target mode, and feedback interval.
Supervisor.Supervisor_Driver
Experimental: Connection-only driver (formerly Generic.Generic_Driver): it does not control a robot, but registers a client with the server so it can read the variables of all connected machines (robots, IoT devices, dashboards) and write variables of its own. It pairs with the robot-less Supervisor.Supervisor_Device preset – which is also the fallback the server uses when a setup request contains no robot definition at all. The standard polling path returns the variables of all connected machines plus a machine inventory (IDs, name, model, driver, status), and the .NET client additionally provides QueryVariables() and GetMachineData(id, excludeGeometry) for lightweight machine monitoring – with geometry excluded, replies shrink to under 1 KB and can be polled at 30–60 Hz. Adding tasks is not supported, and no license is required.
Robots#
The following robots are currently integrated. They expand the robot library currently available in KUKA|prc.
KUKA.KUKA_KR1000
KUKA.KUKA_KR100120P2
KUKA.KUKA_KR10R1420
KUKA.KUKA_KR10R14402
KUKA.KUKA_KR120KR150R31002
KUKA.KUKA_KR120KR210R27002
KUKA.KUKA_KR120R1800
KUKA.KUKA_KR120R3900K
KUKA.KUKA_KR120R3900K2
KUKA.KUKA_KR125200
KUKA.KUKA_KR12KR20R1810
KUKA.KUKA_KR150240L110180
KUKA.KUKA_KR180KR240R29002
KUKA.KUKA_KR200comp
KUKA.KUKA_KR20R3100
KUKA.KUKA_KR210KR240R2700
KUKA.KUKA_KR210R31002
KUKA.KUKA_KR210R3300K
KUKA.KUKA_KR22R1610
KUKA.KUKA_KR250KR300R27002
KUKA.KUKA_KR3060
KUKA.KUKA_KR3070R2100
KUKA.KUKA_KR30L16
KUKA.KUKA_KR3605002
KUKA.KUKA_KR3R540
KUKA.KUKA_KR480R3330
KUKA.KUKA_KR4R600
KUKA.KUKA_KR50R2500
KUKA.KUKA_KR50R2500CRW
KUKA.KUKA_KR5arcHW
KUKA.KUKA_KR600R2830
KUKA.KUKA_KR610R1100
KUKA.KUKA_KR610R11002
KUKA.KUKA_KR610R900
KUKA.KUKA_KR610R9002
KUKA.KUKA_KR61620
KUKA.KUKA_KR616Arc
KUKA.KUKA_KR6R1820
KUKA.KUKA_KR6R18402
KUKA.KUKA_KR6R700
KUKA.KUKA_KR816R20102
KUKA.KUKA_KR8R1620
KUKA.KUKA_KR90KR120R2900
KUKA.KUKA_KR90KR150R3700K
KUKA.KUKA_KR90KR270R2500
KUKA.KUKA_KR90KR270R2700
KUKA.KUKA_KR90KR270R3100
KUKA.KUKA_LBR3R760
KUKA.KUKA_OALego
IGUS.IGUS_ReBel
Supervisor.Supervisor_Device (robot-less preset for machine monitoring – no kinematics, no geometry, no axes)
NEURA.NEURA_LARA_3
NEURA.NEURA_MAIRA_M
UR.UR_57e
UR.UR_10e
UR.UR_20
ABB.ABB_IRB6620
ABB.ABB_IRB6700_150_320
External Axes#
External axes are simulated alongside the robot; the simulation result contains their positions and out-of-range flags per interpolated step. Users of the .NET Client Library can instantiate ready-made presets from PRC.Library.ExternalAxes:
KUKA: KUKA_KL4000 (linear axis), KUKA_KP1V (KP1V500 single rotary axis), KUKA_DKP400 (2-axis positioner), KUKA_DKP500 (DKP500-2 HW 2-axis positioner), KUKA_KP2HV500 (KP2 HV500 2-axis positioner)
NEURA: MAV500 (MAV-500 AGV)
Note that over raw gRPC, external axes travel as full ExternalAxis definitions (type, kinematics, geometry) – there is no preset class string on the wire.
Driver-Specific Settings#
The settings dictionary returned by SetupRobot is driver-specific – always inspect the returned keys rather than hard-coding them. Notable keys that affect the generated output:
| Driver | Key | Values | Effect |
|---|---|---|---|
KUKA.KSS_KRL_Driver (and derived KSS_IOB) | UseSplineMotions | True / False (default) | Emits SLIN/SPTP/SCIRC instead of LIN/PTP/CIRC; approximated motions use C_SPL. Requires KSS 8.3+. |
ABB.ABB_RAPID_Driver | IRCVersion | IRC5 / IRC7/OmniCore (default) | Targets the controller generation; save the generated module as .mod (IRC5) or .modx (OmniCore). |
KUKA.KSS_KRL_Driver, ABB.ABB_RAPID_Driver, ABB.ABB_RWS_Driver | StatusTurn (Initial Posture) | None / 110 (default) / 010 / … | Posture of the forced initial PTP that is injected when a program starts with a Cartesian motion. None skips only the forced-posture PTP – the start axis motion is kept, the posture follows implicitly from it, and the simulation derives its posture from the start position via forward kinematics. Can lead to simulation/robot differences near singular start positions. |
KUKA.KSS_IOB_Driver | Interaction | Path-Table (default) / Servoing | Selects the IO Builder interaction mode (time-stamped take file vs. UDP position streaming). |
KUKA.KSS_IOB_Driver | PathSmoothing | Spline (default) / Linear | Smooths the simulation with cubic splines through the programmed targets while still reaching every target at its exact time. |
Generated Code & File Extensions#
When saving the code output of a simulation to disk, choose the file extension based on the driver:
| Driver | Output | Extension |
|---|---|---|
KUKA.KSS_KRL_Driver | KRL | .src |
UR.UR_Driver | UR program / URScript | .urpx (Polyscope X), .urp (Polyscope 5), .script (Script) – per the driver's Polyscope setting |
ABB.ABB_RAPID_Driver | RAPID | .mod (IRC5) / .modx (OmniCore) |
KUKA.KSS_IOB_Driver (Path-Table) | axis_recorder take file | .json |
NEURA.NEURA_SIM_Driver | Python (requires NeuraPy) | .py |
