IsaacLab icon indicating copy to clipboard operation
IsaacLab copied to clipboard

[Proposal] Change Default Euler Angle Range in euler_xyz_from_quat

Open ShaoshuSu opened this issue 8 months ago • 2 comments

Proposal

Change the default behavior of the euler_xyz_from_quat function to return Euler angles in the range (-π, π] instead of [0, 2π). Introduce an optional argument allowing users to explicitly request the [0, 2π) range when necessary.

Motivation

Euler angles represented in the (-π, π] range are more intuitive and widely adopted within the robotics community. Users currently must manually adjust outputs, which leads to redundant and scattered implementations across multiple projects. Examples of user-implemented adjustments can be found in:

  • https://github.com/jaykorea/Isaac-RL-Two-wheel-Legged-Bot/.../rewards.py#L17
  • https://github.com/lorenzo-bianchi/IsaacLab/.../quadcopter_env_v1.py#L219
  • https://github.com/kscalelabs/klab/.../imu.py#L17

This proposal aims to centralize and standardize angle normalization.

Alternatives

An alternative is to continue using the current implementation, which would require individual users to manually perform angle wrapping each time they invoke the function.

Additional context

Euler angle normalization issues frequently cause confusion and subtle bugs in robotics simulations and control algorithms.

Checklist

  • [x] I have checked that there is no similar issue in the repo (required)

Acceptance Criteria

  • [ ] Default output from euler_xyz_from_quat is changed to the range (-π, π].
  • [ ] An argument enables the legacy [0, 2π) range.
  • [ ] Documentation clearly reflects the new default behavior and the optional argument.
  • [ ] Unit tests are provided to verify behavior.

ShaoshuSu avatar Apr 24 '25 04:04 ShaoshuSu

Thanks for posting this. Maybe the function should have an argument to specify the convention requested. The team will review.

RandomOakForest avatar Apr 24 '25 13:04 RandomOakForest

Hi @RandomOakForest, thanks for your comment! Actually, I've opened a PR https://github.com/isaac-sim/IsaacLab/pull/2365 to address this improvement. If the code meets the team's standards, I am glad to contribute that PR to the project : )

ShaoshuSu avatar Apr 24 '25 13:04 ShaoshuSu