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

This property has been removed.

Error message

This property has been removed.

What it means

RigidEntity.is_free was a property reporting whether the entity is freely floating (no fixed root joint). It has been removed from the Genesis API and now unconditionally raises DeprecationError. The replacement is the link-level equivalent, since a free-floating entity is characterized by its root link's root_joint.

Source

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

    @property
    def equality_start(self):
        """The index of the entity's first RigidEquality in the scene."""
        return self._equality_start

    @property
    def equality_end(self):
        """The index of the entity's last RigidEquality in the scene *plus one*."""
        return self._equality_start + self.n_equalities

    @property
    def equalities(self):
        """The list of equality constraints (`RigidEquality`) in the entity."""
        return self._equalities

    @property
    def is_free(self) -> bool:
        raise DeprecationError("This property has been removed.")

    @property
    def is_local_collision_mask(self):
        """Whether the contype and conaffinity bitmasks of this entity only applies to self-collision."""
        return self._is_local_collision_mask

View on GitHub (pinned to 56e4aa5d82)

Solutions

  1. Use entity.links[entity.root_idx].is_free (root link's is_free) instead
  2. If only fixed-vs-free matters, check entity.is_fixed or the root link's root_joint type
  3. Search the codebase for '.is_free' on entities and migrate all call sites to link-level API

Example fix

// before
if entity.is_free:
    ...
// after
if entity.links[entity.root_idx].is_free:
    ...
Defensive patterns

Strategy: validation

Validate before calling

assert not hasattr(RigidEntity, 'is_free') or False  # after upgrade, grep instead
# runtime check for old code paths:
from genesis.utils.exceptions import DeprecationError

Type guard

def entity_is_free(entity) -> bool:
    return entity.links[entity.root_idx].root_joint.type == gs.JOINT_TYPE.FREE

Try / catch

try:
    val = entity.is_free
except DeprecationError:
    val = entity.links[entity.root_idx].is_fixed is False

Prevention

When it happens

Trigger: Calling entity.is_free on any RigidEntity instance, including indirectly from old user scripts, tutorials, or third-party code written for an earlier Genesis version.

Common situations: Upgrading Genesis to a version where the entity/link/geom API was refactored to be link-centric; running legacy demo scripts or copied forum/GitHub code that checks if an entity is floating via entity.is_free.

Related errors


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