Robot Inverse Kinematics (Pro)
This inverse kinematic solver is only included in realvirtual Professional.
Robot Inverse Kinematics has been significantly updated in realvirtual 6.3 LTS. New features include zone blending, scene view gizmos, a redesigned IK solutions UI, and collaborative robot support (beta).
With inverse kinematics you can control robots with the toolcenter position (TCP). The possible solutions to reach the toolcenter positions are calculated by the inverse kinematics.
With inverse kinematics, a robot can move along a path in point to point mode (PTP) or in a linear motion. Zone blending allows smooth transitions between targets without stopping.
The Robot IK is located in the package directory Packages/io.realvirtual.professional/Runtime/IK/. Demo scenes can be opened via the Demo Scenes Browser under Professional > Robot Inverse Kinematic.

Autonox demo models and prefabs
Explore the capabilities of Autonox robots with our dedicated demonstration model, featuring three distinct robot types within a single demo scene. Access these robots directly as prefabs for seamless integration into your projects.
Demo Scene Location:
Scene Path: Available via Demo Scenes Browser under Professional > Autonox Robots
Prefabs Directory:
Prefab Location:
Packages/io.realvirtual.professional/Runtime/IK/AUTONOX

Limitations
Standard inverse kinematics uses an analytical solver for 6-axis industrial robots with spherical wrists.
Collaborative robots with non-spherical wrists are supported in beta via a numerical solver (see Collaborative Robot IK).
Only robots that can align the TCP, Axis6, 5 and 4 on a straight line are possible (spherical wrist requirement). For cobots with wrist offsets, use the NonSpherical wrist type.
Only linear accelerations are possible, smooth (sinoid) accelerations of robot axes are currently not supported.
Robot IK is not supported on WebGL builds.
It is necessary that the positions of the robot axes can be defined by the following parameters:

Robot Preparation
The robot must be prepared for inverse kinematics taking into account the following things:
The zero point of the robot must have the Unity X axis aligned forward, Z upward, and Y to the left (in the following picture you see an additional right handed coordinate system - which is normally used in industrial robotics - Unity's coordinate system is left handed)

The RobotIK script itself must be connected to the game object in the zero point.
The first rotation axis must also be at the zero point.
All other axes must not be rotated with respect to the zero point (i.e. again X to the front, Z to the top and Y to the left)
The TCP (standard TCP as well as possibly own shifted TCPs for tools) must also have Z aligned to the top, Y to the left and X to the front in the stretched position.

On each Axis a Drive needs to be attached. For the drive, limits and accelerations need to be defined. The upper and lower limits are considered for calculating the possible solutions.

All 6 axes need to be assigned in the Axis list in RobotIK.
Prepared robot kinematic prefab
Simplify the process of defining new robots with our preconfigured robot kinematic prefab. This prefab streamlines the setup by including essential components like the RobotIK Script, Axis hierarchy with drives, and a predefined pick and place path. All you need to do is add the 3D data of the robot meshes.

Empty Robot Kinematic Prefab:
Prefab Path:
Packages/io.realvirtual.professional/Runtime/IK/EmptyRobotKinematic.prefab
Steps to Customize Your Robot:
Add Prefab to Scene: Drag the prefab into your Unity scene to begin customization.
Unpack Prefab: Unpack the prefab in the scene to access its individual components for adjustment.
Adjust Axis Positions: Modify the positions of Axis 1 to Axis 6 to match the specifications provided in the robot's datasheet.
Import CAD Data: Use CADLink to import the robot's CAD data in STEP format for accurate representation.
Export as FBX: Create an FBX asset based on the imported CAD data using the FBX exporter.
Add FBX to Model: Place the exported FBX file into your Unity scene.
Organize Components: Move the components of Axis 1 to Axis 6 under the corresponding Axis in the unpacked prefab hierarchy.
Calculate Kinematic Parameters: Start "Calc Kinematic Parameters" in the RobotIK script to compute kinematic parameters automatically (see below).
Start Testing: Enter play mode to begin testing your robot's functionality and behavior within the Unity environment.
Calculating the kinematic parameters
Calculating the kinematic parameters needs to be done once when the robot is prepared. All parameters (a1,a2,b,c1,c2,c3,c4) which are shown in the picture above are automatically calculated and used later on for calculating the inverse kinematic solutions. Before calculating the parameters you also need to define in which position the robot is in editor mode. If the Elbow is oriented in Unity X-Direction you need to select Elbow in Unity X. Activate "Do not follow in Edit Mode" to override the parameter "Follow in Edit Mode" at all current Target positions. After everything is prepared Calc Kinematic Parameters can be pushed and you will see all parameters in the RobotIK inspector window.

Defining Paths
Robot paths are defined by lining up targets. A target is the alignment of the robot's TCP at a defined position. Robot paths and targets must be created under the RobotIK script (the robot's zero point) as a child game object.
To create a path, an empty gameobject must first be created and an IKPath script added. New targets can be added in the IKPath Inspector window by pushing Add new target. As soon as a target is active, the robot will also follow in the editor to the defined position. If this is not reachable, then a red sphere appears around the target.
If the path is activated, all targets below the path can be moved in the editor window. If the CTRL key is held down, the targets can be rotated.

