Hi, I’m using Omniverse Isaac Sim 4.5.0, and I’m trying to retrieve the Euler angles of an object through Python API. Here’s what I’m facing:
- In the Transform UI, I manually input Euler angles like (200°, 300°, 300°).
- However, when I query the object’s rotation using
xformOp:orient
, I get a quaternion. - I tried converting this quaternion back to Euler angles using:
quat_to_euler_angles()
from the official API,scipy.spatial.transform.Rotation.from_quat()
,- Custom math function (XYZ or ZYX decomposition).
- But all approaches give me Euler angles like (-160°, -60°, -60°) instead of my original input (200°, 300°, 300°).
🧩 My goal:
I want to retrieve the Euler angles that match exactly what I input into the Transform UI, so I can do accurate comparisons or validation in scripts. But due to angle wrapping or internal conversion behavior, it’s hard to determine if the actual rotation is the same as what I set.
🧠 What I understand:
- The Transform UI accepts degrees and converts them internally to quaternions (
xformOp:orient
). - Euler angles are not stored directly.
- Due to the non-uniqueness of Euler angles (especially near gimbal lock), the same rotation can produce multiple Euler representations.
Questions:
- Is there a way to retrieve the Euler angles as they were entered into the UI (before conversion)?
- Or is there a canonicalized way in Omniverse to normalize or compare Euler input and quaternion-converted Euler output?
- Is the UI internally using a specific rotation order (e.g., XYZ or ZYX)? Can I enforce that when using
quat_to_euler_angles()
?