def find_qualitative_path_ptlike(self, action, zones, initial_zone): scenario = Scenario_Generator(self.width, self.height, self.immobile_objs, self.mobile_objs, self.manipulatable_obj, self.target_obj, showRender=False) scenario.apply_impulse_and_run(action) traj = scenario.find_man_traj() b2contacts = scenario.find_contacts_with_mobile_objs() #print contacts pre_zone = initial_zone path = [initial_zone] for traj_pt in traj: occupied_zone = -1 man_position = Point(traj_pt) for i in xrange(len(zones)): if zones[i].contains(man_position): occupied_zone = i break # if out of scope, still wait to see if it will come back, quite slow if occupied_zone == -1 or occupied_zone == pre_zone: continue ''' if occupied_zone == -1: # reach end zone path.append(-1) break elif occupied_zone == pre_zone: continue ''' path.append(occupied_zone) pre_zone = occupied_zone return path, b2contacts
def find_qualitative_path_extended(self, velocity, zones, man_obj_id): scenario = Scenario_Generator(self.width, self.height, self.immobile_objs, self.mobile_objs, self.manipulatable_obj, self.target_obj, showRender=False) scenario.current_man_id = man_obj_id scenario.apply_velocity_and_run(*velocity) traj = scenario.find_man_traj() b2contacts = scenario.find_contacts_with_mobile_objs() initial_zone = -1 pre_zone = initial_zone path = [initial_zone] for traj_pt in traj: occupied_zone = -1 man_position = Point(traj_pt) for i in xrange(len(zones)): if zones[i].contains(man_position): occupied_zone = i break # if out of scope, still wait to see if it will come back, quite slow if occupied_zone == -1 or occupied_zone == pre_zone: continue path.append(occupied_zone) pre_zone = occupied_zone return path, b2contacts