The sequence of the paths can be arranged by changing the order in the target list.
Scene View Gizmos
This feature was added in realvirtual 6.3 (Professional)
The IK system provides comprehensive scene view visualizations to help you understand and debug robot kinematics. All gizmos are controlled via toggle properties on the RobotIK component.
RobotIK Gizmo Toggles:
Draw Gizmos (master toggle) - Enables or disables all IK gizmos in the scene view. When enabled, always shows a TCP marker (orange wire sphere with XYZ axis lines).
Show Elbow Direction - Displays an arrow at the robot base indicating the elbow direction (X or Z in robot local frame).
Show Kinematic Chain - Draws white lines connecting Base through all axes to TCP, with DH parameter labels at segment midpoints. For non-spherical wrist robots, additional offset indicator lines are shown.
Show Joint Positions - Renders colored arcs at each axis showing the joint range and current position. The current position needle is color-coded: green at center of range, yellow near limits, red at limits.
Show Axis Frames - Displays small XYZ coordinate frames at each axis with rotation direction labels.
Show Wrist Type - For spherical wrists: green wire sphere around A4/A5/A6. For non-spherical wrists: orange dashed offset lines with distance labels.
Path Gizmos (IKPath / IKTarget):
When an IKPath or IKTarget is selected, additional gizmos are drawn:
Path lines - Green lines for Linear segments, yellow lines for PTP segments.
Direction arrows - Cone-shaped arrows at segment midpoints showing travel direction.
Target labels - Index and name (e.g. "0: PickPos") displayed above each target.
TCP orientation - Small XYZ axis lines at each target showing the TCP orientation.
StartNextPath connection - Dashed line from the last target to the first target of the next path.
Blend zones - Visualized when blending is enabled (see Zone Blending).
Zone Blending (Ueberschleifen)
This feature was added in realvirtual 6.3 (Professional)
Zone blending allows the robot to transition smoothly to the next target without stopping at the current target. Instead of decelerating to a full stop, the robot starts moving toward the next target when it enters the blend zone, defined by the Blend Radius.


