Operators |
This chapter contains operators for handling dual quaternions.
A dual quaternion consists of the two quaternions and , where is the real part, is the dual part, and is the dual unit number (). Each quaternion consists of the scalar part and the vector part , where are the basis elements of the quaternion vector space.
In HALCON, a dual quaternion is represented by a tuple with eight values , where and are the scalar and the vector part of the real part and and are the scalar and the vector part of the dual part.
In contrast to unit quaternions, which are able to represent 3D rotations, a unit dual quaternion is able to represent a full 3D rigid transformation, i.e., a 3D rotation and a 3D translation. Hence, unit dual quaternions are an alternative representation to 3D poses and 3D homogeneous transformation matrices for 3D rigid transformations. In comparison to transformation matrices with 12 elements, dual quaternions with 8 elements are a more compact representation. Similar to transformation matrices, dual quaternions can be combined easily to concatenate multiple transformations. Furthermore, they allow a smooth interpolation between two 3D rigid transformations and an efficient transformation of 3D lines. Each 3D rigid transformation can be represented as a screw:
The parameters that fully describe the screw are:
screw angle
screw translation
direction of the screw axis with
moment of the screw axis with
A screw is composed of a rotation about the screw axis given by and , by the angle , and a translation by along this axis. The position of the screw axis is defined by its moment with respect to the origin of the coordinate system. is a vector that is perpendicular to the direction of the screw axis and perpendicular to a vector from the origin to a point on the screw axis. It is calculated by the vector product
The elements of a unit dual quaternion are related to the screw parameters of the 3D rigid transformation as:
Note that and represent the same 3D rigid transformation. Further note that the inverse of a unit dual quaternion is its conjugate, i.e., (see dual_quat_conjugate for detailed information about the conjugate of a dual quaternion).
Lines in 3D can be represented by dual unit vectors. A dual unit vector can be interpreted as a dual quaternion with 0 scalar parts. The 3D rigid transformation that is represented by a unit dual quaternion is easily related to the corresponding screw around a screw axis. As described above, the screw axis is defined by its direction with and its moment with respect to the origin of the coordinate system with . In the same way, a 3D line can be represented by its direction with and its moment . The six parameters of and are called the Plücker coordinates of the line.
Consequently, a line that is represented by a dual quaternion with 0 scalar part is
Operators |