rospy convert matrix to transform
How would I convert a 4x4 numpy matrix to (translation, quaternion) using tf
(or some other package package) in python?
On the wiki for python tf, I found the method fromTranslationRotation
, which converts (translation, quaternion) to numpy matrix. What's the method that does the inverse operation?
The context (though I'm not sure this is relevant) is to connect two tf trees.
/camera_1
/ar_marker_1
/camera_2
/ar_marker_2
I can't easily measure the transform between camera_1
and camera_2
, so I've placed AR markers where I can easily measure the transform between them, and one camera can see each marker. I know the transform between ar_marker_1
and ar_marker_2
, but tf trees have to be connected by the root, so I've used matrices to compute the transform from ar_marker_1
to camera_2
, but now I can't figure out how to publish that transform because it's a matrix, not a (translation, quaternion).
Asked by dinosaur on 2015-07-06 15:47:25 UTC
Answers
tf.transformations.decompose_matrix
is able to get the translation, rotation and more from a matrix. Example usage:
scale, shear, rpy_angles, translation_vector, perspective = \
tf.transformations.decompose_matrix(transformation_matrix)
The source code is here.
Asked by dinosaur on 2015-07-06 17:54:30 UTC
Comments
Here's a related question in c++: http://answers.ros.org/question/103411/4x4-transformation-matrix-to-tf-transform/
Asked by dinosaur on 2015-07-06 17:56:45 UTC