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 (cs1) to coordinate system 2 (cs2) is denoted as . The corresponding transformation of a point given in cs1 () into cs2 () 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 cs1 into cs2. 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
create_pose
deserialize_pose
dual_quat_to_pose
get_circle_pose
get_pose_type
get_rectangle_pose
pose_average
pose_compose
pose_invert
pose_to_dual_quat
pose_to_quat
proj_hom_mat2d_to_pose
quat_to_pose
read_pose
serialize_pose
set_origin_pose
vector_to_pose
write_pose