Robot's orientation never updates?

Note: For any Isaac Lab topics, please submit your topic to its GitHub repo (GitHub - isaac-sim/IsaacLab: Unified framework for robot learning built on NVIDIA Isaac Sim) following the instructions provided on Isaac Lab’s Contributing Guidelines (Contribution Guidelines — Isaac Lab Documentation).

Please provide all relevant details below before submitting your post. This will help the community provide more accurate and timely assistance. After submitting, you can check the appropriate boxes. Remember, you can always edit your post later to include additional information if needed.

Isaac Sim Version

[*] 4.5.0
4.2.0
4.1.0
4.0.0
4.5.0
2023.1.1
2023.1.0-hotfix.1
Other (please specify):

Operating System

Ubuntu 22.04
Ubuntu 20.04
[*] Windows 11
Windows 10
Other (please specify):

GPU Information

  • Model: 4080 mobile
  • Driver Version: Studio 572.16

Topic Description

Detailed Description

(Describe the issue in detail, including what you were trying to do, what you expected to happen, and what actually happened)

During runtime, I wish to dynamically create cubes in front of my robot based on the robot’s local forward and a specified offset distance.
I thus obtained the orientation quaternion from the robot’s pose, converted the quaternion to a rotation matrix, multipled the local forward [1,0,0] by the rotation matrix to get the world representation of the local forward. This world representation is then multipled by the desired offset distance, and the cube is spawned at the obtained position.

However, the orientation of the robot never updates, and is always pointing in world forward. All the cubes I create thus keep spawning only in the world forward. Thus happens regardless whether I use the quaternion from get_world_pose or get_local_pose. Specifying an quaternion orientation when creating the robot does make the robot spawn with the desired orientation (e.g. passing in a quaternion of [0.7071, 0, 0, 0.7071] will make the robot spawn 90 degrees rotated around the z-axis, and the euler angles in the inspector confirm this. But the obtained quaternion in code doesn’t reflect this 90 degrees rotation, and represents the robot as still facing in world forward.

What am I misunderstanding here? Thanks!