Description
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
- 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.