Properties on IKTarget:
Enable Blending (boolean) - Enables zone blending for this target. When enabled, the robot transitions to the next target at BlendRadius distance instead of stopping exactly at this target.
Blend Radius (float, millimeters) - The radius of the blend zone. The robot starts moving toward the next target when the TCP is within this distance of the current target. Minimum value: 1 mm.
Blend behavior depends on the motion type combination:
PTP → PTP
Smooth joint angle redirect - all axes are redirected to the next target's joint angles
Blue transparent sphere
PTP → Linear
Switches to Cartesian linear motion at blend zone entry
Blue transparent sphere
Linear → Linear
Geometrically exact circular arc blend connecting the two linear segments
Orange arc with tangent point markers
Linear → PTP
Stops linear motion and redirects joint angles to the next target
Blue transparent sphere
Cross-path blending: Blending also works across paths connected via Start Next Path. The last target of one path can blend directly into the first target of the next path without the TCP ever stopping.
Constraints: Blending is automatically disabled for a target when:
Wait For Signal is set - the robot must stop to wait for the signal
Wait For Seconds > 0 - the robot must stop and wait
The target is the last target of a non-looping path without Start Next Path
Debug Blending (boolean, on IKPath) - Logs detailed blending state transitions to the console for debugging.
Path Properties
Speed Override
Override Speed between 0 and 1 to slow down the path. Standard is 1.
Set new TCP
Optional. Sets a new TCP for the robot which is used for the path.
Draw Path
Draws the path as a sequence of lines in editor window. Linear movements are drawn in green, PTP movements in yellow.
Draw Targets
Draws the targets in editor window. Targets can be moved by the handles. With pressed CTRL they can be rotated.
Path
Sequence of targets.
Signal Start
A PLCOutput signal for starting the Path.
Start
Starts the path directly at simulation start.
Loop Path
Starts the path again as soon as the path is ended.
Signal is Started
A PLCInput signal when the Path is started.
Signal Ended
A PLCInput signal when the Path has ended.
Start Next Path
A pointer to the next path which can be started after this path. Supports cross-path blending when the last target has blending enabled.
Debug Blending
Logs detailed blending state transitions to the console for debugging jump issues.
Targets
Targets are the destination points in paths. Within the target, several parameters of the destination are controlled.

