def get_generator(initial, goal, oracle, planner): if planner == MANIPULATION_PLANNERS.FFROB: return ffrob_generator(initial, goal, oracle) if planner == MANIPULATION_PLANNERS.TRAJECTORY_HBF: return default_scheduler_generator(goal, lambda rg: TrajectoryScheduler(rg, oracle)) if planner == MANIPULATION_PLANNERS.ROADMAP_HBF: return default_scheduler_generator(goal, lambda rg: RoadmapScheduler(rg, oracle)) if planner == MANIPULATION_PLANNERS.HBF: return default_scheduler_generator(goal, lambda rg: GeneratingScheduler(rg, [SP(oracle) for SP in USE_SUBPLANNERS])) if planner == MANIPULATION_PLANNERS.RMMP: return pick_and_place_generator(initial, goal, oracle) raise RuntimeError(planner + ' is not a valid manipulation planner')
def run_experiment(oracle, configuration): if hasattr(oracle, 'crg'): delattr(oracle, 'crg') # TODO - reuse the crg for some experiments # search is set by configuration? NOt sure what a configuration is search, successor = configuration initial, goal = get_representation(oracle, MANIPULATION_PLANNERS.FFROB) # This one gets the plan from the initial state to the goal plan, state_space = search(initial, goal, ffrob_generator(initial, goal, oracle, successor())) if plan is not None: plan = Plan(plan.cost, plan.length, sum(get_sample_time(operator) for operator in plan.operators)) return Outcome(plan, state_space.time_elapsed(), state_space.iterations, len(state_space), state_space.num_expanded(), state_space.num_generations(), oracle.ffrob_sample_time, oracle.ffrob_sample_attempts)