Python Library for MuJoCo Format model xml
Have you ever wanted to generate MuJoCo format xml files from Python classes? Of course you have! That's why this library exists.
For every mjcf element there is now a Python class for you to play with.
The following is the contents of gen_empty.py which will (re)generate
empty-gen.xml. This is an empty checkerboard world, ripe for populating with
creations of your devising!
You can then run that world with
python model-viewer.py empty-gen.xml
frommjcfimportelementsasedefmain():
########################## Level 1mujoco=e.Mujoco(
model="empty"
)
########################## Level 2option=e.Option(
integrator="RK4",
timestep=0.01
)
asset=e.Asset()
worldbody=e.Worldbody()
mujoco.add_children([
option,
asset,
worldbody
])
####################### Level 3# Assettex1=e.Texture(
builtin="gradient",
height=100,
rgb1=[1, 1, 1],
rgb2=[0, 0, 0],
type="skybox",
width=100
)
tex2=e.Texture(
builtin="flat",
height=1278,
mark="cross",
markrgb=[1, 1, 1],
name="texgeom",
random=0.01,
rgb1=[0.8, 0.6, 0.4],
rgb2=[0.8, 0.6, 0.4],
type="cube",
width=127
)
tex3=e.Texture(
builtin="checker",
height=[100],
name="texplane",
rgb1=[0, 0, 0],
rgb2=[0.8, 0.8, 0.8],
type="2d",
width=100
)
mat1=e.Material(
name="MatPlane",
reflectance=0.5,
shininess=1,
specular=1,
texrepeat=[60, 60],
texture="texplane"
)
mat2=e.Material(
name="geom",
texture="texgeom",
texuniform=True
)
asset.add_children([
tex1,
tex2,
tex3,
mat1,
mat2,
])
# Worldbodylight=e.Light(
cutoff=100,
diffuse=[1, 1, 1],
dir=[-0, 0, -1.3],
directional=True,
exponent=1,
pos=[0, 0, 1.3],
specular=[.1, .1, .1]
)
floor_geom=e.Geom(
conaffinity=1,
condim=3,
material="MatPlane",
name="floor",
pos=[0, 0, 0],
rgba=[0.8, 0.9, 0.8, 1],
size=[40, 40, 40],
type="plane"
)
worldbody.add_children([
light,
floor_geom,
])
model_xml=mujoco.xml()
# Outputwithopen('empty-gen.xml', 'w') asfh:
fh.write(model_xml)
if__name__=='__main__':
main()So these are thin Python class wrapers for XML elements?
Yup!
Why?
Python all the things!
Ok
Shutup!