You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am trying to attach a body to another one, similar to your example here of child and parent.
However, my child body does have inertial-properties. Attaching the following child body
class Camera:
#===================#
# C O N S T A N T #
#===================#
_com_pos = (0, 0, 0.015)
_dclass = 'wam\\viz'
_mass = 0.095
_mesh_name = 'intel_realsense_l515'
_name = '\\rgb'
_quat = (0, 0, 1, 0)
#===============================#
# I N I T I A L I Z A T I O N #
#===============================#
def __init__(self, name, fovy):
# Make a MujoCo Root
self.mjcf_model = mjcf.RootElement()
# Add a body element: No need to add position info, as that will be added based on which `site` this body is going to be attached (https://github.com/google-deepmind/dm_control/blob/main/dm_control/mjcf/README.md#attachment-frames)
self.camera_body = self.mjcf_model.worldbody.add('body',
name = name)
# Add Inertial properties
self.camera_body.add('inertial',
pos = self._com_pos,
mass = self._mass)
# Add the Geometry (https://github.com/google-deepmind/dm_control/blob/ed424509c0a0e8ddf7a43824924de483026ad9cc/dm_control/locomotion/soccer/humanoid.py#L50)
self.camera_body.add('geom',
mesh = self._mesh_name,
dclass = self._dclass)
# Add camera sensor
self.camera_body.add('camera',
name = name+self._name,
pos = (0, 0, 0),
quat = self._quat,
fovy = fovy)
as such in the parent body
# Add camera locations
# An empty array to hold camera-sites
camera_site = []
for x in range(len(self._camera_pos)):
camera_site.append(self.summit_body.add('site',
pos = self._camera_pos[x],
quat = self._camera_quat[x],
dclass = self._site_name))
# Create camera
# Initialize empty list of camera
cameras = []
for x in range(len(self._camera_pos)):
cameras.append(Camera(name = self._name_summit+'_'+prefix+self._camera_name[x],
fovy = self._camera_fovy[x]))
# Attach the cameras
for x in range(len(self._camera_pos)):
camera_site[x].attach(cameras[x].mjcf_model)
causes the generated file to introduce an unnecessary body called unnamed_model, which is derived from the name of the worldbody (which, in this case, was initialized without a name).
Hello,
I am trying to attach a body to another one, similar to your example here of
child
andparent
.However, my
child
body does have inertial-properties. Attaching the followingchild
bodyas such in the
parent
bodycauses the generated file to introduce an unnecessary body called
unnamed_model
, which is derived from the name of theworldbody
(which, in this case, was initialized without a name).What I am aiming for is a representation similar to your example here, such that I should have:
but I am not allowed to do this because
AttributeError: <inertial> is not a valid child of <worldbody>
.Question;
How can I get such a clean representation while introducing
inertial
properties for attached-bodies?The text was updated successfully, but these errors were encountered: