pick-place-v2是Meta-World中最基础的环境了,属于Meta-World中的ML1,在这个任务中,我们的目标就是让机械臂学会先夹取目标物,然后移动到目标位置。
1、环境简介
1.1 状态State
pick-place-v2的state共有39个维度。其中分为3部分,前13个维度是当前的一些观测值,后13个维度是上一时刻的观测值,最后3个维度是目标的位置,也就是图中蓝色小球的坐标。
比较奇怪的是源码中的sawyer_xyz_env.py中_get_obs(self)函数中有个部分可观的判断,然后就将目标3个维度置为0了,关键是在这个环境中,这个if判断是成立的。我不是非常理解,不给目标那训练的目的是啥。
if self._partially_observable:
pos_goal = np.zeros_like(pos_goal)
1.2 动作Action
pick-place-v2环境的action共有4个维度。前3个维度分别控制爪子部分的左右、前后、上下移动,很简单,并不涉及机械臂的控制,很好理解。第4个维度是爪子的闭合控制,大于0的时候爪子收缩,小于0的时候爪子张开,当然,爪子的开闭有最大最小幅度限制。
1.3 奖励Reward
奖励也大概分成3部分,首先考虑爪子距离物体的距离给予一定的奖励,这部分奖励很小,大概在0.04左右,且爪子越靠近物体,奖励越大,最大大概0.13。当爪子将物体拖离地面之后,考虑第二部分奖励,此时考虑物体与目标的距离,离目标距离越近,奖励越大。这部分奖励较大,大概从2左右到7左右。第二部分的奖励会和第一部分叠加。最后考虑是否到达目标的奖励,如果物体距离目标距离小于0.05,那么奖励就是10,不与前两个奖励叠加。
2、状态详解
状态共拆分为3个部分,我们就以第一部分来分析,第一部分总共13个状态。
前三个为手部的x,y,z坐标,第4个是爪子的开闭状态,第5、6、7个是物体的坐标,第8、9、10、11个是物体移动的速度(猜的),后几位全是0
然后第二部分和第一部分一样,第三部分的3个值是目标的坐标。