hom_mat3d_to_poseT_hom_mat3d_to_poseHomMat3dToPoseHomMat3dToPosehom_mat3d_to_pose (Operator)
Name
hom_mat3d_to_poseT_hom_mat3d_to_poseHomMat3dToPoseHomMat3dToPosehom_mat3d_to_pose
— Convert a homogeneous transformation matrix into a 3D pose.
Signature
Herror T_hom_mat3d_to_pose(const Htuple HomMat3D, Htuple* Pose)
def hom_mat3d_to_pose(hom_mat_3d: Sequence[float]) -> Sequence[Union[int, float]]
Description
hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPoseHomMat3dToPosehom_mat3d_to_pose
converts a homogeneous transformation matrix into
the corresponding 3D pose with type code 0. For details about 3D poses and
the corresponding transformation matrices please refer to
create_posecreate_poseCreatePoseCreatePoseCreatePosecreate_pose
.
A typical application of hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPoseHomMat3dToPosehom_mat3d_to_pose
is that a 3D pose was
converted into a homogeneous transformation matrix to further transform it,
e.g., with hom_mat3d_rotatehom_mat3d_rotateHomMat3dRotateHomMat3dRotateHomMat3dRotatehom_mat3d_rotate
or hom_mat3d_translatehom_mat3d_translateHomMat3dTranslateHomMat3dTranslateHomMat3dTranslatehom_mat3d_translate
, and now
must be converted back into a pose to use it as input for operators like
image_points_to_world_planeimage_points_to_world_planeImagePointsToWorldPlaneImagePointsToWorldPlaneImagePointsToWorldPlaneimage_points_to_world_plane
.
Attention
hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPoseHomMat3dToPosehom_mat3d_to_pose
only supports rigid transformations in
HomMat3DHomMat3DHomMat3DHomMat3DhomMat3Dhom_mat_3d
. For non-rigid transformations, the operator attempts to
return a pose that is close to HomMat3DHomMat3DHomMat3DHomMat3DhomMat3Dhom_mat_3d
. If HomMat3DHomMat3DHomMat3DHomMat3DhomMat3Dhom_mat_3d
deviates significantly from a rigid transformation, the generated pose
may also deviate significantly from HomMat3DHomMat3DHomMat3DHomMat3DhomMat3Dhom_mat_3d
.
Execution Information
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.
Parameters
HomMat3DHomMat3DHomMat3DHomMat3DhomMat3Dhom_mat_3d
(input_control) hom_mat3d →
HHomMat3D, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Homogeneous transformation matrix.
PosePosePosePoseposepose
(output_control) pose →
HPose, HTupleSequence[Union[int, float]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Equivalent 3D pose.
Number of elements: 7
Example (HDevelop)
* Calibrate camera.
calibrate_cameras (CalibDataID,Error)
* Get reference pose (pose 2 of calibration object 0).
get_calib_data (CalibDataID, 'calib_obj_pose',\
[0,2], 'pose', ObjInCameraPose)
* Convert pose to homogeneous transformation matrix.
pose_to_hom_mat3d(ObjInCameraPose, cam_H_cal)
* Rotate it 90 degrees around its y-axis to obtain a world coordinate system
* whose y- and z-axis lie in the plane of the calibration plate while the
* x-axis point 'upwards': cam_H_w = cam_H_cal * RotY(90).
hom_mat3d_identity(HomMat3DIdent)
hom_mat3d_rotate(HomMat3DIdent, rad(90), 'y', 0, 0, 0, \
HomMat3DRotateY)
hom_mat3d_compose(cam_H_cal, HomMat3DRotateY, cam_H_w)
* Convert transformed matrix back to pose.
hom_mat3d_to_pose (cam_H_w, Pose)
Result
hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPoseHomMat3dToPosehom_mat3d_to_pose
returns TRUE if all parameter values are
correct. If necessary, an exception is raised
Possible Predecessors
hom_mat3d_rotatehom_mat3d_rotateHomMat3dRotateHomMat3dRotateHomMat3dRotatehom_mat3d_rotate
,
hom_mat3d_translatehom_mat3d_translateHomMat3dTranslateHomMat3dTranslateHomMat3dTranslatehom_mat3d_translate
,
hom_mat3d_inverthom_mat3d_invertHomMat3dInvertHomMat3dInvertHomMat3dInverthom_mat3d_invert
Possible Successors
camera_calibrationcamera_calibrationCameraCalibrationCameraCalibrationCameraCalibrationcamera_calibration
,
write_posewrite_poseWritePoseWritePoseWritePosewrite_pose
,
disp_caltabdisp_caltabDispCaltabDispCaltabDispCaltabdisp_caltab
,
sim_caltabsim_caltabSimCaltabSimCaltabSimCaltabsim_caltab
See also
create_posecreate_poseCreatePoseCreatePoseCreatePosecreate_pose
,
camera_calibrationcamera_calibrationCameraCalibrationCameraCalibrationCameraCalibrationcamera_calibration
,
disp_caltabdisp_caltabDispCaltabDispCaltabDispCaltabdisp_caltab
,
sim_caltabsim_caltabSimCaltabSimCaltabSimCaltabsim_caltab
,
write_posewrite_poseWritePoseWritePoseWritePosewrite_pose
,
read_poseread_poseReadPoseReadPoseReadPoseread_pose
,
pose_to_hom_mat3dpose_to_hom_mat3dPoseToHomMat3dPoseToHomMat3dPoseToHomMat3dpose_to_hom_mat3d
,
project_3d_pointproject_3d_pointProject3dPointProject3dPointProject3dPointproject_3d_point
,
get_line_of_sightget_line_of_sightGetLineOfSightGetLineOfSightGetLineOfSightget_line_of_sight
,
hom_mat3d_rotatehom_mat3d_rotateHomMat3dRotateHomMat3dRotateHomMat3dRotatehom_mat3d_rotate
,
hom_mat3d_translatehom_mat3d_translateHomMat3dTranslateHomMat3dTranslateHomMat3dTranslatehom_mat3d_translate
,
hom_mat3d_inverthom_mat3d_invertHomMat3dInvertHomMat3dInvertHomMat3dInverthom_mat3d_invert
,
affine_trans_point_3daffine_trans_point_3dAffineTransPoint3dAffineTransPoint3dAffineTransPoint3daffine_trans_point_3d
Module
Foundation