Skip to content

_initialize_simulation does not capture return value from super(), causing AttributeError on self.model #29

Description

@christianholzDE

Description

Creating any MIMo environment fails with AttributeError: 'MIMoReachEnv' object has no attribute 'model'. This seems to happen because MIMoEnv._initialize_simulation() calls super()._initialize_simulation() without storing and passing the return value, so self.model and self.data are not set.

Possible cause

In mimo_env.py in line 380:

def _initialize_simulation(self):
    super()._initialize_simulation()  # returns (model, data) but discards it
    fps = int(np.round(1 / self.dt))  # self.dt needs self.model, which i snot assigned

It seems, Gymnasium's MujocoEnv.__init__ expects _initialize_simulation() to return (model, data):

# gymnasium/envs/mujoco/mujoco_env.py line 77:
self.model, self.data = self._initialize_simulation()

Suggested fix

Assign the return values during the initialization and then retunr them:

def _initialize_simulation(self):
    self.model, self.data = super()._initialize_simulation()
    fps = int(np.round(1 / self.dt))
    ...
    self.actuation_model = self.actuation_model(self, self.mimo_actuators)
    return self.model, self.data

Environment

  • Python 3.12.3
  • gymnasium 1.2.3
  • mujoco 3.3.0
  • MIMo tagged as v2.0.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions