机器人仿真环境建模这里一直是我的co-worker在负责,网上的相关资源真的少到哭,还好大佬很强,分分钟解决了。
本来知乎上已经有一篇很好的教程了
王聪:MuJoCo的机器人建模zhuanlan.zhihu.com![03755fbdab47b4930632dc235689db85.png](https://i-blog.csdnimg.cn/blog_migrate/5b576aedaaab9e1a298373ffd50d9f53.jpeg)
但是 @王聪 写的主要是 如何从 Solidworks/其他三维软件 -> URDF模型 -> MuJoCo模型的过程。而我们一开始做的时候还没有这篇文章,所以我们直接从 .xml 写起,直接在MuJoCo上画出了模型。这听上去是很麻烦,但是有些模型的配合关系比较复杂,结构却相对简单(比如一些自己设计的非标机器人),反倒不如直接写 .xml。此外,本文还会介绍OpenAI 开发的 mujoco-py的API及用法。因此,主要内容如下:
- 如何写好MuJoCo模拟器的 XML文件;
- 如何使用 mujoco-py构建可交互Environment。
如何写好 XML
按理说一个MuJoCo模拟器是包含三部分的:
- STL文件,即三维模型;
- XML 文件,用于定义运动学和动力学关系;
- 模拟器构建py文件,使用mujoco-py将XML model创建成可交互的环境,供强化学习算法调用。
但是STL也是分块集成在XML中的,所以本文就不提STL的事情了。
XML结构
XML主要分为以下三个部分:
<asset>
: 用<mesh>
tag导入STL文件;<worldbody>
:用<body>
tag定义了所有的模拟器组件,包括灯光、地板以及你的机器人;<acutator>
:定义可以执行运动的关节。定义的顺序需要按照运动学顺序来,比如多关节串联机器人以工具坐标附近的最后一个关节为joint0,依此类推。
<mujoco model="example">
<!-- set some defaults for units and lighting -->
<compiler angle="radian" meshdir="meshes"/>
<!-- 导入STL文件 -->
<asset>
<mesh file="base.STL" />
<mesh file="link1.STL" />
<mesh file="link2.STL" />
</asset&g