A pose describes a rigid 3D transformation, i.e., a transformation
consisting of an arbitrary translation and rotation.
In HALCON, a pose is a tuple with 7 parameters: 3 parameters specifying the
translation (

, `TransX`

, and `TransY`

),
3 parameters describing the rotation (`TransZ`

, `RotX`

, and
`RotY`

). The last parameter codes the order of the translations and
the rotations (as well as the direction of rotation).
Further information about these parameters can be found in
the documentation of `RotZ`

and in the
`create_pose`

`“Solution Guide III-C - 3D Vision”`

.

3D poses can be interpreted in two ways: First, to describe the position and orientation of one coordinate system relative to another (e.g., the pose of a part's coordinate system relative to the camera coordinate system - in short: the pose of the part relative to the camera). Following the second interpretation, a pose describes how coordinates can be transformed between two coordinate systems (e.g., to transform points from part coordinates into camera coordinates).

A pose that transforms point coordinates from coordinate system 1
(*cs*1) to coordinate system 2 (*cs*2) is denoted as
. The corresponding transformation of
a point given in *cs*1 () into
*cs*2 () is denoted as

It should be noted that not the pose (as a tuple) but the
transformation described by this pose is used for the multiplication and the
above notation is only used for readability.
Hence, the pose describes the
rigid transformation that is represented by the homogeneous transformation
matrix
(see, e.g., the documentation of

for further details)
`create_pose`

Consequently, the pose describes the
transformation of points from *cs*1 into *cs*2.
Furthermore, as mentioned above, it also describes the transformation of the
coordinate system itself, however, in reverse order: Thus,
describes how coordinate system 2
must be transformed to obtain coordinate system 1, and hence, the pose of
coordinate system 2 relative to system 1.

With this notation, poses can easily concatenated like homogeneous matrices,
e.g.
Such a concatenation can be done using e.g.,

.
`pose_compose`

`convert_pose_type`

- Change the representation type of a 3D pose.

`create_pose`

- Create a 3D pose.

`deserialize_pose`

- Deserialize a serialized pose.

`dual_quat_to_pose`

- Convert a dual quaternion to a 3D pose.

`get_circle_pose`

- Determine the 3D pose of a circle from its perspective 2D projection.

`get_pose_type`

- Get the representation type of a 3D pose.

`get_rectangle_pose`

- Determine the 3D pose of a rectangle from its perspective 2D projection

`pose_average`

- Compute the average of a set of poses.

`pose_compose`

- Combine 3D poses given in two tuples.

`pose_invert`

- Invert each pose in a tuple of 3D poses.

`pose_to_dual_quat`

- Convert a 3D pose to a unit dual quaternion.

`pose_to_quat`

- Convert the rotational part of a 3D pose to a quaternion.

`proj_hom_mat2d_to_pose`

- Compute a pose out of a homography describing the relation between world and image coordinates.

`quat_to_pose`

- Convert a quaternion into the corresponding 3D pose.

`read_pose`

- Read a 3D pose from a text file.

`serialize_pose`

- Serialize a pose.

`set_origin_pose`

- Translate the origin of a 3D pose.

`vector_to_pose`

- Compute an absolute pose out of point correspondences between world and image coordinates.

`write_pose`

- Write a 3D pose to a text file.