def reset(self): obs = self.env.reset() sim = self.unwrapped.sim # Get indexes of qvel for movement debuff self.agent_qvel_idxs = [ qvel_idxs_from_joint_prefix(sim, f'agent{i}') for i in range(self.n_agents) ] # Get indexes of qpos of agents self.agent_qpos_idxs = np.array([ qpos_idxs_from_joint_prefix(sim, f'agent{i}') for i in range(self.n_agents) ]) # Get indexes of obstacles pos self.obstacles_id = [ sim.model.body_name2id("B1"), sim.model.body_name2id("B2"), sim.model.body_name2id("B3"), sim.model.body_name2id("B4"), sim.model.body_name2id("B5"), sim.model.body_name2id("B6"), sim.model.body_name2id("B7"), sim.model.body_name2id("B8"), sim.model.body_name2id("B9") ] return self.observation(obs)
def modify_sim_step(self, env, sim): # Cache qpos, qvel idxs self.ramp_qpos_idxs = np.array([qpos_idxs_from_joint_prefix(sim, f'ramp{i}') for i in range(self.n_ramps)]) self.ramp_qvel_idxs = np.array([qvel_idxs_from_joint_prefix(sim, f'ramp{i}') for i in range(self.n_ramps)]) self.ramp_geom_idxs = np.array([sim.model.geom_name2id(f'ramp{i}:ramp') for i in range(self.n_ramps)])
def modify_sim_step(self, env, sim): # Cache qpos, qvel idxs self.box_geom_idxs = np.array([sim.model.geom_name2id(f'moveable_box{i}') for i in range(self.curr_n_boxes)]) self.box_qpos_idxs = np.array([qpos_idxs_from_joint_prefix(sim, f'moveable_box{i}:') for i in range(self.curr_n_boxes)]) self.box_qvel_idxs = np.array([qvel_idxs_from_joint_prefix(sim, f'moveable_box{i}:') for i in range(self.curr_n_boxes)]) if self.mark_box_corners: self.box_corner_idxs = np.array([sim.model.site_name2id(f'moveable_box{i}_corner{j}') for i in range(self.curr_n_boxes) for j in range(4)])
def modify_sim_step(self, env, sim): if self.make_static: self.s_cylinder_geom_idxs = np.array([sim.model.geom_name2id(f'static_cylinder{i}') for i in range(self.n_objects)]) else: self.m_cylinder_geom_idxs = np.array([sim.model.geom_name2id(f'moveable_cylinder{i}') for i in range(self.n_objects)]) qpos_idxs = [qpos_idxs_from_joint_prefix(sim, f'moveable_cylinder{i}') for i in range(self.n_objects)] qvel_idxs = [qvel_idxs_from_joint_prefix(sim, f'moveable_cylinder{i}') for i in range(self.n_objects)] self.m_cylinder_qpos_idxs = np.array(qpos_idxs) self.m_cylinder_qvel_idxs = np.array(qvel_idxs)
def modify_sim_step(self, env, sim): # Cache qpos, qvel idxs self.agent_qpos_idxs = np.array([ qpos_idxs_from_joint_prefix(sim, f'agent{i}') for i in range(self.n_agents) ]) self.agent_qvel_idxs = np.array([ qvel_idxs_from_joint_prefix(sim, f'agent{i}') for i in range(self.n_agents) ]) env.metadata['agent_geom_idxs'] = [ sim.model.geom_name2id(f'agent{i}:agent') for i in range(self.n_agents) ]
def modify_sim_step(self, env, sim): # Cache qpos, qvel idxs self.agent_qpos_idxs = np.array([ qpos_idxs_from_joint_prefix(sim, f'agent{i}') for i in range(self.n_agents) ]) self.agent_qvel_idxs = np.array([ qvel_idxs_from_joint_prefix(sim, f'agent{i}') for i in range(self.n_agents) ]) env.metadata['agent_geom_idxs'] = [ sim.model.site_name2id(f'agent{i}:agent') for i in range(self.n_agents) ] # Randomize starting orientation of agents for i in range(self.n_agents): #rqpos = qpos_idxs_from_joint_prefix(sim, f'agent{i}:rz') rqpos = self.agent_qpos_idxs[i, -1] sim.data.qpos[rqpos] = np.random.uniform(low=0, high=6.28319)