Skip to content

Commit f4e5e23

Browse files
erez-tomcopybara-github
authored andcommitted
Use xbody rather than body for egocentric computations.
This change fixes a bug introduced in [this change](a6d753f), which replaced numpy-based computation of relative frames with native MuJoCo sensors. PiperOrigin-RevId: 465799007 Change-Id: Ifab1b41880e16309e02bc2ec9bcc28b4c5bff489
1 parent c7a5613 commit f4e5e23

2 files changed

Lines changed: 11 additions & 8 deletions

File tree

dm_control/locomotion/walkers/ant.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ def appendages_pos(self):
159159
self._entity.appendages_sensors.append(
160160
self._entity.mjcf_model.sensor.add(
161161
'framepos', name=body.name + '_appendage',
162-
objtype='body', objname=body,
163-
reftype='body', refname=self._entity.root_body))
162+
objtype='xbody', objname=body,
163+
reftype='xbody', refname=self._entity.root_body))
164164
def appendages_ego_pos(physics):
165165
return np.reshape(
166166
physics.bind(self._entity.appendages_sensors).sensordata, -1)
@@ -175,8 +175,8 @@ def bodies_quats(self):
175175
self._entity.bodies_quats_sensors.append(
176176
self._entity.mjcf_model.sensor.add(
177177
'framequat', name=body.name + '_ego_body_quat',
178-
objtype='body', objname=body,
179-
reftype='body', refname=self._entity.root_body))
178+
objtype='xbody', objname=body,
179+
reftype='xbody', refname=self._entity.root_body))
180180
def bodies_ego_orientation(physics):
181181
return np.reshape(
182182
physics.bind(self._entity.bodies_quats_sensors).sensordata, -1)
@@ -191,8 +191,8 @@ def bodies_pos(self):
191191
self._entity.bodies_pos_sensors.append(
192192
self._entity.mjcf_model.sensor.add(
193193
'framepos', name=body.name + '_ego_body_pos',
194-
objtype='body', objname=body,
195-
reftype='body', refname=self._entity.root_body))
194+
objtype='xbody', objname=body,
195+
reftype='xbody', refname=self._entity.root_body))
196196
def bodies_ego_pos(physics):
197197
return np.reshape(
198198
physics.bind(self._entity.bodies_pos_sensors).sensordata, -1)

dm_control/locomotion/walkers/legacy_base.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,11 +223,14 @@ def end_effectors_pos(self):
223223
"""Position of end effectors relative to torso, in the egocentric frame."""
224224
self._entity.end_effectors_pos_sensors[:] = []
225225
for effector in self._entity.end_effectors:
226+
objtype = effector.tag
227+
if objtype == 'body':
228+
objtype = 'xbody'
226229
self._entity.end_effectors_pos_sensors.append(
227230
self._entity.mjcf_model.sensor.add(
228231
'framepos', name=effector.name + '_end_effector',
229-
objtype=effector.tag, objname=effector,
230-
reftype='body', refname=self._entity.root_body))
232+
objtype=objtype, objname=effector,
233+
reftype='xbody', refname=self._entity.root_body))
231234
def relative_pos_in_egocentric_frame(physics):
232235
return np.reshape(
233236
physics.bind(self._entity.end_effectors_pos_sensors).sensordata, -1)

0 commit comments

Comments
 (0)