2.5. Prerequisites and voraus conventions
This chapter describes the coordinate system conventions used throughout the voraus.core software stack. For a more detailed description of the coordinate systems, see the voraus Robot Control documentation.
2.5.1. Cartesian Pose Representation
A Cartesian pose in the voraus.core is always represented as a six-element vector:
[x, y, z, A, B, C]
where:
x,y,z- translational components in meters [m]A,B,C- rotational components in radians [rad]
The orientation is described using Cardan angles (also known as Tait–Bryan angles) following the intrinsic rotation
convention Rx * Ry' * Rz'':
A- rotation around the X-axis (first rotation)B- rotation around the Y-axis (second rotation, around the rotated Y’)C- rotation around the Z-axis (third rotation, around the twice-rotated Z’’)
Note
In the Python API (voraus Robot Arm), the Cardan angles are referred
to as rx, ry, rz instead of A, B, C. The meaning and convention are
identical.
Warning
Conversion of Cardan angles to other orientation representations (rotation matrices or quaternions) is subject to
gimbal lock when B (rotation around Y) approaches ±90°. In this case, A and C are no longer
independently distinguishable. The voraus.core handles this internally.
Internally, the voraus.core uses quaternions [w, x, y, z] for orientation interpolation during
Cartesian motions. The quaternion representation avoids gimbal lock and ensures smooth rotation paths. Conversion
between Cardan angles and quaternions is handled automatically.
2.5.2. Robot Coordinate System
Details about the robot coordinate system can be found in the voraus Robot Control documentation, in this section the main convention for the robot coordinate system (CS) used in the voraus.core software stack is summarized.
The Robot CS is the default coordinate system for specifying Cartesian poses and is usually fixed at the robot’s mounting point, i.e., the interface between the robot base and the surface it is mounted on. Some robot manufacturers define their internal origin at a different location than the mounting point. For example, FANUC places its internal coordinate origin at axis 2, as shown in Fig. 63. Yaskawa robots use the same axis 2 convention. The voraus.core handles the transformation between the manufacturer’s origin and the mounting point automatically.
Fig. 63 Exemplary FANUC robot: Robot CS is located at the robot’s mounting point, the manufacturers internal origin is located at axis 2 (A2).
For KUKA robots the internal origin is located at the robot’s mounting point, which is also the Robot CS. This means that for KUKA robots, the Robot CS and the manufacturer’s internal origin coincide, as shown in Fig. 64.
Fig. 64 Exemplary KUKA robot: Robot CS is located at the robot’s mounting point, the manufacturers internal origin is located at the same point.
2.5.3. Tool Configuration
The voraus.core and the robot controller maintain their own, separate models of the configured tool. When a tool is configured in the voraus.core (see Configure Tool), the two systems are not fully synchronized. It is therefore important to understand which tool information is shared with the robot controller and which is not.
Depending on the robot manufacturer, only the tool’s mass properties (mass, center of mass and moments of inertia) are transmitted to the robot controller. This information is required by the robot controller for its internal functions, such as dynamic model calculations and load monitoring.
The tool transformation (i.e., the pose of the Tool CS relative to the robot flange) is not transmitted to the robot controller, because voraus.core controls the robot at joint level. The TCP transformation may be applied exclusively within the voraus.core.
Note
As a consequence, the Cartesian poses reported by the voraus.core and the Cartesian poses displayed on the robot controller (for example on a KUKA or Yaskawa teach pendant) can differ.
When comparing Cartesian poses between the voraus.core and the robot controller, this difference in reference points must be taken into account. The poses only coincide when no tool transformation is configured, i.e., when the TCP is identical to the robot flange.
Warning
For Yaskawa robots, the tool’s mass properties cannot be transmitted to the robot controller. Therefore, its mass properties must be configured identically and directly in the Yaskawa Therefore, its mass properties must be configured directly in the Yaskawa robot controller instead. Otherwise, the robot controller’s internal functions, such as dynamic model calculations and load monitoring, operate with incorrect load information.