jinxing众所周知,mujoco是强化学习领域很常用的仿真引擎。
众所周知,在实现强化学习的算法的时候我们需要用到其pytho接口。
众所周知,mujoco原来是openai的,提供的接口是mujoco-py,但很多年不维护了。
众所周知,mujoco被deepmind收购并开源了,现在接口是dm_control,更新很勤。
所以今天主要讲解一下dm_control的用法。
其官网文档链接为:https://colab.research.google.com/github/deepmind/dm_control/blob/main/tutorial.ipynb#scrollTo=T5f4w3Kq2X14首先,引入模型文件。
from dm_control import mujoco
import PIL.Image
swinging_body = """
<mujoco>
<worldbody>
<light name="top" pos="0 0 1"/>
<body name="box_and_sphere" euler="0 0 -30">
<joint name="swing" type="hinge" axis="1 -1 0" pos="-.2 -.2 -.2"/>
<geom name="red_box" type="box" size=".2 .2 .2" rgba="1 0 0 1"/>
<geom name="green_sphere" pos=".2 .2 .2" size=".1" rgba="0 1 0 1"/>
</body>
</worldbody>
</mujoco>
"""
physics = mujoco.Physics.from_xml_string(swinging_body)
pixels = physics.render()
PIL.Image.fromarray(pixels)
进行仿真。
duration = 2 # (seconds)
framerate = 30 # (Hz)
# Visualize the joint axis
scene_option = mujoco.wrapper.core.MjvOption()
scene_option.flags[enums.mjtVisFlag.mjVIS_JOINT] = True
physics.reset() # Reset state and time
while physics.data.time < duration:
physics.step()