Genesis-Embodied-AI/genesis-world · error · DeprecationError

This method has been removed. Please consider operating at l

Error message

This method has been removed. Please consider operating at link-level to get the cartesian orientation in word frame. Alternatively, 'get_anchor_axis' returns the anchor axis of the joint in the world frame.

What it means

RigidJoint.get_quat has been removed because a joint has no cartesian orientation of its own; orientations belong to links. The error directs you to link-level orientation getters or joint.get_anchor_axis() for the joint axis in world frame.

Source

Thrown at genesis/engine/entities/rigid_entity/rigid_joint.py:107

    # ------------------------------------------------------------------------------------
    # -------------------------------- real-time state -----------------------------------
    # ------------------------------------------------------------------------------------

    def get_pos(self):
        """
        Get the position of the joint in the world frame.
        """
        raise DeprecationError(
            "This method has been removed. Please consider operating at link-level to get the cartesian position in "
            "word frame. Alternatively, 'get_anchor_pos' returns the anchor position of the joint in the world frame."
        )

    def get_quat(self):
        """
        Get the quaternion of the joint in the world frame.
        """
        raise DeprecationError(
            "This method has been removed. Please consider operating at link-level to get the cartesian orientation in "
            "word frame. Alternatively, 'get_anchor_axis' returns the anchor axis of the joint in the world frame."
        )

    @gs.assert_built
    def get_anchor_pos(self):
        """
        Get the anchor position of the joint in the world frame.

        Mathematically, the anchor point corresponds to the point that is fixed wrt parent link and is coincident with
        the joint for the neutral configuration qpos0. This means that this point moves under the effect of the
        generalized coordinates corresponding to this joint (and all its ancestors in the kinematic tree). Physically,
        the anchor point is the "output" of the joint transmission, on which the child body is welded.
        """
        tensor = torch.empty((self._solver._B, 3), dtype=gs.tc_float, device=gs.device)
        _kernel_get_anchor_pos(self._idx, tensor, self._solver.dyn_state)
        if self._solver.n_envs == 0:
            tensor = tensor[0]

View on GitHub (pinned to 56e4aa5d82)

Solutions

  1. Use joint.get_anchor_axis() if you need the joint axis in world frame
  2. Use joint.child_link.get_quat() for the cartesian orientation of the attached link
  3. Grep for 'joint.get_quat' and migrate each site to link or anchor API

Example fix

# before
quat = joint.get_quat()
# after
axis = joint.get_anchor_axis()  # joint axis in world frame
# or
quat = joint.child_link.get_quat()
Defensive patterns

Strategy: validation

Try / catch

try:
    q = joint.get_quat()
except DeprecationError:
    q = joint.child_link.get_quat()

Prevention

When it happens

Trigger: Calling joint.get_quat() on a RigidJoint, e.g. legacy code computing a joint frame rotation or aligning an attachment to a joint.

Common situations: Upgrading Genesis after the joint API was pruned to anchor-based quantities; porting attachment/IK code from an older release or outdated examples that read a joint's quaternion.

Related errors


AI-assisted analysis of Genesis-Embodied-AI/genesis-world@56e4aa5d82 (2026-08-28). Data as JSON: /api/errors/a0d58d0333549fa7. Report an issue: GitHub.