def compile_problem(oracle):
    problem = oracle.problem
    CSpace.robot_base(oracle.robot).set_active()

    initial_config = Config(
        base_values_from_full_config(oracle.initial_config.value))
    initial_atoms = [
        AtConfig(Conf(initial_config)),
    ]
    print 'Initial', initial_config.value

    goal_literals = [AtConfig(Conf(problem.goal_config))
                     ] if problem.goal_config is not None else []
    print 'Goal', problem.goal_config.value

    actions = [
        Move(oracle),
    ]

    axioms = [
        #InRegionAxiom(),
    ]

    cond_streams = [
        CollisionFreeTest(oracle),
        ConfStream(oracle),
    ]

    objects = []

    return STRIPStreamProblem(initial_atoms, goal_literals, actions + axioms,
                              cond_streams, objects)
示例#2
0
 def sample_motion(q1, q2):
   if not DO_BASE_MOTION:
     yield [None]
   #with oracle.robot: # NOTE - this causes an segfault when freeing the memory
   oracle.set_robot_config(q1)
   goal = base_values_from_full_config(q2.value)
   traj = motion_plan(oracle.env, CSpace.robot_base(oracle.robot), goal)
   if traj is not None:
     traj.obj = None
     yield [traj]
示例#3
0
 def sample_motion(q1, q2):
   if not DO_BASE_MOTION:
     yield [None]
   with oracle.robot:
     oracle.set_robot_config(q1)
     goal = base_values_from_full_config(q2.value)
     traj = motion_plan(oracle.env, CSpace.robot_base(oracle.robot), goal)
     if traj is not None:
       traj.obj = None
       yield [traj]