From b376c78e3b71e6490474c443cb25161f648c5c08 Mon Sep 17 00:00:00 2001 From: IDONTSUDO Date: Mon, 6 Mar 2023 17:23:04 +0300 Subject: [PATCH] adding domain --- pddl/helper/fs.py | 2 ++ pddl/mocks/domain.txt | 20 +++++++++++++++++++ .../src/usecases/assembly_to_pddl_use_case.py | 8 +++++++- 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 pddl/mocks/domain.txt diff --git a/pddl/helper/fs.py b/pddl/helper/fs.py index 2030e73..0c60e01 100644 --- a/pddl/helper/fs.py +++ b/pddl/helper/fs.py @@ -13,3 +13,5 @@ class FS: f.write(data) + def readFile(path:str): + return open(path).read() diff --git a/pddl/mocks/domain.txt b/pddl/mocks/domain.txt new file mode 100644 index 0000000..4f750fd --- /dev/null +++ b/pddl/mocks/domain.txt @@ -0,0 +1,20 @@ +;; Modified domain taken from +;; "Knowledge transfer in robot manipulation tasks" by Jacob O. Huckaby 2014 +(define (domain robossembler) + (:requirements :strips :typing :adl :fluents :durative-actions) + (:types + printer workspace - zone + part + arm + assembly + ) + + (:predicates + (arm_available ?a - arm) + (part_at ?p - part ?z - zone) + (printer_ready ?p - printer) + (part_of ?part - part ?whole - assembly) + (assembly_order ?prev ?next - assembly) + (assembled ?whole - assembly ?z - zone) + ) +);; end Domain ;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/pddl/src/usecases/assembly_to_pddl_use_case.py b/pddl/src/usecases/assembly_to_pddl_use_case.py index f1bfe9b..3d66f47 100644 --- a/pddl/src/usecases/assembly_to_pddl_use_case.py +++ b/pddl/src/usecases/assembly_to_pddl_use_case.py @@ -1,6 +1,8 @@ from typing import List +from helper.fs import FS from unified_planning.shortcuts import * from unified_planning import * +import os class AssemblyToPddlUseCase: @@ -34,4 +36,8 @@ class AssemblyToPddlUseCase: goal = Fluent(rootLabel) problem.add_goal(connected(objectsPartPddl[objectsPartPddl.__len__( ) - 1], objectsAsmToPddl[objectsAsmToPddl.__len__() - 1]),) - return {"problem": unified_planning.io.PDDLWriter(problem).get_problem(), 'domain': unified_planning.io.PDDLWriter(problem).get_domain()} + + return { + "problem": unified_planning.io.PDDLWriter(problem).get_problem(), + 'domain': FS.readFile(os.path.dirname(os.path.realpath(__file__)) + '/../../mocks' + '/domain.txt'), + }