2 import roslib; roslib.load_manifest(
'pddl_planner')
10 if __name__ ==
'__main__':
11 rospy.init_node(
'pddl_planner_client')
14 client.wait_for_server()
15 goal = PDDLPlannerGoal()
16 goal.domain.name =
"manip" 17 goal.domain.requirements =
":typing" 18 goal.domain.types =
"object" 19 goal.domain.predicates = [
"(on ?obj0 ?obj1 - object)",
20 "(clear ?obj - object)",
21 "(ontable ?obj - object)",
22 "(holding ?obj - object)",
25 pickup.name =
"pickup" 26 pickup.parameters =
"(?obj - object)" 27 pickup.precondition =
"(and (ontable ?obj) (clear ?obj) (handempty))" 28 pickup.effect =
"""(and (not (ontable ?obj)) (not (clear ?obj)) 29 (not (handempty)) (holding ?obj))""" 30 putdown = PDDLAction()
31 putdown.name =
"putdown" 32 putdown.parameters =
"(?obj - object)" 33 putdown.precondition =
"(and (holding ?obj))" 34 putdown.effect =
"""(and 41 stack.parameters =
"(?obj0 ?obj1 - object)" 42 stack.precondition =
"""(and 45 stack.effect =
"""(and 51 unstack = PDDLAction()
52 unstack.name =
"unstack" 53 unstack.parameters =
"(?obj0 ?obj1 - object)" 54 unstack.precondition =
"""(and 58 unstack.effect =
"""(and 60 (not (on ?obj0 ?obj1)) 64 goal.domain.actions = [pickup, unstack, stack, putdown]
65 goal.problem.name =
"sample" 66 goal.problem.domain =
"manip" 68 goal.problem.objects = [PDDLObject(name=
"a", type=
"obj"),
69 PDDLObject(name=
"b", type=
"obj"),
70 PDDLObject(name=
"c", type=
"obj")]
71 goal.problem.initial = [
"(on c a)",
77 goal.problem.goal =
"(and (on a b) (on b c))" 79 client.send_goal(goal)
80 client.wait_for_result()
81 print(client.get_result())