一、仿真环境

1.1 动作-观测定义

(1)机器人动作

代码中机器人的动作通过_set_action()函数设置。

机器人的动作定义为长度为8的数组,分别代表末端的空间位置3个变量,末端的空间姿态四元数,夹爪平行板的动作。

1
action = [x, y, z, quat1, quat2, quat3, quat4, gripper]

(2)观测值

观测状态通过_get_obs()函数获取。

可以看出观测状态是一个字典:

含义
observation [grip_x, grip_y, grip_z, grip_pos,末端位置
grip_q1, grip_q2, grip_q3, grip_q4, grip_quat,末端姿态
gripper_left, gripper_right, gripper_state,夹爪两侧状态
grip_vx, grip_vy, grip_vz, grip_vel,末端速度
grip_wx, grip_wy, grip_wz grip_w,末端角速度
gripper_vl, gripper_vr, gripper_vel,夹爪两侧速度
obj1_x, obj1_y, obj1_z, obj_i_pos,方块i位置
obj1_q1, obj1_q2, obj1_q3, obj1_q4 obj_i_quat,方块i姿态
obj1_rx, obj1_ry, obj1_rz, obj_i_rel_pos,方块i相对末端位置
obj1_rq1, obj1_rq2, obj1_rq3, obj1_rq4 obj_i_rel_quat,方块i相对末端姿态
obj1_vx, obj1_vy, obj1_vz, obj_i_velp, 方块i相对末端速度
obj1_wx, obj1_wy, obj1_wz, obj_i_wp,方块i相对末端角速度
obj2… 方块2位置、相对位置、相对速度
obji…] 方块i位置、相对位置、相对速度
achieved_goal [obj1_x, obj1_y, obj1_z,
obj1_q1, obj1_q2, obj1_q3, obj1_q4,
每调用一次_get_obs()方法
保存所有方块的位置姿态
grip_x, grip_y, grip_z,
grip_q1, grip_q2, grip_q3, grip_q4
…]
将当前末端位置
添加到achieved_goal最后
desired_goal [[x1, y1, z1], [x2, y2, z2], … ] 多个目标位置
force_sensor [f_x, f_y, f_z] force_reading,末端力,默认[0,0,0]

1.2 奖励函数设计

参考robomimic的检查式奖励设计,将任务过程使用一个个检查事项代替。

例如,将物体抓取移动到指定位置,可以使用以下检查事项:

  1. 物体足够接近目标
  2. 机器人正在抓取物体(不只是触碰)

附:测试

DEX 相关算法测试:

算法 SuccessReward+D10000
DDPGBC 失败
SAC 失败
SQIL 失败
COL 失败
AWAC 失败
AMP 失败
DEX 失败