安装之前最好看一下mujoco官方文档https://mujoco.readthedocs.io/en/stable/overview.html
注意!!!
mujoco是一个物理引擎,被deepmind收购后开源了,开源地址https://github.com/deepmind/mujoco,且编程接口也被集成进去了,所以只要import mujoco
就能实现python接口的开发。而mujoco-py是原python接口,由OpenAI开发,因为deepmind和openai的竞争关系,这个api接口几年前就停止更新了,所以用mujoco-py的代码完全不兼容现在的mujoco。
安装
现在的mujoco
可以直接通过pip安装,注意Python(≥3.8)
pip install mujoco
也可选择自定义源下载
pip install mujoco -i https://pypi.tuna.tsinghua.edu.cn/simple
不是安装
pip install mujoco-py
!!!
mujoco_py
和mjpro150
或者mjpro210
啥的都成为历史了(参考:https://github.com/deepmind/mujoco/issues/347
安装完成后,进入python,测试mujoco是否安装成功:
import mujoco #注意不是mujuco_py
print(mujoco.__version__)
如果正确显示mujoco版本号如3.2.2
,则mujoco安装成功
示例
新建一个名为bowl.xml
文件:
<mujoco model="Bowl">
<statistic meansize=".05"/>
<worldbody>
<light pos=".1 0 .6"/>
<light pos="-.1 0 .6"/>
<geom type="plane" size="1 1 .01"/>
<body pos="-.1 0 .04" euler="20 10 0">
<freejoint/>
<geom type="cylinder" size="0.03 0.002" rgba=".8 0 0 1"/>
<replicate count="20" euler="0 0 18">
<frame pos="-.025 0 .03" euler="0 15 0">
<replicate count="6" euler="0 15 0">
<geom type="box" size=".0044 .009 .002" pos="0 0 -.03" rgba=".8 0 0 1"/>
</replicate>
</frame>
</replicate>
</body>
<body pos="0 0 .02" euler="20 20 0">
<freejoint/>
<geom type="cylinder" size="0.01 0.0015" rgba="0 .8 0 1"/>
<replicate count="20" euler="0 0 18">
<frame pos="-.005 0 .03" euler="0 15 0">
<replicate count="6" euler="0 15 0">
<geom type="box" size=".0044 .006 .0015" pos="0 0 -.03" rgba="0 .8 0 1"/>
</replicate>
</frame>
</replicate>
</body>
<body pos=".09 0 .04" euler="30 30 0">
<freejoint/>
<geom type="cylinder" size="0.03 0.002" rgba="0 0 .8 1"/>
<replicate count="20" euler="0 0 18">
<frame pos="-.025 0 .03" euler="0 15 0">
<replicate count="4" euler="0 15 0">
<geom type="box" size=".0044 .009 .002" pos="0 0 -.03" rgba="0 0 .8 1"/>
</replicate>
</frame>
</replicate>
</body>
</worldbody>
</mujoco>
然后加载他的路径
import mujoco
import mujoco.viewer as viewer
import sys,os
viewer.launch_from_path("./bowl.xml")
注意launch_from_path要定位到上面的bowl.xml
文件
运行代码,如果成功启动mujoco仿真,会显示三个彩色的碗。
总结
总之XML文件定义了模型的物理仿真环境,所以你得不但得读得懂,还得手搓xml文件,而Python程序通过调用MuJoCo的API来操作这个模型,完成控制。