Transform matrix convention and pose_from_tf_matrix (version 2022.2.1)


The transform matrix that we get from Isaac sim is Row major. But the function pose_from_tf_matrix (omni.isaac.core.utils.transformations) excepts a column major matrix. Is that not a little bit strange that you have a convention in Isaac sim for Row major but then a function doesn’t expect the convention but the transform of it?

Note: Also in the properties tab in Isaac Sim it is shown in column major form

Hi @nickbakker40 - The difference between row-major and column-major format in terms of linear algebra efficient computation and storage, most 3D graphics libraries prefer column-major format. This is because column-major format is more efficient for computer graphics transformations.

For Isaac Sim, Row major Matrix representation is preferred for the transformations obtained from information such as pose and orientation data. Despite this, the convention does not limit using a column-first, or column-major, memory layout. This is because the multi-dimensional data still can be visualized as being stored in a column-major layout even when iterating in row-major order.

To get congruent results between the Isaac Sim Component Properties UI and Isaac Sim functions, use column-major order instead of row-major for the pose_from_tf_matrix function. For instance, you could transpose the matrix before calling pose_from_tf_matrix if it was originally in row-major format.

Your observation about the function not being consistent with Isaac Sim convention is understandable, but it might be due to api decisions for that specific function meant to serve generic cases rather than being used primarily in Isaac Sim.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.