GymFetch

阅读: 评论:0

GymFetch

GymFetch

GymFetch-插孔开抽屉任务介绍

文章目录

  • GymFetch-插孔开抽屉任务介绍
    • 前言:
    • 插孔任务介绍:
    • 插孔任务observation的设置:
    • 最终效果:
    • 抽屉任务:
      • 横版:
      • 竖版:
    • 联系方式:

前言:

最近做HER相关对比实验,需要几个验证仿真环境,所以仿照原版gym-fetch的封装格式,借用了metaworld的素材,为了和push,pick有所区别,所以重新搭建了两个环境,一个是随机插孔任务,一个是开抽屉任务。前者目前看来是符合需要的。后者面临着穿模的问题,后面会有所讨论。

开源链接:

插孔任务介绍:

总所周知,mujoco是不能仿真凹形体的,所以如果导入一个3D建模好的插孔盒子,是无法正常模拟的,插入孔中都会出现碰撞的问题。

而插孔任务其实很多论文中都提到了,比如朱玉可的19年那篇best paper, 比如GUAPO算法:

但好用的,开源的插孔仿真环境,我还真的没怎么找到过,就连robosuite里面都没搭建一个好的插孔任务,我是没想到的,待会儿发个邮件问问他们。目前能找到的都是四个长方形拼成的一个带孔盒子:

现在有另一个问题,这里的四个box都是没有自由度的,mujoco的box 几何体如果加了joint自由度的话,那么被夹爪接触了之后,会发生偏移,哪怕是将关节阻尼damping='10000000000'都会从缝隙中插进去。

所以这四个box必须得是无自由度的。

这样的话,带孔盒子和孔就是固定的,不利于任务难度的提高。

我必须要随机初始化孔的中心位置,然后根据孔的中心位置,安排box的位置,这样的话,就需要一个坐标生成函数,一个每次reset时,设置box位置的函数。

box坐标生成函数:输入孔的中心坐标xy,和孔的大小,整个盒子的长度一半。
输出四个box的坐标和大小。

    def reset_hole(self, hole_center, half_hole_size=0.02, hsw1y=0.1):cx, cy = hole_centerhsw1x = (hsw1y - half_hole_size) / 2.0w1x = cx - hsw1x - half_hole_sizew1y = cyhsw2x = (2*hsw1y-2*hsw1x)/2.0hsw2y = (hsw1y-half_hole_size)/2.0w2x = w1x + hsw1x + (2*hsw1y-2*hsw1x)/2.0w2y = w1y - hsw1y + (hsw1y-half_hole_size)/2.0hsw3x = hsw2xhsw3y = hsw2yw3x = w2xw3y = w1y + hsw1y - (hsw1y-half_hole_size)/2.0hsw4x = (hsw1y-half_hole_size)/2hsw4y = half_hole_sizew4x = cx + half_hole_size + (hsw1y - half_hole_size) / 2.0w4y = cyreturn (w1x, w1y), (w2x, w2y), (w3x, w3y), (w4x, w4y)

设定body的pos,mujoco中除了set_joint_pos函数外,还能直接给body_pos设定值:

del.body_pos[del.body_name2id('w4')] = np.array([w4x, w4y, del.body_pos[del.body_name2id('w4')][2]])

这样就可以随机初始化孔的位置了。

插孔任务observation的设置:

关于环境观察值的输出格式,分为
‘observation’: py(), 除了desired_goal之外的都在里面
‘grip_goal’: py(), 夹爪的末端坐标xyz
‘achieved_goal’: py(), desired_goal if grip2desire > 2cm else grip_goal,即离得远时,是目标点的坐标(加上移偏置),离的近了,直接变为夹爪坐标。即假设有一个虚拟物块在目标上方,到了之后,贴着夹爪随着夹爪移动。
‘desired_goal’: py(),

上面基本上说清楚了观察值。

关于奖励函数的设置,仍然是稀疏奖励,但是将距离阈值变成了1cm(如果难度过高,回头再调)。

最终效果:

抽屉任务:

横版:

竖版:


我想的是将整个抽屉设置成刚体,夹爪穿不过去的那种,但是现在出现各种奇怪的问题,如果将里面的抽屉joint damp设置的低,那么就会自己抖动,如果设置damp大了,那么夹爪会想着直接穿过外壳,直接拉着里面的抽屉往外动。

关节limited属性也不起作用,有点迷惑。回头再调调。

联系方式:

ps: 欢迎做强化的同学加群一起学习:

深度强化学习-DRL:799378128

Mujoco建模:818977608

欢迎玩其他物理引擎的同学一起玩耍~

欢迎关注知乎帐号:未入门的炼丹学徒

CSDN帐号:

我的个人博客:

未入门的炼丹学徒

网址非常好记:

极简spinup+HER+PER代码实现:

本文发布于:2024-01-30 01:25:07,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170654911218251.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:GymFetch
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23