A narrow pillar to elevate the target.
| 76 | |
| 77 | |
| 78 | class Pedestal(composer.Entity): |
| 79 | """A narrow pillar to elevate the target.""" |
| 80 | _HEIGHT = 0.2 |
| 81 | |
| 82 | def _build(self, cradle, target_radius): |
| 83 | self._mjcf_root = mjcf.element.RootElement(model='pedestal') |
| 84 | |
| 85 | self._mjcf_root.worldbody.add( |
| 86 | 'geom', type='capsule', size=[_PEDESTAL_RADIUS], |
| 87 | fromto=[0, 0, -_PEDESTAL_RADIUS, |
| 88 | 0, 0, -(self._HEIGHT + _PEDESTAL_RADIUS)]) |
| 89 | attachment_site = self._mjcf_root.worldbody.add( |
| 90 | 'site', type='sphere', size=(0.003,), group=constants.TASK_SITE_GROUP) |
| 91 | self.attach(cradle, attachment_site) |
| 92 | self._target_site = workspaces.add_target_site( |
| 93 | body=self.mjcf_model.worldbody, |
| 94 | radius=target_radius, rgba=constants.RED) |
| 95 | |
| 96 | @property |
| 97 | def mjcf_model(self): |
| 98 | return self._mjcf_root |
| 99 | |
| 100 | @property |
| 101 | def target_site(self): |
| 102 | return self._target_site |
| 103 | |
| 104 | def _build_observables(self): |
| 105 | return PedestalObservables(self) |
| 106 | |
| 107 | |
| 108 | class PedestalObservables(composer.Observables): |
no outgoing calls
no test coverage detected
searching dependent graphs…