예제 #1
0
 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)
예제 #2
0
 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)])
예제 #3
0
 def reset(self):
     obs = self.env.reset()
     sim = self.unwrapped.sim
     # Get agent qpos idx
     self.agent_qpos_idxs = np.array([
         qpos_idxs_from_joint_prefix(sim, f'agent{i}')
         for i in range(self.n_agents)
     ])
     return self.observation(obs)
예제 #4
0
 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)])
예제 #5
0
 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)
예제 #6
0
 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)
     ]
예제 #7
0
 def reset(self):
     obs = self.env.reset()
     sim = self.unwrapped.sim
     # Get new position
     self.destinations = np.array(
         [[np.random.uniform(0.0, 8080),
           np.random.uniform(0.0, 4480)],
          [np.random.uniform(0.0, 8080),
           np.random.uniform(0.0, 4480)]])
     # Get agent xy qpos
     self.agent_qpos_idxs = np.array([
         qpos_idxs_from_joint_prefix(sim, f'agent{i}')
         for i in range(self.n_agents)
     ])
     return self.observation(obs)
예제 #8
0
 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)