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

This method has been removed. Please use 'get_AABB()' instea

Error message

This method has been removed. Please use 'get_AABB()' instead.

What it means

get_aabb() (lowercase) was removed from RigidEntity; the replacement is get_AABB(). Calling the old name raises DeprecationError immediately. The new method computes the axis-aligned bounding box on the fly from all vertex positions and supports envs_idx selection.

Source

Thrown at genesis/engine/entities/rigid_entity/rigid_entity.py:3450

        # FIXME: Remove this branch after implementing 'get_verts'.
        if self._enable_heterogeneous and self._solver.n_envs > 0:
            envs_idx = self._scene._sanitize_envs_idx(envs_idx)
            n_envs = len(envs_idx)
            aabb_min = torch.full((n_envs, 3), float("inf"), dtype=gs.tc_float, device=gs.device)
            aabb_max = torch.full((n_envs, 3), float("-inf"), dtype=gs.tc_float, device=gs.device)
            for geom in self.geoms:
                geom_aabb = geom.get_AABB()
                active_mask = geom.active_envs_mask[envs_idx] if geom.active_envs_mask is not None else ()
                aabb_min[active_mask] = torch.minimum(aabb_min[active_mask], geom_aabb[envs_idx[active_mask], 0])
                aabb_max[active_mask] = torch.maximum(aabb_max[active_mask], geom_aabb[envs_idx[active_mask], 1])
            return torch.stack((aabb_min, aabb_max), dim=-2)

        # Compute the AABB on-the-fly based on the positions of all the vertices
        verts = self.get_verts()[envs_idx if envs_idx is not None else ()]
        return torch.stack((verts.min(dim=-2).values, verts.max(dim=-2).values), dim=-2)

    def get_aabb(self):
        raise DeprecationError("This method has been removed. Please use 'get_AABB()' instead.")

    @gs.assert_built
    def get_links_pos(
        self,
        links_idx_local=None,
        envs_idx=None,
        *,
        ref: link_ref_frame = link_ref_frame.link_origin,
        relative=True,
    ):
        """
        Returns the position of a given reference point for all the entity's links.

        Parameters
        ----------
        links_idx_local : None | array_like
            The indices of the links. Defaults to None.
        envs_idx : None | array_like, optional

View on GitHub (pinned to 56e4aa5d82)

Solutions

  1. Replace `get_aabb()` with `get_AABB(envs_idx=...)`.
  2. Grep the codebase for `.get_aabb(` and update all call sites.

Example fix

# before
aabb = entity.get_aabb()

# after
aabb = entity.get_AABB()
Defensive patterns

Strategy: validation

Validate before calling

if hasattr(entity, "get_AABB"):
    aabb = entity.get_AABB()
else:  # legacy fallback
    aabb = entity.get_aabb()

Type guard

def get_aabb_safe(entity):
    getter = getattr(entity, "get_AABB", None) or getattr(entity, "get_aabb", None)
    if getter is None:
        raise AttributeError("no AABB getter")
    return getter()

Try / catch

try:
    aabb = entity.get_AABB()
except AttributeError:
    aabb = entity.get_aabb()  # older Genesis versions

Prevention

When it happens

Trigger: Calling `entity.get_aabb()` on a RigidEntity, typically via code written against an older Genesis version or copied from old examples/tests.

Common situations: Upgrading Genesis to a version that renamed the API; stale tutorials/StackOverflow snippets; downstream codebases that cached the old lowercase name.

Related errors


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