You're reading the documentation for a development version. For the latest released version, please have a look at master.

3D Transformation Concept

To use Vision Studio, some concepts of 3D transformation are necessary.

Pose and Transformation

Pose stands for the position and rotation.
../../_images/3d-right-hand.png

Position is usually represented by right hand rule, and R/G/B stands for X/Y/Z.

Rotation is represented by Euler angles(Rx, Ry, Rz) or Quaternions (a, b, c, w). Vision Studio use Euler angles by default.

A transformation or pose of target (A) coordinate in reference (B) coordinate is represented by A in B .

Hint

For example, Obj initially is at the origin of reference coordinate (B) which is (0, 0, 0, 0, 0, 0), and we move the Obj to the position [100,100,50]. Afterwards, we rotate the Obj along it’s X axis for 60 degree. The final pose of Obj is [100, 100, 50, 60, 0, 0].

../../_images/3d-pose-example.png

Caution

Talking about the orientation, we usually use Euler order to represent the orientation. Ane euler angle will need to have a specified rotation order. Different robot may have different conventions, for example ABB robot used the ZYX sequence. For more details, refer to the page

Sources of pose and transformation in Vision Studio:
  • Robot Read

  • Calibrations (Calibration, Sphere Calibration, DA Calibration)

  • Detection nodes (Mod Finder, Reconstruct, Box Volume Estimation, Alignment)

  • Manually Define (Assemble Pose, Gripper)

Transformation Tree

Transformation Tree is using known poses and transformations to calculate the unknowns.
../../_images/3d-transformation-tree.png

Important

The process of detection, calibration and robot guidance all serves the core Transformation Tree, so understanding it’s concept is the very important.

How to Establish a Transformation Tree?

In the figure below, there are five objects ABCDE, and some of the relative positions are known, and constructed a transformation chain(Purple).

Known transformations: [A in World] [E in A] [D in World] [C in D] [B in C]
../../_images/3d-transformation-tree-example1.png

Then the transformation between any two objects in the same transformation chain can be computed by transformation tree.

[B in E] or [D in A] etc. are all in the same transformation chain thus able to be computed.
../../_images/3d-transformation-tree-example2.png

However, if two objects are not in the same transformation chain, their transformation cannot be computed. To be able to calculate the transformation, the transformation chain must be connected first.

B and E are not in the same transformation chain.
../../_images/3d-transformation-tree-example3.png

To acquire [B in E], first acquire any transformation that will make B and E be in the same transformation chain.

For an example, [C in A].
../../_images/3d-transformation-tree-example4.png