def setupAndStart(pddlDomainFile, initialProblemFile,\
    viewer, envFile, planner="ff"):
    editedProblemFile = initialProblemFile
    iteration = 0
    
    print "Using initial problem file " + editedProblemFile
    ORSetup = planning_primitives.initOpenRave(viewer, envFile)
    goalObject = raw_input("Enter object to pick up, or press return for default:")
    if len(goalObject) > 0:
        editedProblemFile = utils.setGoalObject(goalObject, editedProblemFile)
        
    myPatcher = PDDLPatcher(editedProblemFile)
    iterativePlanAuto(myPatcher, ORSetup, pddlDomainFile, editedProblemFile, viewer, envFile, planner)
Exemplo n.º 2
0
def setupAndStart(pddlDomainFile, initialProblemFile,\
    viewer, envFile, planner="ff"):
    editedProblemFile = initialProblemFile
    iteration = 0
    
    print "Using initial problem file " + editedProblemFile
    ORSetup = planning_primitives.initOpenRave(viewer, envFile)
    goalObject = raw_input("Enter object to pick up, or press return for default:")
    if len(goalObject) > 0:
        editedProblemFile = utils.setGoalObject(goalObject, editedProblemFile)
        
    myPatcher = PDDLPatcher(editedProblemFile)
    iterativePlanAuto(myPatcher, ORSetup, pddlDomainFile, editedProblemFile, viewer, envFile, planner)
def iterativePlanAuto(pddlDomainFile, pddlProblemFile, viewer, planner = "ff"):
    iteration = 0
    ex = planning_primitives.initOpenRave(viewer)
    cacheClearCount = 0
    while True:
        iteration += 1
        plannerOutFname = pddlProblemFile+ ".out"
        planCount = 0
        strPlanFileH, plannerOutStr, planCount = runPlanner(pddlDomainFile, pddlProblemFile, plannerOutFname, planner)
        prevPDDLFile = pddlProblemFile
        pddlProblemFile = initialProblemFile.replace(".pddl", repr(iteration) + ".pddl")
        
        reinterpret = "y"
        if strPlanFileH ==-1:
            reinterpret = raw_input("Planner failed. Reinterpret (y/n)?")
            if reinterpret != "y":
                print "Quitting"
                sys.exit(-1)
            myPatcher.forgetLearnedFactsAbout("obstructs")
            myPatcher.writeCurrentInitState(pddlProblemFile)
            planning_primitives.clearGPCache(ex)
            cacheClearCount += 1
            continue

        try:
            planning_primitives.test(strPlanFileH, ex)
            print "Success. Quitting."
            print "Total planning time: {0}".format(totalExecTime)
            print "Replan count: "+ repr(iteration)
            print "Cache clearing count: "+ repr(cacheClearCount)
            obsCount = tryIO(prevPDDLFile, "read").count("obstructs")
            print "Number of obstructions handled: "+ repr(obsCount)
            sys.exit(0)
        except planning_primitives.ExecutingException, e:
            errorStr = e.pddl_error_info
    
        if errorStr == "":
            print "Failure: Error in simulation. Try increasing number of samples."
            sys.exit(-1)

        print "Got facts:"
        print errorStr
        if viewer:
            #raw_input("Press return to continue")
            time.sleep(0.5)
        
            
        updateInitFile(pddlProblemFile, iteration, plannerOutFname, \
                       plannerOutStr, errorStr, planCount, planner)
        print