云计算百科
云计算领域专业知识百科平台

Mujoco足式机器人强化学习训练02(URDF转XML)

URDF文件转XML文件

在安装完成mujoco playground以后,设计到三维模型的导入,在sw转出的文件大多为URDF格式,但是mujoco仿真的时候大多支持xml文件

xml文件官方地提供了转换脚本,需要下载mujoco工程文件,注意和上节下载的mujoco playground不是一个工程文件

1. mujoco工程文件下载

https://mujoco.org/download/mujoco210-linux-x86_64.tar.gz
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/.mujoco/mujoco210/bin

2. 在URDF文件中添加代码

<mujoco>
<compiler
meshdir="../meshes/"
balanceinertia="true"
discardvisual="false" />

</mujoco>

meshdir:stl网格文件存放地址 balanceinertia=“true” 启用惯量平衡(仿真更真) discardvisual=“false” 保留视觉几何体(可视化好看) 此处需要注意,需要与link平级,直接写在最上面就行 在这里插入图片描述

3. 转化命令

cd ~/.mujoco/mujoco210/bin
./compile /path/to/model.urdf /path/to/model.xml

此处可以直接写urdf文件的绝对地址,以及保存xml文件存放的绝对地址

如果想要仿真验证xml文件的转化是否成功,可以执行

./simulate /path/to/model.xml

4. 在xml文件中添加执行器(actuator)

actuator可以理解为电机,个人认为mujoco比较严谨,每一个关节都需要制定actuator才能有动力,而不是像leggedgym封装的一样,直接输入活动关节数目进行自动对应

actuator有多种格式,即可以设置位置模式、力矩模式、速度模式、以及general通用格式等 此处只介绍position设置方法

<actuator>
<position class="hexapod" name="RF_HAA" joint="RF_HAA" />
<position class="hexapod" name="RF_HFE" joint="RF_HFE" />
<position class="hexapod" name="RF_KFE" joint="RF_KFE" />

<position class="hexapod" name="RM_HAA" joint="RM_HAA" />
<position class="hexapod" name="RM_HFE" joint="RM_HFE" />
<position class="hexapod" name="RM_KFE" joint="RM_KFE" />

<position class="hexapod" name="RB_HAA" joint="RB_HAA" />
<position class="hexapod" name="RB_HFE" joint="RB_HFE" />
<position class="hexapod" name="RB_KFE" joint="RB_KFE" />

<position class="hexapod" name="LF_HAA" joint="LF_HAA" />
<position class="hexapod" name="LF_HFE" joint="LF_HFE" />
<position class="hexapod" name="LF_KFE" joint="LF_KFE" />

<position class="hexapod" name="LM_HAA" joint="LM_HAA" />
<position class="hexapod" name="LM_HFE" joint="LM_HFE" />
<position class="hexapod" name="LM_KFE" joint="LM_KFE" />

<position class="hexapod" name="LB_HAA" joint="LB_HAA" />
<position class="hexapod" name="LB_HFE" joint="LB_HFE" />
<position class="hexapod" name="LB_KFE" joint="LB_KFE" />

</actuator>

笔者使用的是六足机器人,所以具有18个活动关节,所以此添加了18个位置模式的电机

注:由于这18个关节高度重复,此处运用了class的概念(用来设置kp和damping,以及forcerange等参数),class的具体用法可以参考mujoco官方的xml文档的说明

5. 在xml文件中添加传感器(sensor)

根据笔者这段时间对mujoco的使用,mujoco的传感器以及其他功能的添加,主要在xml文件中进行实现,(个人认为十分方便、主打一个什么都开放🐶)

目前笔者使用到的传感器,一般都是监控某一个点的数据 site的定义:

<site name="imu" pos="0 0 0" group="5" />

传感器定义:

<sensor>
<gyro site="imu" name="gyro" />
<velocimeter site="imu" name="local_linvel" />
<accelerometer site="imu" name="accelerometer" />
<framezaxis objtype="site" objname="imu" name="upvector" />
<framelinvel objtype="site" objname="imu" name="global_linvel" />
<frameangvel objtype="site" objname="imu" name="global_angvel" />
</sensor>

如果想替换进自己的xml文件,只需要在xml中创建这个点即可

5. 在xml文件中添加碰撞体

此处需要注意,虽然mujoco支持直接使用stl网格文件作为碰撞体,但是在强化学习训练的过程中,如果没有将mesh文件简化,在训练的过程中会一直报错,并且运算量会显著增大,所以此处建议简化碰撞体!!!

<geom condim="1" contype="0" conaffinity="0" />

如果你想添加碰撞体,只需要在后面设置contype和conaffinity即可,此处二者都写0代表不参与碰撞

参考文献 1.https://zhuanlan.zhihu.com/p/699075829 2.https://www.bilibili.com/video/BV1tDxAzTEFM/?spm_id_from=333.1391.0.0

赞(0)
未经允许不得转载:网硕互联帮助中心 » Mujoco足式机器人强化学习训练02(URDF转XML)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!