Target Properties
Right Handed Robot Coordinates
(Readonly) The position of the target in right handed coordinate system.
Speed to Target
The speed to the target. If set to 1 all axes are driving with the maximum speed (on PTP) or the given linear speed (on Linear Interpolation).
Linear Acceleration
Only applicable for Linear Move mode. The acceleration on the linear path.
Interpolation to Target
The interpolation mode to the target.
Point to Point (PTP) All axes will arrive at the same time at destination. The time is controlled by the axis which takes the longest time. The other axis acceleration is reduced so that they reach the target in the same time as the slowest axis. The movement of the TCP is in this case non-linear and cannot be controlled.
Point to Point unsynced Same as above but all axes drive with maximum speed and reach the destination at different times.
Linear Linear movement between the two targets with the given linear acceleration and linear speed.
Linear Speed to Target
The linear speed to the target for Linear Interpolation.
Set Signal
Sets the defined Signal when the Target is reached.
Set Signal Duration
Sets the Signal for the defined duration.
Wait for Seconds
The robot waits for the defined time after reaching the target. Note: Setting this value > 0 automatically disables blending for this target.
Wait For Signal
Waits at the target before continuing the path until the defined signal becomes true. Note: Setting a signal here automatically disables blending for this target.
Pick and Place
Enables picking and placing MUs at the target.
Grip (new in 6.3)
Reference to a Grip component for pick and place operations. This is the recommended approach. When both Grip and Fixer are assigned, Grip takes priority.
Fixer
Reference to a Fixer component for pick and place operations (legacy).
Pick
True if the grip/fixer should pick at the target.
Place
True if the grip/fixer should place at the target.
IK Solutions
This feature was added in realvirtual 6.3 (Professional)
The IK Solutions panel at the bottom of the IKTarget Inspector shows all reachable solutions for the current target position. Solutions are sorted by angular distance to a reference position (typically the previous target's axis positions), so the most efficient solution appears first.

How it works:
The header shows "IK Solutions (N reachable)" with the number of valid solutions.
Solutions are displayed as clickable rows showing all 6 axis angles in degrees.
The first solution is labeled [BEST] - it requires the smallest total joint movement from the reference position.
Click a row to select that solution. The robot preview in the scene view updates immediately.
The selected solution's raw configuration index is persisted, so it survives re-solving when target positions change.
Axis Pos (readonly) - Shows the calculated axis positions in degrees for the currently selected solution.
Reference Angles (readonly) - The reference joint angles used for sorting solutions. Typically the previous target's axis positions.
Reachable - True if the target is reachable with the selected solution.
Solution Selection Mode
This feature was added in realvirtual 6.3 (Professional)
On the RobotIK component, the Solution Selection property controls what happens when the user's preferred IK solution becomes unreachable (e.g., due to joint limits at a new target position):
First Reachable (default) - Falls back to the first available valid solution.
Minimal Angle Change - Falls back to the solution requiring the smallest total joint movement from the current position.
Note: The IK Solutions list in the IKTarget Inspector is always sorted by minimal angle change regardless of this setting. This property only affects the fallback behavior when the preferred solution is no longer available.
Collaborative Robot IK (Beta)
Collaborative Robot IK is currently in Beta. Position-only IK works reliably, but path planning may produce unexpected results. Added in realvirtual 6.3 (Professional).
Standard industrial robots have a spherical wrist where axes 4, 5 and 6 intersect at a single point. Collaborative robots (cobots) like the FANUC CRX or Universal Robots series have non-spherical wrists with offsets between these axes.
The Wrist Type property on RobotIK selects the solver:
Spherical (default) - Analytical Pieper solver for standard 6-axis robots. Fast and exact with up to 8 solutions.
Non-Spherical - Hybrid solver that uses the analytical Pieper solution as a seed and refines it with a Newton-Raphson numerical solver. Supports robots with wrist offsets (d4, d5, a5, a6 parameters, calculated automatically).
Setup: Select Non-Spherical as Wrist Type, then press "Calc Kinematic Parameters". The wrist offset parameters (d4, d5, a5, a6) are calculated automatically from the axis positions and displayed in the Wrist Offsets foldout.
Seed Strategy (visible only for Non-Spherical):
Mirror Seeds (boolean, default: true) - Generates 8 mirrored wrist-flip seeds from the 4 Pieper base configurations, increasing the chance of finding valid solutions.
Halton Seed Count (0-16, default: 0) - Number of additional Halton low-discrepancy fallback seeds. Increase this if the solver misses solutions for extreme poses.
NR Solver (foldout, visible only for Non-Spherical):
NR Angular Weight (default: 1.0) - Weight for orientation vs position in the Newton-Raphson solver.
NR Orientation Tolerance (default: 0.01 radians / ~0.57°) - Convergence tolerance for orientation.
NR Diagnostics (boolean) - Enable convergence logging to the Unity console for debugging.
Axis correction
In some situations it might happen that an axis is misaligned by 360 degrees. If you are using PTP movements you can use the Axis correction values to set the axis positions for the defined target to a manually corrected value:

Turn correction
In some special cases it might happen that the IK calculation returns axis 4 and 6, each of them turned 180 degrees too much (which is 360 degrees together). If you turn on Turn correction in the case of a sum of 360 of axis 3 and 5, on both axes the value is corrected by -180 degrees.
See Also
Drive - Configure axis drive limits and accelerations used by IK
Grip - Grip component for pick and place at IKTarget positions
Fixer - Legacy fixer component for pick and place
PathTracer (Pro) - Visualize robot TCP motion trails
Kinematic Tool (Pro) - Visual tool for robot axis setup in the editor
© 2026 realvirtual GmbH https://realvirtual.io - All rights reserved. No part of this publication may be reproduced, distributed, or transmitted in any form or by any means, including printing, saving, photocopying, recording, or other electronic or mechanical methods, without the prior written permission of the publisher.
Last updated