in robosumo/envs/agents.py [0:0]
def _set_body(self):
self.body_names = list(filter(
lambda x: self._in_scope(x), self._env.model.body_names
))
self.body_ids = [
self._env.model.body_names.index(name) for name in self.body_names
]
self.body_name_idx = {
name.split('/')[-1]: idx
for name, idx in zip(self.body_names, self.body_ids)
}
# Determine body params
self.body_dofnum = self._env.model.body_dofnum[self.body_ids]
self.body_dofadr = self._env.model.body_dofadr[self.body_ids]
self.nv = self.body_dofnum.sum()
# Determine qvel_start_idx and qvel_end_idx
dof = list(filter(lambda x: x >= 0, self.body_dofadr))
self.qvel_start_idx = int(dof[0])
last_dof_body_id = self.body_dofnum.shape[0] - 1
while self.body_dofnum[last_dof_body_id] == 0:
last_dof_body_id -= 1
self.qvel_end_idx = int(dof[-1] + self.body_dofnum[last_dof_body_id])