diff --git a/src/main/java/de/tudresden/inf/st/pnml/flatter/Main.java b/src/main/java/de/tudresden/inf/st/pnml/flatter/Main.java index c86bd3a77382f52f1ac8941deb199c9577d17d8e..37b5b8dee7cd0183d6b90c79bfe5a86e9988030b 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/flatter/Main.java +++ b/src/main/java/de/tudresden/inf/st/pnml/flatter/Main.java @@ -1,8 +1,6 @@ package de.tudresden.inf.st.pnml.flatter; import beaver.Parser; -import de.tudresden.inf.st.pnml.base.constants.PnmlConstants; -import de.tudresden.inf.st.pnml.flatter.graph.ServiceGraph; import de.tudresden.inf.st.pnml.flatter.transform.ReferenceFlatter; import de.tudresden.inf.st.pnml.flatter.transform.TransformationUtils; import de.tudresden.inf.st.pnml.jastadd.model.*; @@ -12,20 +10,26 @@ import fr.lip6.move.pnml.framework.utils.exception.InvalidIDException; import de.tudresden.inf.st.pnml.flatter.tina.NdrioProxy; import de.tudresden.inf.st.pnml.jastadd.model.PetriNet; -import java.io.IOException; +import java.io.*; +import java.lang.reflect.Type; import java.util.*; +// for json parsing +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.JsonNode; + +import javax.swing.*; -public class Main { - public static void main(String[] args) throws InvalidIDException, InterruptedException, IOException, Parser.Exception { +public class Main { + public static void main(String[] args) throws Exception { + /* // Display help if no arguments or `--help` is passed if (args.length == 0 || Arrays.asList(args).contains("--help")) { printUsage(); return; } - // Parse arguments with clear flags boolean flagInhibitor = Boolean.parseBoolean(getArgumentValue(args, "--inhibitor", "false")); boolean flagSignal = Boolean.parseBoolean(getArgumentValue(args, "--signal", "false")); @@ -36,6 +40,8 @@ public class Main { // String configPath = getArgumentValue(args, "--config", null); String pnmlPath = getArgumentValue(args, "--pnml", null); + System.out.println("pnmlPath: " + pnmlPath); + //String pnml = getArgumentValue(args, "--pnml", null) // Validate required arguments if (pnmlPath == null) { @@ -57,12 +63,12 @@ public class Main { // Application logic here (replace this with your actual logic) System.out.println("Application started successfully."); - + */ boolean flagOutArcs = false; boolean flagNoSignal = false; - doFlattening(pnmlPath, flagInhibitor, flagSignal, flagPurge, flagOverrideInstanceCount, flagOutArcs, flagNoSignal, tinaPath, tinaVersion); - // doFlattening("", "/home/sebastian/git/sesac-exercise/tools/model-top.pnml", false, false, false, false, false, false, null); + //doFlattening(pnmlPath, flagInhibitor, flagSignal, flagPurge, flagOverrideInstanceCount, flagOutArcs, flagNoSignal, tinaPath, tinaVersion); + doFlattening("/home/dome/MA/dineros_v2/dineros/pnml-relast-tools/pnml-relast-flattener/src/main/resources/system.pnml", false, false, false, false, false, false, null, null); } @@ -91,65 +97,439 @@ public class Main { System.out.println(" --help Show this help message and exit"); } + private static PetriNet findStaticPetriNet(String petriNetName) throws Exception { + + String resourcePath = "/static_pages/" + petriNetName + ".pnml"; + PetriNet petriNet; + + try (InputStream pageStream = Main.class.getResourceAsStream(resourcePath)) { + + if (pageStream == null) { + throw new FileNotFoundException("PNML-File in /resource path not found: " + resourcePath); + } + + // Temporäre Datei anlegen + File tempFile = File.createTempFile(petriNetName, ".pnml"); + tempFile.deleteOnExit(); + + // Inhalt von InputStream in temporäre Datei schreiben + try (FileOutputStream out = new FileOutputStream(tempFile)) { + pageStream.transferTo(out); + } + + // parse staticPage PNML and get first and only <page> element + petriNet = PnmlParser.parsePnml(tempFile.getAbsolutePath(), true).get(0); + } + + if (petriNet.getNumPage() == 0) { + throw new IllegalArgumentException("No Page in file: " + resourcePath); + } + + return petriNet; + } + + private static void addDefaultToolInfoToPage(Page page) { + ToolInfo info = new ToolInfo(); + info.setTool("de.tudresden.inf.st.pnml.distributedPN"); + info.setVersion("0.1"); + //info.setFormattedXMLBuffer("<type>page</type>"); + page.addToolspecific(info); + } + + public static void ensureToolInfos(PetriNet net) { + for (Place p : net.allPlaces()) { + ToolInfo ti = (p.getNumToolspecific() > 0) ? p.getToolspecific(0) : null; + if (ti == null) { + System.out.println("[WARN] Place ohne (gültige) ToolInfo: " + p.getId()); + ti = new ToolInfo(); + ti.setTool("de.tudresden.inf.st.pnml.distributedPN"); + ti.setVersion("0.1"); + //ti.setFormattedXMLBuffer("<type>place</type>"); + p.addToolspecific(ti); + } + } + + for (Page pg : net.allPages()) { + ToolInfo ti = (pg.getNumToolspecific() > 0) ? pg.getToolspecific(0) : null; + if (ti == null) { + System.out.println("[WARN] Page ohne (gültige) ToolInfo: " + pg.getId()); + ti = new ToolInfo(); + ti.setTool("de.tudresden.inf.st.pnml.distributedPN"); + ti.setVersion("0.1"); + //ti.setFormattedXMLBuffer("<type>page</type>"); + pg.addToolspecific(ti); + } + } + + for (Transition t : net.allTransitions()) { + ToolInfo ti = (t.getNumToolspecific() > 0) ? t.getToolspecific(0) : null; + if (ti == null) { + System.out.println("[WARN] Transition ohne (gültige) ToolInfo: " + t.getId()); + ti = new ToolInfo(); + ti.setTool("de.tudresden.inf.st.pnml.distributedPN"); + ti.setVersion("0.1"); + //ti.setFormattedXMLBuffer("<type>transition</type>"); + t.addToolspecific(ti); + } + } + } + + private static Page create_sensordata_page(String robotAlias) throws Exception { + Page sensordataCollectionPage = new Page(); + sensordataCollectionPage.setId("sensordata_collection"); + addDefaultToolInfoToPage(sensordataCollectionPage); + + InputStream configStream = Main.class.getResourceAsStream("/config.json"); + + List<Map<String, String>> sensorList = new ArrayList<>(); + //boolean handoverPossible = false; + //boolean allowInterruptions = false; + + try { + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode config = objectMapper.readTree(configStream); + + if (config == null || !config.has("robots")) { + System.out.println("Config oder robots nicht gefunden."); + return sensordataCollectionPage; + } + + JsonNode robots = config.get("robots"); + + for (JsonNode robot : robots) { + JsonNode nameNode = robot.get("name"); + if (nameNode != null && nameNode.asText().equalsIgnoreCase(robotAlias)) { + JsonNode sensors = robot.get("sensors"); + if (sensors != null && sensors.isArray()) { + for (JsonNode sensor : sensors) { + Map<String, String> sensorMap = new HashMap<>(); + sensorMap.put("name", sensor.get("name").asText()); + sensorMap.put("kind", sensor.get("kind").asText()); + sensorList.add(sensorMap); + } + } + + //handoverPossible = robot.path("handoverPossible").asBoolean(false); + //allowInterruptions = robot.path("allowInterruptions").asBoolean(false); + break; // found robot + } + } + } catch (IOException e) { + System.err.println("Error reading config.json: " + e.getMessage()); + return sensordataCollectionPage; + } + + // create dummy-petrinet and add sensordata_collection page + PetriNet dummyNet = new PetriNet(); + dummyNet.addPage(sensordataCollectionPage); + dummyNet.flushTreeCache(); + + // custom places + for (Map<String, String> sensor : sensorList) { + String name = sensor.get("name"); + Place place = new Place(); + place.setId("p_" + name + "_" + robotAlias); + place.setName(new Name().setText(name + "_" + robotAlias)); + sensordataCollectionPage.addObject(place); + } + + // transitions + ToolInfo info = new ToolInfo(); + info.setTool("de.tudresden.inf.st.pnml.distributedPN"); + info.setVersion("0.1"); + Transition t_read_sensordata = new Transition().setId("t_read_sensordata").setName(new Name().setText("t_read_sensordata")).addToolspecific(info); + Transition t_no_cam = new Transition().setId("t_no_cam").setName(new Name().setText("t_no_cam")).addToolspecific(info); + Transition t_no_tf = new Transition().setId("t_no_tf").setName(new Name().setText("t_no_tf")).addToolspecific(info); + sensordataCollectionPage.addObject(t_read_sensordata); + sensordataCollectionPage.addObject(t_no_cam); + sensordataCollectionPage.addObject(t_no_tf); + + // custom arcs + for (Map<String, String> sensor : sensorList) { + String sensorName = sensor.get("name"); + String sensorKind = sensor.get("kind"); + Place arcStart = sensordataCollectionPage.petriNet().getPlaceById("p_" + sensorName + "_" + robotAlias); + + Arc arc = new Arc(); + arc.setId("a_" + sensorName + "_to_read"); + arc.setSource(arcStart); + arc.setTarget(t_read_sensordata); + sensordataCollectionPage.addObject(arc); + + if (sensorKind.equals("camera")) { + TransformationUtils.createAndIncludeInhibitorArc(sensordataCollectionPage, sensorName + "_to_no_cam", arcStart, t_no_cam); + } else { + Arc arc2 = new Arc(); + arc2.setId("a_" + sensorName + "_to_no_cam"); + arc2.setSource(arcStart); + arc2.setTarget(t_no_cam); + sensordataCollectionPage.addObject(arc2); + } + + if (sensorKind.equals("tf")) { + TransformationUtils.createAndIncludeInhibitorArc(sensordataCollectionPage, sensorName + "_to_no_tf", arcStart, t_no_tf); + } else { + Arc arc3 = new Arc(); + arc3.setId("a_" + sensorName + "_to_no_tf"); + arc3.setSource(arcStart); + arc3.setTarget(t_no_tf); + sensordataCollectionPage.addObject(arc3); + } + } + + // standard places + ToolInfo toolInfo = new ToolInfo(); + toolInfo.setTool("de.tudresden.inf.st.pnml.distributedPN"); + toolInfo.setVersion("0.1"); + //toolInfo.setFormattedXMLBuffer("<type>place</type>"); + Place p_read = new Place().setId("p_read_sensordata").setName(new Name().setText("p_read_sensordata")).addToolspecific(toolInfo);; + Place p_no_cam = new Place().setId("p_no_cam").setName(new Name().setText("p_no_cam")).addToolspecific(toolInfo);; + Place p_no_tf = new Place().setId("p_no_tf").setName(new Name().setText("p_no_tf")).addToolspecific(toolInfo);; + sensordataCollectionPage.addObject(p_read); + sensordataCollectionPage.addObject(p_no_cam); + sensordataCollectionPage.addObject(p_no_tf); + + // standard arcs + // arcs to read_sensordata + for (Transition t : sensordataCollectionPage.petriNet().allTransitions()) { + Arc arc = new Arc(); + arc.setId("arc_" + t.getId() + "_to_p_read"); + arc.setSource(t); + arc.setTarget(p_read); + sensordataCollectionPage.addObject(arc); + } + + // arcs to no_cam / no_tf + Arc arcNoCam = new Arc().setId("arc_t_no_cam_to_p_no_cam").setSource(t_no_cam).setTarget(p_no_cam); + Arc arcNoTf = new Arc().setId("arc_t_no_tf_to_p_no_tf").setSource(t_no_tf).setTarget(p_no_tf); + sensordataCollectionPage.addObject(arcNoCam); + sensordataCollectionPage.addObject(arcNoTf); + + /* + // define publishing ports + TopicTransitionInformation sti = new TopicTransitionInformation(); + //dinerosTransition.setMutableTransitionInformation(sti); + dinerosTransition.setMutableTransitionInformation(sti); + publishPort.setId("pub_read_sensordata"); + publishPort.setName(new Name().setText(publishPort.getId())); + portType.setText("publisher"); + publishPort.setType(portType); + publishPort.setId("pub_no_cam"); + publishPort.setName(new Name().setText("pub_no_cam")); + portType.setText("publisher"); + publishPort.setType(portType); + publishPort.setId("pub_no_tf"); + publishPort.setName(new Name().setText("pub_no_tf")); + portType.setText("publisher"); + publishPort.setType(portType); + */ + + // flush + //petriNet.addPage(sensordataCollectionPage); + //petriNet.flushTreeCache(); + //petriNet.flushAttrAndCollectionCache(); + + return sensordataCollectionPage; + } + + /* + private void rerouteArcs(Place refPlace, Place originalPlace) { + // Eingehende Arcs (auf refPlace): Ziel umleiten auf originalPlace + for (Arc arc : new ArrayList<>(refPlace.getInArcs())) { + arc.setTarget(originalPlace); + System.out.println(" → Incoming Arc umgeleitet: " + arc.getId()); + } + + // Ausgehende Arcs (von refPlace): Quelle umleiten auf originalPlace + for (Arc arc : new ArrayList<>(refPlace.getOutArcs())) { + arc.setSource(originalPlace); + System.out.println(" → Outgoing Arc umgeleitet: " + arc.getId()); + } + } + + public void inlineSubpagesToController(Page blockPage) { + // Finde alle Subpages (alle außer controller selbst) + List<Page> subpages = allPages.stream() + .filter(p -> !p.getId().equals(controllerPage.getId())) + .collect(Collectors.toList()); + + // check subpages + if (subpages.isEmpty()) { + System.out.println("[INFO] Controller enthält keine Subpages – keine Aktion notwendig."); + return; + } + + // check for "_ref-Place" + boolean hasRefPlaces = subpages.stream() + .flatMap(p -> p.getPlaces().stream()) + .anyMatch(place -> place.getId().endsWith("_ref")); + + if (!hasRefPlaces) { + System.out.println("[INFO] Keine _ref-Places gefunden – keine Umleitungen notwendig."); + return; + } + + // resolve static/dynamic subpages to blockpages + System.out.println("[INFO] Inlining der Subpages in die Controller-Page gestartet…"); + + for (Page subpage : subpages) { + System.out.println("→ Subpage: " + subpage.getId()); + + // PLACES + for (Place place : new ArrayList<>(subpage.getPlaces())) { + if (place.getId().endsWith("_ref")) { + String targetId = place.getId().replace("_ref", ""); + Place target = blockPage.getPlaceById(targetId); + + if (target != null) { + rerouteArcs(place, target); + subpage.removePlace(place); + System.out.println(" - _ref-Place entfernt: " + place.getId() + " → umgeleitet zu: " + target.getId()); + } else { + System.err.println(" [WARNUNG] Kein Ziel für _ref-Place gefunden: " + place.getId()); + } + } else { + controllerPage.addPlace(place); + subpage.removePlace(place); + System.out.println(" + Place übernommen: " + place.getId()); + } + } + + // TRANSITIONS + for (Transition transition : new ArrayList<>(subpage.getTransitions())) { + blockPage.addTransition(transition); + subpage.removeTransition(transition); + System.out.println(" + Transition übernommen: " + transition.getId()); + } + + // ARCS + for (Arc arc : new ArrayList<>(subpage.getArcs())) { + blockPage.addArc(arc); + subpage.removeArc(arc); + System.out.println(" + Arc übernommen: " + arc.getId()); + } + + // Subpage entfernen + blockPage.removePage(subpage); + System.out.println("✓ Subpage gelöscht: " + subpage.getId()); + } + + System.out.println("[INFO] Inlining abgeschlossen."); + } //*/ + private static void doFlattening(String pnmlPath, boolean flagInhibitor, boolean flagSignal, boolean flagPurge, boolean flagOverrideInstanceCount, boolean flagOutArcs, boolean flagNoSignal, String tinaPath, String tinaVersion) - throws InvalidIDException, IOException, InterruptedException, Parser.Exception { + throws Exception { if (pnmlPath == null) { System.out.println("[ERROR] No model found on given input path."); return; } - // if (configPath == null || configPath.isEmpty()) { - // System.out.println("[WARNING] No config path configured, no model checking will be executed."); - // } - // parse the global not flatted petri net PetriNet petriNet = PnmlParser.parsePnml(pnmlPath, true).get(0); Map<String, Integer> bounds = null; - if (flagPurge) { - bounds = TransformationUtils.getPlaceToBoundMapping - (pnmlPath, petriNet, TransformationUtils.getSourceNodePages(petriNet), tinaPath, tinaVersion); - } - // [STAGE 1] Resolve service prototype pages - ServiceGraph serviceGraph = new ServiceGraph(); - serviceGraph.init(petriNet); - - Map<String, PnObject> addedInstanceObjects = new HashMap<>(); - TransformationUtils.transformPrototypePagesRecursive(petriNet.getPage(0), null, - petriNet, serviceGraph, addedInstanceObjects, flagOverrideInstanceCount); - petriNet.flushAttrAndCollectionCache(); - - // [STAGE 2] Transform topic transitions - for (DinerosTransition dt : petriNet.allDinerosTransitions()) { - if (dt.canTransformTopicTransition()) { - Page topicTransformedPage = dt.transformTopicElement(bounds, flagInhibitor, flagPurge); - for (int i = 0; i < dt.ContainingPage().getNumObject(); i++) { - if (dt.ContainingPage().getObject(i).getId().equals(dt.getId())) { - dt.ContainingPage().setObject(topicTransformedPage, i); + + /////////////////////// STAGES /////////////////////// + // Paths + InputStream topologyStream = Main.class.getResourceAsStream("/collaboration_system_topology.json"); + InputStream configStream = Main.class.getResourceAsStream("/config.json"); + + try { + ObjectMapper mapper = new ObjectMapper(); + JsonNode system = mapper.readTree(topologyStream); + JsonNode config = mapper.readTree(configStream); + + // read all pages from coordinator or roboter module + JsonNode modules = system.get("modules"); + if (modules == null) { System.err.println("No modules defined in collaboration_system_topology.json"); return;} + JsonNode blocks = system.get("blocks"); + if (blocks == null) { System.err.println("No blocks defined in collaboration_system_topology.json"); return;} + + + // [STAGE ] Create all blocks + // define top level page 'collaboration_system' from the template + Page systemPage = petriNet.getPage(0); + addDefaultToolInfoToPage(systemPage); + + // iterate all modules objects (coordinator, robotX) + for (JsonNode module : modules) { + // parse module object and find key (f.e. "coordinator") + Iterator<String> moduleNames = module.fieldNames(); + while (moduleNames.hasNext()) { + String moduleName = moduleNames.next(); + Page modulePage = new Page().setId(moduleName); + addDefaultToolInfoToPage(modulePage); + JsonNode blockList = module.get(moduleName); + + for (JsonNode blockEntry : blockList) { + String blockName = blockEntry.get("block").asText(); // f.e. "environment", "actor", etc. + Page blockPage = new Page().setId(blockName); + addDefaultToolInfoToPage(blockPage); + + // find the matching block in blockList f.e. "environment" + for (JsonNode block : blocks) { + if (block.has(blockName)) { + JsonNode pages = block.get(blockName); + for (JsonNode pageEntry : pages) { + JsonNode page = pageEntry.get("page"); + if (page != null && !page.asText().isEmpty()) { + PetriNet staticPetriNet = findStaticPetriNet(page.asText()); + Page staticPage = staticPetriNet.getPage(0); + //Page staticPage = new Page().setId(page.asText()); + + // add toolspecifics from staticPage + System.out.println("staticPageID: " + staticPage.getId()); + System.out.println("staticPageNum: " + staticPetriNet.getNumPage()); + //ToolInfo info = staticPage.getToolspecific(0); + //System.out.println("staticPageToolInfoREF: " + info); + //System.out.println("staticPageToolInfo: " + info.getFormattedXMLBuffer()); + + + if (staticPetriNet.getNumToolspecific() > 0) { + ToolInfo i = staticPetriNet.getToolspecific(0); + staticPage.addToolspecific(i); + } + + blockPage.addObject(staticPage); + staticPetriNet.flushTreeCache(); + } + } + + // add dynamic read_sensordata-page in perceiver-block + /* + System.out.println("HIER WÄRE DAS EINFÜGEN MÖGLICH: " + blockName); + if (blockName.equals("perceiver")) { + System.out.println("ADDING sensordata_collection page for robot: " + blockName); + Page dynamicPage = create_sensordata_page("robo1"); + blockPage.addObject(dynamicPage); + } + System.out.println();LeftCellObjectsTopicTransition + //*/ + //if (blockName.equals("roboter")) { + + //} + } + } + modulePage.addObject(blockPage); } + systemPage.addObject(modulePage); + systemPage.flushTreeCache(); } - petriNet.flushTreeCache(); } + petriNet.flushTreeCache(); + } + catch (Exception e) { + System.err.println("Error while reading collaboration_system_topology.json: " + e.getMessage()); } - petriNet.flushTreeCache(); - // [STAGE 3] Transform service transitions - for (DinerosTransition dt : petriNet.allDinerosTransitions()) { - if (dt.canTransformServiceTransition()) { - Page serviceTransformedPage = dt.transformServiceElement(addedInstanceObjects); - for (int i = 0; i < dt.ContainingPage().getNumObject(); i++) { - if (dt.ContainingPage().getObject(i).getId().equals(dt.getId())) { - dt.ContainingPage().setObject(serviceTransformedPage, i); - } - } - petriNet.flushTreeCache(); - } - } + // [STAGE C] Create as many sensor blocks as sensor entries of all robots together + + /* if (!flagNoSignal) { // [STAGE 4] Transform signals Page signalValuePage = new Page(); @@ -167,7 +547,9 @@ public class Main { petriNet.flushTreeCache(); } + //*/ + /* // [STAGE 5] make sure that we have a valid marking System.out.println("[FLATTENER] Checking marking."); for (Place p : petriNet.allPlaces()) { @@ -187,6 +569,41 @@ public class Main { break; } } +*/ + // debugging and repais: check if all places got toolspecifics + for (Place p : petriNet.allPlaces()) { + if (p.getNumToolspecific() == 0 || p.getToolspecific(0) == null) { + System.out.println("[WARN] Place ohne ToolInfo: " + p.getId()); + + // repair + ToolInfo ti = new ToolInfo(); + ti.setTool("de.tudresden.inf.st.pnml.distributedPN"); + ti.setVersion("0.1"); + //ti.setFormattedXMLBuffer("<type>place</type>"); + p.addToolspecific(ti); + } + } + // debugging and repair: check if all pages got toolspecifics + for (Page pg : petriNet.allPages()) { + if (pg.getNumToolspecific() == 0 || pg.getToolspecific(0) == null) { + System.out.println("[WARN] Page ohne ToolInfo: " + pg.getId()); + addDefaultToolInfoToPage(pg); + } + } + // debugging and repair: check if all transitions got toolspecifics + for (Transition t : petriNet.allTransitions()) { + if (t.getNumToolspecific() == 0 || t.getToolspecific(0) == null) { + System.out.println("[WARN] Transition ohne ToolInfo: " + t.getId()); + + // repair + ToolInfo ti = new ToolInfo(); + ti.setTool("de.tudresden.inf.st.pnml.distributedPN"); + ti.setVersion("0.1"); + //ti.setFormattedXMLBuffer("<type>transition</type>"); + t.addToolspecific(ti); + } + } + // [STAGE 7] Postprocessing System.out.println("[FLATTENER] Running postprocessing."); @@ -196,6 +613,7 @@ public class Main { petriNet.flushTreeCache(); } + ensureToolInfos(petriNet); printNet(petriNet, false, false); // [STAGE 8] export flatted net to pnml @@ -219,35 +637,6 @@ public class Main { ndrioProxy.pnml2net(pnmlExportPath, ndrioTargetPath, tinaPath, tinaVersion); ndrioProxy.includeInhibitorArcs(petriNet, ndrioTargetPath, inhibitorTargetPath); - // [STAGE 9] Analyze - // read config for analyzer from file - /* if (configPath != null && !configPath.isEmpty() && !configPath.equals("-nc")) { - ConfigReader cr = new ConfigReader(configPath); - String[] tinaConfig = cr.getTinaConfigParams(); - String[] siftConfig = cr.getSiftConfigParams(); - - // insert into tina - if (tinaConfig.length > 1) { - System.out.println("[FLATTENER] Inserting into tina."); - TinaProxy tinaProxy = new TinaProxy(); - String tinaTargetPath = homeDirectory + "/temp/tina/" + "tina-result-" + exportId + ".txt"; - tinaProxy.analyzePetriNet(inhibitorTargetPath, tinaTargetPath, tinaConfig); - } - - // insert into sift - if (siftConfig.length > 1) { - System.out.println("[FLATTENER] Inserting into sift."); - SiftProxy siftProxy = new SiftProxy(); - String siftTargetPath = homeDirectory + "/temp/sift/" + "sift-result-" + exportId + ".ktz"; - siftProxy.analyzePetriNet(inhibitorTargetPath, siftTargetPath, siftConfig); - - System.out.println("[FLATTENER] Converting with ktzio."); - KtzioProxy ktzioProxy = new KtzioProxy(); - String ktzioPath = homeDirectory + "/temp/sift/" + "sift-result-converted-" + exportId + ".txt"; - ktzioProxy.convertBinaryToText(siftTargetPath, ktzioPath); - } - }*/ - System.out.println("[FLATTENER] Finished."); } @@ -257,6 +646,7 @@ public class Main { System.out.println("----------------- PLACES ----------------"); for (Place p : petriNet.allPlaces()) { + System.out.println("Place " + p.asDinerosPlace().getId()); System.out.println("Place " + p.asDinerosPlace().getId() + " -- " + p.asDinerosPlace().getStaticPlaceInformation().getSubNet()); if (p.getInitialMarking() != null) { System.out.println("--- Marking: " + p.getInitialMarking().getText()); @@ -340,4 +730,4 @@ public class Main { } } } -} \ No newline at end of file +} diff --git a/src/main/resources/collaboration_system_topology.json b/src/main/resources/collaboration_system_topology.json new file mode 100644 index 0000000000000000000000000000000000000000..886357a3f3a40119726af7ca5a63017172963181 --- /dev/null +++ b/src/main/resources/collaboration_system_topology.json @@ -0,0 +1,78 @@ +{ + "modules" : [ + { + "coordinator": [ + { "block": "environment" }, + { "block": "reflexes"}, + { "block": "collision_control"} + ] + }, + { + "roboter": [ + { "block": "perceiver"}, + { "block": "selector"}, + { "block": "actor"}, + { "block": "executor"}, + { "block": "controller"} + ] + } + ], + "blocks" : [ + { + "environment": [ + {"page": "analyse_scene"}, + {"page": "determine_hazards"} + ] + }, + { + "reflexes": [ + {"page": "extract_reflexzones"}, + {"page": "create_reflexes"} + ] + }, + { + "collisioncontrol": [ + {"page": "collision_control"} + ] + }, + { + "perceiver": [] + }, + { + "selector": [ + {"page": "get_task"} + ] + }, + { + "actor": [ + {"page": "simple_action"}, + {"page": "handover_receiver"}, + {"page": "handover_giver"}, + {"page": "action_categorization"} + ] + }, + { + "executor": [ + {"page": "new_action"}, + {"page": "create_trajectory"}, + {"page": "allow_trajectory"} + ] + }, + { + "controller": [ + {"page": "interruption_request"}, + {"page": "update_taskqueue"}, + {"page": "task_safety"}, + {"page": "interruption_safety"} + ] + } + ] +} + + + + + + + + diff --git a/src/main/resources/config.json b/src/main/resources/config.json new file mode 100644 index 0000000000000000000000000000000000000000..c186ffd76e8566da7f7091e7c805ae7b27d88e8a --- /dev/null +++ b/src/main/resources/config.json @@ -0,0 +1,21 @@ +{ + "robots": [ + { + "name": "robot1", + "sensors": [ + { "name": "cam1", "kind": "camera"}, + { "name": "mic1", "kind": "microphone" } + ], + "handoverPossible": true, + "allowInterruptions": true + }, + { + "name": "robot2", + "sensors": [ + { "name": "cam2", "kind": "camera"} + ], + "handoverPossible": true, + "allowInterruptions": true + } + ] +} \ No newline at end of file diff --git a/src/main/resources/coordinator.pnml b/src/main/resources/coordinator.pnml new file mode 100644 index 0000000000000000000000000000000000000000..e99e8685ee396b2316ac3e023df8aaffbc128727 --- /dev/null +++ b/src/main/resources/coordinator.pnml @@ -0,0 +1,3037 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!--pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"--> +<pnml> + <net id="coordinator" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <page id="top"> + + + + <!-- *************** GLOBAL COORDINATOR *************** --> + + <page id="analyse_scene"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_sensordata_captured"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "xxx", "data" : "image" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Bilddaten erfassen</text> + </name> + </place> + <place id="p_objects_captured"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "data" : "objects", "location" : "xyz" , "contour" : "faces" , "function" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Objekte erfasst</text> + </name> + </place> + <place id="p_scene_captured"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Szene erfasst</text> + </name> + </place> + <!--transitions--> + <transition id="t_identify_objects"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Objekte identifizieren</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_sensordata_captured" source="p_sensordata_captured" target="t_identify_objects"> + </arc> + <arc id="tp_identify_objects_1" source="t_identify_objects" target="p_objects_captured"> + </arc> + <arc id="tp_identify_objects_2" source="t_identify_objects" target="p_scene_captured"> + </arc> + </page> + + + <page id="determine_hazards"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_objects_captured"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "data" : "objects", "location" : "xyz" , "contour" : "faces" , "function" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Objekte erfasst</text> + </name> + </place> + <place id="p_scene_captured"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Szene erfasst</text> + </name> + </place> + <place id="p_hazards_identified"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "kind" : "xxx", "location" : "xyz" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>pot. Gefahren ermittelt</text> + </name> + </place> + <place id="p_hazard_status"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Gefahrenbereiche ermitteln</text> + </name> + </place> + <place id="p_hazardzones"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "kind" : "xxx", "location" : "x y z", "area" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Gefahrenbereiche</text> + </name> + </place> + <!--transitions--> + <transition id="t_analyse_hazards"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>pot. Gefahren analysieren</text> + </name> + </transition> + <transition id="t_determine_hazardzones"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Gefahrenbereiche ermitteln</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_objects_captured" source="p_objects_captured" target="t_analyse_hazards"> + </arc> + <arc id="pt_scene_captured" source="p_scene_captured" target="t_analyse_hazards"> + </arc> + <arc id="tp_analyse_hazards" source="t_analyse_hazards" target="p_hazards_identified"> + </arc> + <arc id="pt_hazards_identified" source="p_hazards_identified" target="t_determine_hazardzones"> + </arc> + <arc id="tp_determine_hazardzones_1" source="t_determine_hazardzones" target="p_hazard_status"> + </arc> + <arc id="tp_determine_hazardzones_2" source="t_determine_hazardzones" target="p_hazard_zones"> + </arc> + </page> + + + <page id="extract_reflexzones"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_hazardzones"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "kind" : "xxx", "location" : "x y z", "area" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Gefahrenbereiche</text> + </name> + </place> + <place id="p_reflexzones"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "location" : "x y z", "area" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Reflexzonen</text> + </name> + </place> + <!--transitions--> + <transition id="t_determine_reflexzones"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Reflexzonen bestimmen</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_hazardzones" source="p_hazardzones" target="t_determine_reflexzones"> + </arc> + <arc id="tp_determine_reflexzones" source="t_determine_reflexzones" target="p_reflexzones"> + </arc> + </page> + + + <page id="create_reflexes"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_reflexzones"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "location" : "x y z", "area" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Reflexzonen</text> + </name> + </place> + <place id="p_trajectory_suggestion"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "reflex" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Trajektorienvorschlag</text> + </name> + </place> + <place id="p_reflex_suggestion_accepted"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "reflex" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Reflexvorschlag akzeptiert</text> + </name> + </place> + <place id="p_risk_of_collision"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "reflex" , "placeOfCollision" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Kollisionsgefahr</text> + </name> + </place> + <place id="p_freedom_of_collision"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "reflex" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Kollisionsfreiheit</text> + </name> + </place> + <!--transitions--> + <transition id="t_create_reflex_suggestion"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Reflexvorschlag erstellen</text> + </name> + </transition> + <transition id="t_accept_reflex_suggestion"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Reflexvorschlag annehmen</text> + </name> + </transition> + <transition id="t_deny_reflex_suggestion"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Reflexvorschlag ablehnen</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_reflexzones" source="p_reflexzones" target="t_create_reflex_suggestion"> + </arc> + <arc id="tp_create_reflex_suggestion" source="t_create_reflex_suggestion" target="p_trajectory_suggestion"> + </arc> + <arc id="pt_reflex_suggestion_1" source="p_trajectory_suggestion" target="t_accept_reflex_suggestion"> + </arc> + <arc id="pt_reflex_suggestion_2" source="p_trajectory_suggestion" target="t_deny_reflex_suggestion"> + </arc> + <arc id="tp_accept_reflex_suggestion" source="t_accept_reflex_suggestion" target="p_reflex_suggestion_accepted"> + </arc> + <arc id="tp_deny_reflex_suggestion" source="t_deny_reflex_suggestion" target="p_reflexzones"> + </arc> + <arc id="pt_risk_of_collision" source="p_risk_of_collision" target="tp_deny_reflex_suggestion"> + </arc> + <arc id="pt_freedom_of_collision" source="p_freedom_of_collision" target="t_accept_reflex_suggestion"> + </arc> + </page> + + + <page id="s_collision_control"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_collsion_control"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Kollisionskontrolle</text> + </name> + </place> + <place id="p_hazardzones"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "kind" : "xxx", "location" : "x y z", "area" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Gefahrenbereiche</text> + </name> + </place> + <place id="p_scene_captured"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Szene erfasst</text> + </name> + </place> + <place id="p_virtual_trajectory"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "status" : "xxx", "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>virtuelle Trajektorie</text> + </name> + </place> + <place id="p_trajectory_suggestion"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "reflex" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Trajektorienvorschlag</text> + </name> + </place> + <place id="p_freedom_of_collision"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "reflex" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Kollisionsfreiheit</text> + </name> + </place> + <place id="p_risk_of_collision"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "reflex" : "trajectory" , "placeOfCollision" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Kollisionsgefahr</text> + </name> + </place> + <!--transitions--> + <transition id="t_check_collsion"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Kollsion überprüfen</text> + </name> + </transition> + <transition id="t_incomplete_data"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>unzureichende Datenlage</text> + </name> + </transition> + <transition id="t_collision_freedom"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Kollisionsfreiheit</text> + </name> + </transition> + <transition id="t_collision_risk"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Kollisionsgefahr</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_collsion_control_1" source="p_collsion_control" target="t_check_collsion"> + </arc> + <arc id="pt_collsion_control_2" source="p_collsion_control" target="t_incomplete_data"> + </arc> + <arc id="pt_hazardzones_1" source="p_hazardzones" target="t_check_collsion"> + </arc> + <arc id="pt_hazardzones_2" source="p_hazardzones" target="t_incomplete_data"> + </arc> + <arc id="pt_scene_captured_1" source="p_scene_captured" target="t_check_collsion"> + </arc> + <arc id="pt_scene_captured_2" source="p_scene_captured" target="t_incomplete_data"> + </arc> + <arc id="pt_trajectory_suggestion" source="p_trajectory_suggestion" target="t_check_collsion"> + </arc> + <arc id="tp_check_collsion_1" source="t_check_collsion" target="p_collsion_control"> + </arc> + <arc id="tp_check_collsion_2" source="t_check_collsion" target="p_virtual_trajectory"> + </arc> + <arc id="pt_virtual_trajectory_1" source="p_virtual_trajectory" target="t_collision_freedom"> + </arc> + <arc id="pt_virtual_trajectory_2" source="p_virtual_trajectory" target="t_collision_risk"> + </arc> + <arc id="tp_collision_risk" source="t_collision_risk" target="p_risk_of_collision"> + </arc> + <arc id="tp_incomplete_data" source="t_incomplete_data" target="p_risk_of_collision"> + </arc> + <arc id="tp_collision_freedom" source="t_collision_freedom" target="p_freedom_of_collision"> + </arc> + </page> + + + + + + + <!-- *************** LOCAL COORDINATOR (1) *************** --> + + <page id="sensordata_collection"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_read_sensordata"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "read_data", "status" : "true" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Sensordaten erfassen</text> + </name> + </place> + <place id="p_robo1_cam0"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "robo1_cam0", "data" : "data_robo1_cam0" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Roboter1_Kamera0</text> + </name> + </place> + <place id="p_robo1_imu"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "robo1_imu_rpy", "data" : "data_rob1_imu_rpy" } </token> + <token> { "id" : "robo1_imu_accXYZ", "data" : "data_rob1_imu_accXYZ" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Roboter1_IMU</text> + </name> + </place> + <place id="p_robo1_force"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "robo1_force_r0", "data" : "data_rob1_force_r0"} </token> + <token> { "id" : "robo1_force_r1", "data" : "data_rob1_force_r1"} </token> + <token> { "id" : "robo1_force_r2", "data" : "data_rob1_force_r2"} </token> + <token> { "id" : "robo1_force_r3", "data" : "data_rob1_force_r3"} </token> + <token> { "id" : "robo1_force_r4", "data" : "data_rob1_force_r4"} </token> + <token> { "id" : "robo1_force_r5", "data" : "data_rob1_force_r5"} </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Roboter1_ForceSensor</text> + </name> + </place> + <place id="p_data_incomplete"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "data_incomplete", "status" : "true"} </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Daten_unvollständig</text> + </name> + </place> + <place id="p_sensordata"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "cam0", "data" : "data_cam0"} </token> + <!--token> { "id" : "imu", "data" : "data_imu"} </token--> + <token> { "id" : "force", "data" : "data_force"} </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Sensordaten</text> + </name> + </place> + <!-- transitions --> + <transition id="t_no_data"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>keine Sensordaten</text> + </name> + </transition> + <transition id="t_cam0"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>nur Kamera0</text> + </name> + </transition> + <transition id="t_imu"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>nur IMU</text> + </name> + </transition> + <transition id="t_force"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>nur Kraftsensor</text> + </name> + </transition> + <transition id="t_cam_force"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Kamera0 und Kraftsensor</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_read_sensordata_1" source="p_read_sensordata" target="t_no_data"> + </arc> + <arc id="pt_read_sensordata_2" source="p_read_sensordata" target="t_cam0"> + </arc> + <arc id="pt_read_sensordata_3" source="p_read_sensordata" target="t_force"> + </arc> + <arc id="pt_read_sensordata_4" source="p_read_sensordata" target="t_cam_force"> + </arc> + <arc id="pt_robo1_cam0_1" source="p_robo1_cam0" target="t_no_data"> + </arc> + <arc id="pt_robo1_cam0_2" source="p_robo1_cam0" target="t_cam0"> + </arc> + <arc id="pt_robo1_cam0_3" source="p_robo1_cam0" target="t_force"> + </arc> + <arc id="pt_robo1_cam0_4" source="p_robo1_cam0" target="t_cam_force"> + </arc> + <arc id="pt_robo1_force_1" source="p_robo1_force" target="t_no_data"> + </arc> + <arc id="pt_robo1_force_2" source="p_robo1_force" target="t_cam0"> + </arc> + <arc id="pt_robo1_force_3" source="p_robo1_force" target="t_force"> + </arc> + <arc id="pt_robo1_force_4" source="p_robo1_force" target="t_cam_force"> + </arc> + <arc id="tp_no_data_1" source="t_no_data" target="p_data_incomplete"> + </arc> + <arc id="tp_no_data_2" source="t_no_data" target="p_sensordata"> + </arc> + <arc id="tp_cam0_1" source="t_cam0" target="p_data_incomplete"> + </arc> + <arc id="tp_cam0_2" source="t_cam0" target="p_sensordata"> + </arc> + <arc id="tp_force_1" source="t_force" target="p_data_incomplete"> + </arc> + <arc id="tp_force_2" source="t_force" target="p_sensordata"> + </arc> + <arc id="tp_cam_force" source="t_cam_force" target="p_sensordata"> + </arc> + </page> + + + <page id="sensordata_fusion"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_read_sensordata"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "cam0", "data" : "data_cam0"} </token> + <token> { "id" : "imu", "data" : "data_imu"} </token> + <token> { "id" : "force", "data" : "data_force"} </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Sensordaten erfassen</text> + </name> + </place> + <place id="p_sensordata"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "cam0", "data" : "data_cam0"} </token> + <token> { "id" : "imu", "data" : "data_imu"} </token> + <token> { "id" : "force", "data" : "data_force"} </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Sensordaten</text> + </name> + </place> + <!-- transitions --> + <transition id="t_sensordata_fusion"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Sensordatenfusion/-korrektur</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_read_sensordata" source="p_read_sensordata" target="t_sensordata_fusion"> + </arc> + <arc id="tp_sensordata_fusion" source="t_sensordata_fusion" target="p_sensordata"> + </arc> + </page> + + + <page id="get_task"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_read_sensordata"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "read_data", "status" : "true" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Sensordaten erfassen</text> + </name> + </place> + <place id="p_understand_task"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "understand_task", "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Aufgabe verstehen</text> + </name> + </place> + <place id="p_new_task"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "new_task", "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>neue Tätigkeit</text> + </name> + </place> + <!-- transitions --> + <transition id="t_extract_task"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Taskerfassung</text> + </name> + </transition> + <transition id="t_extern_task"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Taskerfassung (extern)</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_read_sensordata" source="p_read_sensordata" target="t_no_data"> + </arc> + <arc id="pt_understand_task_1" source="p_understand_task" target="t_extract_task"> + </arc> + <arc id="pt_understand_task_2" source="p_understand_task" target="t_extern_task"> + </arc> + <arc id="tp_extract_task_1" source="t_extract_task" target="p_understand_task"> + </arc> + <arc id="tp_extern_task_1" source="t_extern_task" target="p_understand_task"> + </arc> + <arc id="tp_extract_task_2" source="t_extract_task" target="p_new_task"> + </arc> + <arc id="tp_extern_task_2" source="t_extern_task" target="p_new_task"> + </arc> + </page> + + + <page id="interruption_request"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_new_task"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "new_task", "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>neue Tätigkeit</text> + </name> + </place> + <place id="p_signal_idle"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "idle" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Signal: idle</text> + </name> + </place> + <place id="p_signal_prio_maintask"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Signal: Hauptaufgabe hochpriorisiert</text> + </name> + </place> + <place id="p_signal_safety_critical"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Signal: Tätigkeit sicherheitskritisch</text> + </name> + </place> + <place id="p_signal_task_uninterruptable"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Signal: Tätigkeit ununterbrechbar</text> + </name> + </place> + <place id="p_prio_secondary_task"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Nebentätigkeit höher priorisiert</text> + </name> + </place> + <place id="p_task_not_safety_critical"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Haupttätigkeit nicht sicherheitskritisch</text> + </name> + </place> + <place id="p_secondary_task_possible"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Nebentätigkeit möglich</text> + </name> + </place> + <place id="p_secondary_task_delayed"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" , "expected_delay" = "time" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Nebentätigkeit aufgeschoben</text> + </name> + </place> + <place id="p_secondary_task_denied"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Nebentätigkeit abgelehnt</text> + </name> + </place> + <place id="p_taskqueue"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "taskqueue" : "tasks" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Aufgabenkette</text> + </name> + </place> + <!--transitions--> + <transition id="t_task_idle"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>idle</text> + </name> + </transition> + <transition id="t_maintask_no_prio"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>nicht hochpriorisiert</text> + </name> + </transition> + <transition id="t_maintask_prio"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>hochpriorisiert</text> + </name> + </transition> + <transition id="t_task_safety_uncritical"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>unkritisch</text> + </name> + </transition> + <transition id="t_task_safety_critical"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>kritisch</text> + </name> + </transition> + <transition id="t_task_interruptable"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>unterbrechbar</text> + </name> + </transition> + <transition id="t_task_uninterruptable"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>ununterbrechbar</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_signal_idle" source="p_signal_idle" target="t_task_idle"> + </arc> + <arc id="pt_new_task_1" source="p_new_task" target="t_task_idle"> + </arc> + <arc id="pt_new_task_2" source="p_new_task" target="t_maintask_no_prio"> + </arc> + <arc id="pt_new_task_3" source="p_new_task" target="t_maintask_prio"> + </arc> + <arc id="t_task_idle" source="t_task_idle" target="p_taskqueue"> + </arc> + + <arc id="pt_signal_prio_maintask_1" source="p_signal_prio_maintask" target="t_maintask_no_prio"> + </arc> + <arc id="pt_signal_prio_maintask_2" source="p_signal_prio_maintask" target="t_maintask_prio"> + </arc> + <arc id="tp_maintask_prio" source="t_maintask_prio" target="p_secondary_task_denied"> + </arc> + <arc id="tp_maintask_no_prio" source="t_maintask_no_prio" target="p_prio_secondary_task"> + </arc> + <arc id="pt_prio_secondary_task_1" source="p_prio_secondary_task" target="t_task_safety_uncritical"> + </arc> + <arc id="pt_prio_secondary_task_2" source="p_prio_secondary_task" target="t_task_safety_critical"> + </arc> + <arc id="pt_signal_safety_critical_1" source="p_signal_safety_critical" target="t_task_safety_uncritical"> + </arc> + <arc id="pt_signal_safety_critical_2" source="p_signal_safety_critical" target="t_task_safety_critical"> + </arc> + <arc id="tp_task_safety_uncritical" source="t_task_safety_uncritical" target="p_task_not_safety_critical"> + </arc> + + <arc id="pt_task_not_safety_critical_1" source="p_task_not_safety_critical" target="t_task_interruptable"> + </arc> + <arc id="pt_task_not_safety_critical_2" source="p_task_not_safety_critical" target="t_task_uninterruptable"> + </arc> + <arc id="pt_signal_task_uninterruptable_1" source="p_signal_task_uninterruptable" target="t_task_interruptable"> + </arc> + <arc id="pt_signal_task_uninterruptable_2" source="p_signal_task_uninterruptable" target="t_task_uninterruptable"> + </arc> + <arc id="tp_task_interruptable" source="t_task_interruptable" target="p_secondary_task_possible"> + </arc> + + <arc id="tp_task_safety_critical" source="t_task_safety_critical" target="p_secondary_task_delayed"> + </arc> + <arc id="tp_task_uninterruptable" source="t_task_uninterruptable" target="p_secondary_task_delayed"> + </arc> + </page> + + + <page id="update_taskqueue"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_secondary_task_possible"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Nebentätigkeit möglich</text> + </name> + </place> + <place id="p_signal_task_completed"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Signal: Tätigkeit beendet</text> + </name> + </place> + <place id="p_secondary_task_delayed"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" , "expected_delay" = "time" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Nebentätigkeit aufgeschoben</text> + </name> + </place> + <place id="p_secondary_task_denied"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Nebentätigkeit abgelehnt</text> + </name> + </place> + <place id="p_taskqueue"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "taskqueue" : "tasks" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Aufgabenkette</text> + </name> + </place> + <place id="p_signal_idle"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "idle" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Signal: idle</text> + </name> + </place> + <place id="p_current_task"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>aktuelle Tätigkeit</text> + </name> + </place> + <!--transitions--> + <transition id="t_secondary_task_first"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Nebentätigkeit vor Aufgabenkette</text> + </name> + </transition> + <transition id="t_delete_first_entry"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>erstes Element löschen</text> + </name> + </transition> + <transition id="t_insert_secondary_task"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Einarbeitung der Nebentätigkeit</text> + </name> + </transition> + <transition id="t_keep_taskqueue"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Beibehaltung der Aufgabenkette</text> + </name> + </transition> + <transition id="t_empty_taskqueue"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>leere Aufgabenkette</text> + </name> + </transition> + <transition id="t_next_task"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>nächste Tätigkeit</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_secondary_task_possible" source="p_secondary_task_possible" target="t_secondary_task_first"> + </arc> + <arc id="pt_signal_task_completed" source="p_signal_task_completed" target="t_delete_first_entry"> + </arc> + <arc id="pt_secondary_task_delayed" source="p_secondary_task_delayed" target="t_insert_secondary_task"> + </arc> + <arc id="p_secondary_task_denied" source="p_secondary_task_denied" target="t_keep_taskqueue"> + </arc> + <arc id="pt_taskqueue_1" source="p_taskqueue" target="t_secondary_task_first"> + </arc> + <arc id="pt_taskqueue_2" source="p_taskqueue" target="t_delete_first_entry"> + </arc> + <arc id="pt_taskqueue_3" source="p_taskqueue" target="t_insert_secondary_task"> + </arc> + <arc id="pt_taskqueue_4" source="p_taskqueue" target="t_keep_taskqueue"> + </arc> + <arc id="pt_taskqueue_5" source="p_taskqueue" target="t_empty_taskqueue"> + </arc> + <arc id="pt_taskqueue_6" source="p_taskqueue" target="t_next_task"> + </arc> + <arc id="tp_empty_taskqueue" source="t_empty_taskqueue" target="p_signal_idle"> + </arc> + <arc id="tp_next_task" source="t_next_task" target="p_current_task"> + </arc> + </page> + + + <page id="task_safety"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_current_task"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>aktuelle Tätigkeit</text> + </name> + </place> + <place id="p_signal_safety_critical"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "true" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Signal: Tätigkeit sicherheitskritisch</text> + </name> + </place> + <place id="p_signal_safety_uncritical"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "true" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Signal: Tätigkeit sicherheitsunkritisch</text> + </name> + </place> + <!--transitions--> + <transition id="t_safety_critical"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Einstufung: Tätigkeit sicherheitskritisch</text> + </name> + </transition> + <transition id="t_safety_uncritical"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Einstufung: Tätigkeit sicherheitsunkritisch</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_current_task_1" source="p_current_task" target="t_safety_critical"> + </arc> + <arc id="pt_current_task_2" source="p_current_task" target="t_safety_uncritical"> + </arc> + <arc id="tp_safety_critical" source="t_safety_critical" target="p_signal_safety_critical"> + </arc> + <arc id="tp_safety_uncritical" source="t_safety_uncritical" target="p_signal_safety_uncritical"> + </arc> + </page> + + + <page id="interruption_safety"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_current_task"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>aktuelle Tätigkeit</text> + </name> + </place> + <place id="p_signal_task_uninterruptable"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "true" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Signal: Tätigkeit ununterbrechbar</text> + </name> + </place> + <place id="p_signal_task_interruptable"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "true" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Signal: Tätigkeit unterbrechbar</text> + </name> + </place> + <!--transitions--> + <transition id="t_uninterruptable"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Einstufung: Tätigkeit ununterbrechbar</text> + </name> + </transition> + <transition id="t_interruptable"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Einstufung: Tätigkeit unterbrechbar</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_current_task_1" source="p_current_task" target="t_uninterruptable"> + </arc> + <arc id="pt_current_task_2" source="p_current_task" target="t_interruptable"> + </arc> + <arc id="tp_uninterruptable" source="t_uninterruptable" target="p_signal_task_uninterruptable"> + </arc> + <arc id="tp_interruptable" source="t_interruptable" target="p_signal_task_interruptable"> + </arc> + </page> + + + <page id="new_task"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_current_task"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>aktuelle Tätigkeit</text> + </name> + </place> + <place id="p_trajectory_request"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" , "trajectory_goal" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Trajektorienanfrage</text> + </name> + </place> + <!--transitions--> + <transition id="t_requesting_trajectory"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Trajektorie anfragen</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_current_task" source="p_current_task" target="t_requesting_trajectory"> + </arc> + <arc id="tp_requesting_trajectory" source="t_requesting_trajectory" target="p_trajectory_request"> + </arc> + </page> + + + + <page id="create_trajektory"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_trajectory_request"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" , "trajectory_goal" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Trajektorienanfrage</text> + </name> + </place> + <place id="p_hazardzones"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "kind" : "xxx", "location" : "x y z", "area" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Gefahrenbereiche</text> + </name> + </place> + <place id="p_freedom_of_collision"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "reflex" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Kollisionsfreiheit</text> + </name> + </place> + <place id="p_risk_of_collision"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "reflex" , "placeOfCollision" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Kollisionsgefahr</text> + </name> + </place> + <place id="p_trajectory_suggestion"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Trajektorienvorschlag</text> + </name> + </place> + <place id="p_trajectory"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Trajektorie</text> + </name> + </place> + <!--transitions--> + <transition id="t_create_trajectory"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Trajektorie erstellen</text> + </name> + </transition> + <transition id="t_collision_freedom"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Feststellung Kollisionsfreiheit</text> + </name> + </transition> + <transition id="t_collision_risk"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Feststellung Kollisionsgefahr</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_trajectory_request" source="p_trajectory_request" target="t_create_trajectory"> + </arc> + <arc id="pt_hazardzones" source="p_hazardzones" target="t_create_trajectory"> + </arc> + <arc id="tp_create_trajectory" source="t_create_trajectory" target="p_trajectory_suggestion"> + </arc> + <arc id="pt_trajectory_suggestion_1" source="p_trajectory_suggestion" target="t_collision_freedom"> + </arc> + <arc id="pt_trajectory_suggestion_2" source="p_trajectory_suggestion" target="t_collision_risk"> + </arc> + <arc id="pt_freedom_of_collision" source="p_freedom_of_collision" target="t_collision_freedom"> + </arc> + <arc id="pt_risk_of_collision" source="p_risk_of_collision" target="t_collision_risk"> + </arc> + <arc id="tp_collision_freedom" source="t_collision_freedom" target="p_trajectory"> + </arc> + <arc id="tp_collision_risk" source="t_collision_risk" target="p_trajectory_request"> + </arc> + </page> + + + <page id="handover_receiver"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_current_task"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>aktuelle Tätigkeit</text> + </name> + </place> + <place id="p_notice_handover_intension"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>HO Intension wahrgenommen</text> + </name> + </place> + <place id="p_demand_handover_intension"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>HO Intension fordern</text> + </name> + </place> + <place id="p_timeout"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "expected_delay" = "time" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Timeout</text> + </name> + </place> + <place id="p_reach"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>xxx</text> + </name> + </place> + <place id="p_pregrasp"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "poses" : "grasping_poses" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Pregrasp</text> + </name> + </place> + <place id="p_transfer"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "poses" : "grasping_poses" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Transfer</text> + </name> + </place> + <place id="p_retract"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Retract</text> + </name> + </place> + <place id="p_disrupption"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Störung</text> + </name> + </place> + <place id="p_adaption"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Anpassung</text> + </name> + </place> + <place id="p_cancel"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Abbruch</text> + </name> + </place> + <place id="p_reflex"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "trajectory" : "reflex" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Reflexe/0-Gravity</text> + </name> + </place> + <place id="p_signal_task_completed"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Signal: Tätigkeit beendet</text> + </name> + </place> + <place id="p_approval"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Freigabe</text> + </name> + </place> + <!--transitions--> + <transition id="t_ho_accept"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Einwilligung</text> + </name> + </transition> + <transition id="t_ho_accept_timeout"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Einwilligung</text> + </name> + </transition> + <transition id="t_ho_accept_adaption"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Einwilligung</text> + </name> + </transition> + <transition id="t_ho_delayed"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Aufschiebung</text> + </name> + </transition> + <transition id="t_ho_denied"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Ablehnung</text> + </name> + </transition> + <transition id="t_ho_denied_timeout"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Ablehnung</text> + </name> + </transition> + <transition id="t_pregrasp"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>pregrasp</text> + </name> + </transition> + <transition id="t_pregrasp_adaption"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>pregrasp</text> + </name> + </transition> + <transition id="t_transfer"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>transfer</text> + </name> + </transition> + <transition id="t_transfer_adaption"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>transfer</text> + </name> + </transition> + <transition id="t_retract"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>retract</text> + </name> + </transition> + <transition id="t_retract_adaption"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>retract</text> + </name> + </transition> + <transition id="t_terminate_ho"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>HO beenden</text> + </name> + </transition> + <transition id="t_disrupption"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Störung</text> + </name> + </transition> + <transition id="t_adaption_ho"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Anpassung</text> + </name> + </transition> + <transition id="t_cancel_ho"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Abbruch</text> + </name> + </transition> + <transition id="t_collision_ho"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Kollision</text> + </name> + </transition> + <transition id="t_terminate_cancel"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Abbruch beenden</text> + </name> + </transition> + <transition id="t_terminate_reflex"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Reflexe beenden</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_handover_demand_1" source="p_handover_demand" target="t_ho_accept"> + </arc> + <arc id="pt_handover_demand_2" source="p_handover_demand" target="t_ho_delayed"> + </arc> + <arc id="pt_handover_demand_3" source="p_handover_demand" target="t_ho_denied"> + </arc> + <arc id="tp_ho_delayed" source="t_ho_delayed" target="p_timeout"> + </arc> + <arc id="pt_timeout_1" source="p_timeout" target="t_ho_accept_timeout"> + </arc> + <arc id="pt_timeout_2" source="p_timeout" target="t_ho_denied_timeout"> + </arc> + <!-- all outgoing Anpassung --> + <arc id="pt_adaption_1" source="p_adaption" target="t_ho_accept_adaption"> + </arc> + <arc id="pt_adaption_2" source="p_adaption" target="t_pregrasp_adaption"> + </arc> + <arc id="pt_adaption_3" source="p_adaption" target="t_transfer_adaption"> + </arc> + <arc id="pt_adaption_4" source="p_adaption" target="t_retract_adaption"> + </arc> + <!-- all outgoing aktuelle Tätigkeit --> + <arc id="pt_current_task_1" source="p_current_task" target="t_ho_accept"> + </arc> + <arc id="pt_current_task_2" source="p_current_task" target="t_ho_accept_timeout"> + </arc> + <arc id="pt_current_task_3" source="p_current_task" target="t_ho_accept_adaption"> + </arc> + <arc id="pt_current_task_4" source="p_current_task" target="t_pregrasp"> + </arc> + <arc id="pt_current_task_5" source="p_current_task" target="t_pregrasp_adaption"> + </arc> + <arc id="pt_current_task_6" source="p_current_task" target="t_transfer"> + </arc> + <arc id="pt_current_task_7" source="p_current_task" target="t_transfer_adaption"> + </arc> + <arc id="pt_current_task_8" source="p_current_task" target="t_retract"> + </arc> + <arc id="pt_current_task_9" source="p_current_task" target="t_retract_adaption"> + </arc> + <!-- all ingoing and outgoing p_reach --> + <arc id="tp_ho_accept" source="t_ho_accept" target="p_reach"> + </arc> + <arc id="tp_ho_accept_timeout" source="t_ho_accept_timeout" target="p_reach"> + </arc> + <arc id="tp_ho_accept_adaption" source="t_ho_accept_adaption" target="p_reach"> + </arc> + <arc id="pt_reach_1" source="p_reach" target="t_pregrasp"> + </arc> + <arc id="pt_reach_2" source="p_reach" target="t_disrupption"> + </arc> + <!-- all ingoing and outgoing p_pregrasp --> + <arc id="tp_pregrasp" source="t_pregrasp" target="p_pregrasp"> + </arc> + <arc id="tp_pregrasp_adaption" source="t_pregrasp_adaption" target="p_pregrasp"> + </arc> + <arc id="pt_pregrasp_1" source="p_pregrasp" target="t_transfer"> + </arc> + <arc id="pt_pregrasp_2" source="p_pregrasp" target="t_disrupption"> + </arc> + <!-- all ingoing and outgoing p_transfer --> + <arc id="tp_transfer" source="t_transfer" target="p_transfer"> + </arc> + <arc id="tp_transfer_adaption" source="t_transfer_adaption" target="p_transfer"> + </arc> + <arc id="pt_transfer_1" source="p_transfer" target="t_retract"> + </arc> + <arc id="pt_transfer_2" source="p_transfer" target="t_disrupption"> + </arc> + <!-- all ingoing and outgoing p_retract --> + <arc id="tp_retract" source="t_retract" target="p_retract"> + </arc> + <arc id="tp_retract_adaption" source="t_retract_adaption" target="p_retract"> + </arc> + <arc id="pt_retract_1" source="p_retract" target="t_terminate_ho"> + </arc> + <arc id="p_retract_2" source="p_retract" target="t_disrupption"> + </arc> + <!-- safety arcs --> + <arc id="tp_disrupption" source="t_disrupption" target="p_disrupption"> + </arc> + <arc id="pt_disrupption_1" source="p_disrupption" target="t_adaption_ho"> + </arc> + <arc id="pt_disrupption_2" source="p_disrupption" target="t_cancel_ho"> + </arc> + <arc id="pt_disrupption_3" source="p_disrupption" target="t_collision_ho"> + </arc> + <arc id="tp_adaption_ho" source="t_adaption_ho" target="p_adaption"> + </arc> + <arc id="tp_cancel_ho" source="t_cancel_ho" target="p_cancel"> + </arc> + <arc id="tp_collision_ho" source="t_collision_ho" target="p_reflex"> + </arc> + <arc id="pt_cancel" source="p_cancel" target="t_terminate_cancel"> + </arc> + <arc id="pt_reflex" source="p_reflex" target="t_terminate_reflex"> + </arc> + <arc id="pt_approval" source="p_approval" target="t_terminate_reflex"> + </arc> + <!-- all ingoing signal termination ho --> + <arc id="tp_terminate_ho" source="t_terminate_ho" target="p_signal_task_completed"> + </arc> + <arc id="tp_terminate_cancel" source="t_terminate_cancel" target="p_signal_task_completed"> + </arc> + <arc id="tp_terminate_reflex" source="t_terminate_reflex" target="p_signal_task_completed"> + </arc> + </page> + + + <page id="handover_giver"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_current_task"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>aktuelle Tätigkeit</text> + </name> + </place> + <place id="p_handover_demand"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>HO Forderung</text> + </name> + </place> + <place id="p_handover_intention_communicated"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>HO Intension kommuniziert</text> + </name> + </place> + <place id="p_timeout"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "expected_delay" = "time" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Timeout</text> + </name> + </place> + <place id="p_reach"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>xxx</text> + </name> + </place> + <place id="p_pregrasp"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "poses" : "grasping_poses" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Pregrasp</text> + </name> + </place> + <place id="p_transfer"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "poses" : "grasping_poses" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Transfer</text> + </name> + </place> + <place id="p_retract"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Retract</text> + </name> + </place> + <place id="p_disrupption"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Störung</text> + </name> + </place> + <place id="p_adaption"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Anpassung</text> + </name> + </place> + <place id="p_cancel"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Abbruch</text> + </name> + </place> + <place id="p_reflex"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "trajectory" : "reflex" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Reflexe/0-Gravity</text> + </name> + </place> + <place id="p_signal_task_completed"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Signal: Tätigkeit beendet</text> + </name> + </place> + <place id="p_approval"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Freigabe</text> + </name> + </place> + <!--transitions--> + <transition id="t_ho_accept"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Einwilligung</text> + </name> + </transition> + <transition id="t_ho_accept_timeout"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Einwilligung</text> + </name> + </transition> + <transition id="t_ho_accept_adaption"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Einwilligung</text> + </name> + </transition> + <transition id="t_ho_delayed"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Aufschiebung</text> + </name> + </transition> + <transition id="t_ho_denied"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Ablehnung</text> + </name> + </transition> + <transition id="t_ho_denied_timeout"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Ablehnung</text> + </name> + </transition> + <transition id="t_pregrasp"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>pregrasp</text> + </name> + </transition> + <transition id="t_pregrasp_adaption"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>pregrasp</text> + </name> + </transition> + <transition id="t_transfer"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>transfer</text> + </name> + </transition> + <transition id="t_transfer_adaption"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>transfer</text> + </name> + </transition> + <transition id="t_retract"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>retract</text> + </name> + </transition> + <transition id="t_retract_adaption"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>retract</text> + </name> + </transition> + <transition id="t_terminate_ho"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>HO beenden</text> + </name> + </transition> + <transition id="t_disrupption"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Störung</text> + </name> + </transition> + <transition id="t_adaption_ho"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Anpassung</text> + </name> + </transition> + <transition id="t_cancel_ho"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Abbruch</text> + </name> + </transition> + <transition id="t_collision_ho"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Kollision</text> + </name> + </transition> + <transition id="t_terminate_cancel"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Abbruch beenden</text> + </name> + </transition> + <transition id="t_terminate_reflex"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Reflexe beenden</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_notice_handover_intension_1" source="p_notice_handover_intension" target="t_ho_accept"> + </arc> + <arc id="pt_notice_handover_intension_2" source="p_notice_handover_intension" target="t_ho_delayed"> + </arc> + <arc id="pt_notice_handover_intension_3" source="p_notice_handover_intension" target="t_ho_denied"> + </arc> + <arc id="tp_ho_delayed" source="t_ho_delayed" target="p_timeout"> + </arc> + <arc id="pt_timeout_1" source="p_timeout" target="t_ho_accept_timeout"> + </arc> + <arc id="pt_timeout_2" source="p_timeout" target="t_ho_denied_timeout"> + </arc> + <!-- all outgoing Anpassung --> + <arc id="pt_adaption_1" source="p_adaption" target="t_ho_accept_adaption"> + </arc> + <arc id="pt_adaption_2" source="p_adaption" target="t_pregrasp_adaption"> + </arc> + <arc id="pt_adaption_3" source="p_adaption" target="t_transfer_adaption"> + </arc> + <arc id="pt_adaption_4" source="p_adaption" target="t_retract_adaption"> + </arc> + <!-- all outgoing aktuelle Tätigkeit --> + <arc id="pt_current_task_1" source="p_current_task" target="t_ho_accept"> + </arc> + <arc id="pt_current_task_2" source="p_current_task" target="t_ho_accept_timeout"> + </arc> + <arc id="pt_current_task_3" source="p_current_task" target="t_ho_accept_adaption"> + </arc> + <arc id="pt_current_task_4" source="p_current_task" target="t_pregrasp"> + </arc> + <arc id="pt_current_task_5" source="p_current_task" target="t_pregrasp_adaption"> + </arc> + <arc id="pt_current_task_6" source="p_current_task" target="t_transfer"> + </arc> + <arc id="pt_current_task_7" source="p_current_task" target="t_transfer_adaption"> + </arc> + <arc id="pt_current_task_8" source="p_current_task" target="t_retract"> + </arc> + <arc id="pt_current_task_9" source="p_current_task" target="t_retract_adaption"> + </arc> + <!-- all ingoing and outgoing p_reach --> + <arc id="tp_ho_accept" source="t_ho_accept" target="p_reach"> + </arc> + <arc id="tp_ho_accept_timeout" source="t_ho_accept_timeout" target="p_reach"> + </arc> + <arc id="tp_ho_accept_adaption" source="t_ho_accept_adaption" target="p_reach"> + </arc> + <arc id="pt_reach_1" source="p_reach" target="t_pregrasp"> + </arc> + <arc id="pt_reach_2" source="p_reach" target="t_disrupption"> + </arc> + <!-- all ingoing and outgoing p_pregrasp --> + <arc id="tp_pregrasp" source="t_pregrasp" target="p_pregrasp"> + </arc> + <arc id="tp_pregrasp_adaption" source="t_pregrasp_adaption" target="p_pregrasp"> + </arc> + <arc id="pt_pregrasp_1" source="p_pregrasp" target="t_transfer"> + </arc> + <arc id="pt_pregrasp_2" source="p_pregrasp" target="t_disrupption"> + </arc> + <!-- all ingoing and outgoing p_transfer --> + <arc id="tp_transfer" source="t_transfer" target="p_transfer"> + </arc> + <arc id="tp_transfer_adaption" source="t_transfer_adaption" target="p_transfer"> + </arc> + <arc id="pt_transfer_1" source="p_transfer" target="t_retract"> + </arc> + <arc id="pt_transfer_2" source="p_transfer" target="t_disrupption"> + </arc> + <!-- all ingoing and outgoing p_retract --> + <arc id="tp_retract" source="t_retract" target="p_retract"> + </arc> + <arc id="tp_retract_adaption" source="t_retract_adaption" target="p_retract"> + </arc> + <arc id="pt_retract_1" source="p_retract" target="t_terminate_ho"> + </arc> + <arc id="p_retract_2" source="p_retract" target="t_disrupption"> + </arc> + <!-- safety arcs --> + <arc id="tp_disrupption" source="t_disrupption" target="p_disrupption"> + </arc> + <arc id="pt_disrupption_1" source="p_disrupption" target="t_adaption_ho"> + </arc> + <arc id="pt_disrupption_2" source="p_disrupption" target="t_cancel_ho"> + </arc> + <arc id="pt_disrupption_3" source="p_disrupption" target="t_collision_ho"> + </arc> + <arc id="tp_adaption_ho" source="t_adaption_ho" target="p_adaption"> + </arc> + <arc id="tp_cancel_ho" source="t_cancel_ho" target="p_cancel"> + </arc> + <arc id="tp_collision_ho" source="t_collision_ho" target="p_reflex"> + </arc> + <arc id="pt_cancel" source="p_cancel" target="t_terminate_cancel"> + </arc> + <arc id="pt_reflex" source="p_reflex" target="t_terminate_reflex"> + </arc> + <arc id="pt_approval" source="p_approval" target="t_terminate_reflex"> + </arc> + <!-- all ingoing signal terminatation ho --> + <arc id="tp_terminate_ho" source="t_terminate_ho" target="p_signal_task_completed"> + </arc> + <arc id="tp_terminate_cancel" source="t_terminate_cancel" target="p_signal_task_completed"> + </arc> + <arc id="tp_terminate_reflex" source="t_terminate_reflex" target="p_signal_task_completed"> + </arc> + </page> + + + + + + + + <page id="xxx"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="xxx"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "xxx", "data" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>xxx</text> + </name> + </place> + <!--transitions--> + <transition id="xxx"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>xxx</text> + </name> + </transition> + <!-- arcs --> + <arc id="xxx" source="xxx" target="xxx"> + </arc> + </page> + + + + + </page> + <name> + <text>ServiceNet</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.splitter" version="0.0.1"> + <ports> + <!-- topics: pub, sub --> + <!--port name="sensordata" limit="10" placeType="sub">awaiting_sensordata</port--> + <!-- services: sreq, sres, creq, cres --> + <!--port cResponsePlace="" limit="-1" name="" placeType="cres">xxx</port> + <port cRequestPlace="" limit="-1" name="" placeType="creq">xxx</port--> + </ports> + </toolspecific> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/action_categorization.pnml b/src/main/resources/static_pages/action_categorization.pnml new file mode 100644 index 0000000000000000000000000000000000000000..a30c0476c7fe909a4e164fed3f84864ec73cb429 --- /dev/null +++ b/src/main/resources/static_pages/action_categorization.pnml @@ -0,0 +1,127 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="robot" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific> + <page id="action_categorization"> + <name> + <text>Aufgabenstellung kathegorisieren</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_action_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "actionID", "data" : "actiondescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Tätigkeit</text> + </name> + </place> + <place id="p_simple_action_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "actionID", "data" : "actiondescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>einfache Tätigkeit</text> + </name> + </place> + <place id="p_demand_handover_intention_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "actionID", "data" : "actiondescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>HO Intension fordern</text> + </name> + </place> + <place id="p_communicate_handover_intention_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "actionID", "data" : "actiondescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>HO Intension kommunizieren</text> + </name> + </place> + <!-- transitions --> + <transition id="t_simple_action_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>einfache Tätigkeit</text> + </name> + </transition> + <transition id="t_handover_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Handover Geber</text> + </name> + </transition> + <transition id="t_handover_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Handover Nehmer</text> + </name> + </transition> + <!-- arcs --> + <arc id="tc1_alias" source="p_action_alias" target="t_simple_action_alias"> + </arc> + <arc id="tc2_alias" source="p_action_alias" target="t_handover_giver_alias"> + </arc> + <arc id="tc3_alias" source="p_action_alias" target="t_handover_receiver_alias"> + </arc> + <arc id="tc4_alias" source="t_simple_action_alias" target="p_simple_action_alias"> + </arc> + <arc id="tc5_alias" source="t_handover_giver_alias" target="p_communicate_handover_intention_giver_alias"> + </arc> + <arc id="tc6_alias" source="t_handover_receiver_alias" target="p_demand_handover_intention_receiver_alias"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/allow_trajectory.pnml b/src/main/resources/static_pages/allow_trajectory.pnml new file mode 100644 index 0000000000000000000000000000000000000000..8dcdeb589c2f17b24ac3a9ace17525451f3d1009 --- /dev/null +++ b/src/main/resources/static_pages/allow_trajectory.pnml @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="robot" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific> + <page id="allow_trajectory"> + <name> + <text>Trajektorienfreigabe</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_trajectory_alias_ref"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Trajektorie</text> + </name> + </place> + <place id="p_trajectory_execution_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Trajektorien Ausführung</text> + </name> + </place> + <place id="p_allow_trajectory_execution_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>no_cam or no_ft</text> + </name> + </place> + <!--transitions--> + <transition id="t_allow_trajectory_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Freigabe</text> + </name> + </transition> + <!-- arcs --> + <arc id="at1_alias" source="p_trajectory_alias_ref" target="t_allow_trajectory_alias"> + </arc> + <arc id="at2_alias" source="t_allow_trajectory_alias" target="p_trajectory_execution_alias"> + </arc> + <arc id="at3_alias" source="p_allow_trajectory_execution_alias" target="t_allow_trajectory_alias"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/analyse_scene.pnml b/src/main/resources/static_pages/analyse_scene.pnml new file mode 100644 index 0000000000000000000000000000000000000000..46f015d4355074e65c7536a1097fd041c2cd48f3 --- /dev/null +++ b/src/main/resources/static_pages/analyse_scene.pnml @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="coordinator" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific> + <page id="analyse_scene"> + <name> + <text>Szene auswerten</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_sensordata_captured"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <node>nodeA</node> + <subnet>locA</subnet> + <balloonMarking> + <tokens> + <token> { "id" : "xxx", "data" : "image" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>1</text> + </initialMarking> + <name> + <text>Bilddaten erfassen</text> + </name> + </place> + <place id="p_objects_captured"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <node>nodeA</node> + <subnet>locA</subnet> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "data" : "objects", "location" : "xyz" , "contour" : "faces" , "function" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>1</text> + </initialMarking> + <name> + <text>Objekte erfasst</text> + </name> + </place> + <!--transitions--> + <transition id="t_identify_objects"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Objekte identifizieren</text> + </name> + </transition> + <!-- arcs --> + <arc id="as1" source="p_sensordata_captured" target="t_identify_objects"> + </arc> + <arc id="as2" source="t_identify_objects" target="p_objects_captured"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/collision_control.pnml b/src/main/resources/static_pages/collision_control.pnml new file mode 100644 index 0000000000000000000000000000000000000000..64aa5772e11d8d9324951c9a7df052293fce61ee --- /dev/null +++ b/src/main/resources/static_pages/collision_control.pnml @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="coordinator" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <page id="collision_control"> + <name> + <text>Kollisionskontrolle</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_hazardzones"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "kind" : "xxx", "location" : "x y z", "area" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Gefahrenbereiche</text> + </name> + </place> + <place id="p_virtual_trajectory"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "status" : "xxx", "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>virtuelle Trajektorie</text> + </name> + </place> + <place id="p_trajectory_suggestion"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "reflex" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Trajektorienvorschlag</text> + </name> + </place> + <place id="p_freedom_of_collision"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "reflex" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Kollisionsfreiheit</text> + </name> + </place> + <place id="p_risk_of_collision"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "reflex" : "trajectory" , "placeOfCollision" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Kollisionsgefahr</text> + </name> + </place> + <!--transitions--> + <transition id="t_check_collision"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Kollsion überprüfen</text> + </name> + </transition> + <transition id="t_incomplete_data"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>unzureichende Datenlage</text> + </name> + </transition> + <transition id="t_collision_freedom"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Kollisionsfreiheit</text> + </name> + </transition> + <transition id="t_collision_risk"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Kollisionsgefahr</text> + </name> + </transition> + <!-- arcs --> + <arc id="cc1" source="p_hazardzones" target="t_check_collision"> + </arc> + <arc id="cc2" source="p_hazardzones" target="t_incomplete_data"> + </arc> + <arc id="cc3" source="p_trajectory_suggestion" target="t_check_collision"> + </arc> + <arc id="cc4" source="t_check_collision" target="p_virtual_trajectory"> + </arc> + <arc id="cc5" source="p_virtual_trajectory" target="t_collision_freedom"> + </arc> + <arc id="cc6" source="p_virtual_trajectory" target="t_collision_risk"> + </arc> + <arc id="cc7" source="t_collision_risk" target="p_risk_of_collision"> + </arc> + <arc id="cc8" source="t_incomplete_data" target="p_risk_of_collision"> + </arc> + <arc id="cc9" source="t_collision_freedom" target="p_freedom_of_collision"> + </arc> + + </page> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + + </toolspecific> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/create_reflexes.pnml b/src/main/resources/static_pages/create_reflexes.pnml new file mode 100644 index 0000000000000000000000000000000000000000..d6a41b2706ce098e19b6d4c7f15f43d4eb3b1810 --- /dev/null +++ b/src/main/resources/static_pages/create_reflexes.pnml @@ -0,0 +1,130 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="coordinator" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific> + <page id="create_reflexes"> + <name> + <text>Reflexe erstellen</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_reflexzones_ref"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "location" : "x y z", "area" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Reflexzonen</text> + </name> + </place> + <place id="p_trajectory_suggestion"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "reflex" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Trajektorienvorschlag</text> + </name> + </place> + <place id="p_reflex_suggestion_accepted"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "reflex" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Reflexvorschlag akzeptiert</text> + </name> + </place> + <place id="p_risk_of_collision"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "reflex" , "placeOfCollision" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Kollisionsgefahr</text> + </name> + </place> + <place id="p_freedom_of_collision"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "reflex" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Kollisionsfreiheit</text> + </name> + </place> + <!--transitions--> + <transition id="t_create_reflex_suggestion"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Reflexvorschlag erstellen</text> + </name> + </transition> + <transition id="t_accept_reflex_suggestion"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Reflexvorschlag annehmen</text> + </name> + </transition> + <!-- arcs --> + <arc id="cr1" source="p_reflexzones_ref" target="t_create_reflex_suggestion"> + </arc> + <arc id="cr2" source="t_create_reflex_suggestion" target="p_trajectory_suggestion"> + </arc> + <arc id="cr3" source="t_accept_reflex_suggestion" target="p_reflex_suggestion_accepted"> + </arc> + <arc id="cr4" source="p_risk_of_collision" target="t_create_reflex_suggestion"> + </arc> + <arc id="cr5" source="p_freedom_of_collision" target="t_accept_reflex_suggestion"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/create_trajectory.pnml b/src/main/resources/static_pages/create_trajectory.pnml new file mode 100644 index 0000000000000000000000000000000000000000..486f197cabe4b563effd8eebdfac6374810775f7 --- /dev/null +++ b/src/main/resources/static_pages/create_trajectory.pnml @@ -0,0 +1,161 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="robot" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific> + <page id="create_trajectory"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_trajectory_request_ref"> + <name> + <text>Trajektorie erstellen</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" , "trajectory_goal" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Trajektorienanfrage Referenz</text> + </name> + </place> + <place id="p_hazardzones"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "kind" : "xxx", "location" : "x y z", "area" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Gefahrenbereiche</text> + </name> + </place> + <place id="p_freedom_of_collision"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "reflex" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Kollisionsfreiheit</text> + </name> + </place> + <place id="p_risk_of_collision"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "reflex" , "placeOfCollision" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Kollisionsgefahr</text> + </name> + </place> + <place id="p_trajectory_suggestion"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Trajektorienvorschlag</text> + </name> + </place> + <place id="p_trajectory"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "robot_id" : "id" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Trajektorie</text> + </name> + </place> + <!--transitions--> + <transition id="t_create_trajectory"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Trajektorie erstellen</text> + </name> + </transition> + <transition id="t_collision_freedom"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Feststellung Kollisionsfreiheit</text> + </name> + </transition> + <transition id="t_collision_risk"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Feststellung Kollisionsgefahr</text> + </name> + </transition> + <!-- arcs --> + <arc id="pt_trajectory_request" source="p_trajectory_request_ref" target="t_create_trajectory"> + </arc> + <arc id="pt_hazardzones" source="p_hazardzones" target="t_create_trajectory"> + </arc> + <arc id="tp_create_trajectory" source="t_create_trajectory" target="p_trajectory_suggestion"> + </arc> + <arc id="pt_freedom_of_collision" source="p_freedom_of_collision" target="t_collision_freedom"> + </arc> + <arc id="pt_risk_of_collision" source="p_risk_of_collision" target="t_collision_risk"> + </arc> + <arc id="tp_collision_freedom" source="t_collision_freedom" target="p_trajectory"> + </arc> + <arc id="tp_collision_risk" source="t_collision_risk" target="p_trajectory_request_ref"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/determine_hazards.pnml b/src/main/resources/static_pages/determine_hazards.pnml new file mode 100644 index 0000000000000000000000000000000000000000..57f3cdf305c2d4aeee076785089dd990c11e1182 --- /dev/null +++ b/src/main/resources/static_pages/determine_hazards.pnml @@ -0,0 +1,114 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="coordinator" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific> + <page id="determine_hazards"> + <name> + <text>Gefahrenbereiche ermitteln</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_objects_captured_ref"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "data" : "objects", "location" : "xyz" , "contour" : "faces" , "function" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Objekte erfasst</text> + </name> + </place> + <place id="p_hazards_identified"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "kind" : "xxx", "location" : "xyz" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>pot. Gefahren ermittelt</text> + </name> + </place> + <place id="p_hazard_status"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Gefahrenbereiche ermitteln</text> + </name> + </place> + <place id="p_hazard_zones"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "kind" : "xxx", "location" : "x y z", "area" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Gefahrenbereiche</text> + </name> + </place> + <!--transitions--> + <transition id="t_analyse_hazards"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>pot. Gefahren analysieren</text> + </name> + </transition> + <transition id="t_determine_hazardzones"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Gefahrenbereiche ermitteln</text> + </name> + </transition> + <!-- arcs --> + <arc id="dh1" source="p_objects_captured_ref" target="t_analyse_hazards"> + </arc> + <arc id="dh2" source="t_analyse_hazards" target="p_hazards_identified"> + </arc> + <arc id="dh3" source="p_hazards_identified" target="t_determine_hazardzones"> + </arc> + <arc id="dh4" source="t_determine_hazardzones" target="p_hazard_status"> + </arc> + <arc id="dh5" source="t_determine_hazardzones" target="p_hazard_zones"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/extract_reflexzones.pnml b/src/main/resources/static_pages/extract_reflexzones.pnml new file mode 100644 index 0000000000000000000000000000000000000000..bac5c609d1802f3aa84a69171e8188af5022b5a3 --- /dev/null +++ b/src/main/resources/static_pages/extract_reflexzones.pnml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="coordinator" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific> + <page id="extract_reflexzones"> + <name> + <text>Reflexzonen erstellen</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_hazardzones"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "kind" : "xxx", "location" : "x y z", "area" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Gefahrenbereiche</text> + </name> + </place> + <place id="p_reflexzones"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "timestamp" : "date", "location" : "x y z", "area" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Reflexzonen</text> + </name> + </place> + <!--transitions--> + <transition id="t_determine_reflexzones"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Reflexzonen bestimmen</text> + </name> + </transition> + <!-- arcs --> + <arc id="er1" source="p_hazardzones" target="t_determine_reflexzones"> + </arc> + <arc id="er2" source="t_determine_reflexzones" target="p_reflexzones"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/get_task.pnml b/src/main/resources/static_pages/get_task.pnml new file mode 100644 index 0000000000000000000000000000000000000000..9d9271cdc043b539d17f2d4d538ccd683b6e1a77 --- /dev/null +++ b/src/main/resources/static_pages/get_task.pnml @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="robot" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific> + <page id="get_task"> + <name> + <text>Aufgabenstellung erfassen</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_task_from_sensordata_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "taskID", "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Aufgabenstellung durch Sensordaten</text> + </name> + </place> + <place id="p_task_from_other_channels_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "taskID", "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>1</text> + </initialMarking> + <name> + <text>Aufgabenstellung aus anderen Kanälen</text> + </name> + </place> + <place id="p_task_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "taskID", "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Aufgabe</text> + </name> + </place> + <!-- transitions --> + <transition id="t_extract_task_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Aufgabenextraktion</text> + </name> + </transition> + <transition id="t_register_task_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Aufgabenerfassung</text> + </name> + </transition> + <!-- arcs --> + <arc id="gt1_alias" source="p_task_from_sensordata_alias" target="t_extract_task_alias"> + </arc> + <arc id="gt2_alias" source="p_task_from_other_channels_alias" target="t_register_task_alias"> + </arc> + <arc id="gt3_alias" source="t_extract_task_alias" target="p_task_alias"> + </arc> + <arc id="gt4_alias" source="t_register_task_alias" target="p_task_alias"> + </arc> + <arc id="gt5_alias" source="t_register_task_alias" target="p_task_from_other_channels_alias"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/handover_giver.pnml b/src/main/resources/static_pages/handover_giver.pnml new file mode 100644 index 0000000000000000000000000000000000000000..82f8a000144aa954830c9060af28cf27507892bc --- /dev/null +++ b/src/main/resources/static_pages/handover_giver.pnml @@ -0,0 +1,566 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="robot" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific> + <page id="handover_giver"> + <name> + <text>Handover Geber</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_notice_handover_intention_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>HO Intension wahrgenommen</text> + </name> + </place> + <place id="p_interrupt_request_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "expected_delay" = "time" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Timeout</text> + </name> + </place> + <place id="p_communicate_handover_intention_giver_alias_ref"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>HO Intension kommunizieren</text> + </name> + </place> + <place id="p_init_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Initialisierung</text> + </name> + </place> + <place id="p_reach_request_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Reach Request</text> + </name> + </place> + <place id="p_reach_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Reach</text> + </name> + </place> + <place id="p_grasp_request_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "poses" : "grasping_poses" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Grasp Request</text> + </name> + </place> + <place id="p_grasp_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "poses" : "grasping_poses" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Grasp</text> + </name> + </place> + <place id="p_transfer_request_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "poses" : "grasping_poses" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Transfer Request</text> + </name> + </place> + <place id="p_transfer_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "poses" : "grasping_poses" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Transfer</text> + </name> + </place> + <place id="p_retract_request_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Retract Request</text> + </name> + </place> + <place id="p_retract_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Retract</text> + </name> + </place> + <place id="p_disrupption_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Störung</text> + </name> + </place> + <place id="p_adaption_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Anpassung</text> + </name> + </place> + <place id="p_cancel_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Abbruch</text> + </name> + </place> + <place id="p_communicate_cancel_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Abbruch kommunizieren</text> + </name> + </place> + <place id="p_reflex_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "trajectory" : "reflex" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Reflexe/0-Gravity</text> + </name> + </place> + <place id="p_handover_completed_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Handover beendet</text> + </name> + </place> + <!--transitions--> + <transition id="t_interruption_request_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Interruption Request</text> + </name> + </transition> + <transition id="t_to_reach_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>zu reach</text> + </name> + </transition> + <transition id="t_to_grasp_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>zu grasp</text> + </name> + </transition> + <transition id="t_to_transfer_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>zu transfer</text> + </name> + </transition> + <transition id="t_to_retract_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>zu retract</text> + </name> + </transition> + <transition id="t_disrupption_to_reach_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Störung zu reach</text> + </name> + </transition> + <transition id="t_disrupption_to_grasp_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Störung zu grasp</text> + </name> + </transition> + <transition id="t_disrupption_to_transfer_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Störung zu transfer</text> + </name> + </transition> + <transition id="t_disrupption_to_retract_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Störung zu retract</text> + </name> + </transition> + <transition id="t_terminate_ho_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>HO beenden</text> + </name> + </transition> + <transition id="t_terminate_cancel_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Abbruch beenden</text> + </name> + </transition> + <transition id="t_terminate_reflex_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Reflexe beenden</text> + </name> + </transition> + <transition id="t_disrupption_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Störung</text> + </name> + </transition> + <transition id="t_adaption_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Anpassung</text> + </name> + </transition> + <transition id="t_cancel_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Abbruch</text> + </name> + </transition> + <transition id="t_collision_giver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Kollision</text> + </name> + </transition> + <!-- arcs --> + <arc id="hg1_alias" source="p_notice_handover_intention_giver_alias" target="t_interruption_request_giver_alias"> + </arc> + <arc id="hg2_alias" source="t_interruption_request_giver_alias" target="p_interrupt_request_giver_alias"> + </arc> + + <arc id="hg3_alias" source="p_init_giver_alias" target="t_to_reach_giver_alias"> + </arc> + <arc id="hg4_alias" source="t_to_reach_giver_alias" target="p_reach_request_giver_alias"> + </arc> + + <arc id="hg5_alias" source="p_reach_giver_alias" target="t_to_grasp_giver_alias"> + </arc> + <arc id="hg6_alias" source="t_to_grasp_giver_alias" target="p_grasp_request_giver_alias"> + </arc> + + <arc id="hg7_alias" source="p_grasp_giver_alias" target="t_to_transfer_giver_alias"> + </arc> + <arc id="hg8_alias" source="t_to_transfer_giver_alias" target="p_transfer_request_giver_alias"> + </arc> + + <arc id="hg9_alias" source="p_transfer_giver_alias" target="t_to_retract_giver_alias"> + </arc> + <arc id="hg10_alias" source="t_to_retract_giver_alias" target="p_retract_request_giver_alias"> + </arc> + + <arc id="hg11_alias" source="p_retract_giver_alias" target="t_terminate_ho_giver_alias"> + </arc> + <arc id="hg12_alias" source="t_terminate_ho_giver_alias" target="p_handover_completed_giver_alias"> + </arc> + <!-- upper row completed --> + + <arc id="hg13_alias" source="p_reach_giver_alias" target="t_disrupption_giver_alias"> + </arc> + <arc id="hg14_alias" source="p_grasp_giver_alias" target="t_disrupption_giver_alias"> + </arc> + <arc id="hg15_alias" source="p_transfer_giver_alias" target="t_disrupption_giver_alias"> + </arc> + <arc id="hg16_alias" source="p_retract_giver_alias" target="t_disrupption_giver_alias"> + </arc> + + <arc id="hg17_alias" source="t_disrupption_giver_alias" target="p_disrupption_giver_alias"> + </arc> + <arc id="hg18_alias" source="p_disrupption_giver_alias" target="t_adaption_giver_alias"> + </arc> + <arc id="hg19_alias" source="p_disrupption_giver_alias" target="t_cancel_giver_alias"> + </arc> + <arc id="hg20_alias" source="p_disrupption_giver_alias" target="t_collision_giver_alias"> + </arc> + + <arc id="hg21_alias" source="t_adaption_giver_alias" target="p_adaption_giver_alias"> + </arc> + <arc id="hg22_alias" source="t_cancel_giver_alias" target="p_cancel_giver_alias"> + </arc> + <arc id="hg23_alias" source="t_cancel_giver_alias" target="p_communicate_cancel_giver_alias"> + </arc> + <arc id="hg24_alias" source="t_collision_giver_alias" target="p_reflex_giver_alias"> + </arc> + + <arc id="hg25_alias" source="p_adaption_giver_alias" target="t_disrupption_to_reach_giver_alias"> + </arc> + <arc id="hg26_alias" source="p_adaption_giver_alias" target="t_disrupption_to_grasp_giver_alias"> + </arc> + <arc id="hg27_alias" source="p_adaption_giver_alias" target="t_disrupption_to_transfer_giver_alias"> + </arc> + <arc id="hg28_alias" source="p_adaption_giver_alias" target="t_disrupption_to_retract_giver_alias"> + </arc> + + <arc id="hg29_alias" source="t_disrupption_to_reach_giver_alias" target="p_reach_request_giver_alias"> + </arc> + <arc id="hg30_alias" source="t_disrupption_to_grasp_giver_alias" target="p_grasp_request_giver_alias"> + </arc> + <arc id="hg31_alias" source="t_disrupption_to_transfer_giver_alias" target="p_transfer_request_giver_alias"> + </arc> + <arc id="hg32_alias" source="t_disrupption_to_retract_giver_alias" target="p_retract_request_giver_alias"> + </arc> + + <arc id="hg33_alias" source="p_cancel_giver_alias" target="t_terminate_cancel_giver_alias"> + </arc> + <arc id="hg34_alias" source="p_reflex_giver_alias" target="t_terminate_reflex_giver_alias"> + </arc> + <arc id="hg35_alias" source="t_terminate_cancel_giver_alias" target="p_handover_completed_giver_alias"> + </arc> + <arc id="hg36_alias" source="t_terminate_reflex_giver_alias" target="p_handover_completed_giver_alias"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/handover_receiver.pnml b/src/main/resources/static_pages/handover_receiver.pnml new file mode 100644 index 0000000000000000000000000000000000000000..9a52a43ce91b05fefc082fac64747871652101f7 --- /dev/null +++ b/src/main/resources/static_pages/handover_receiver.pnml @@ -0,0 +1,566 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="robot" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific> + <page id="handover_receiver"> + <name> + <text>Handover Nehmer</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_notice_handover_intention_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>HO Intension wahrgenommen</text> + </name> + </place> + <place id="p_interrupt_request_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "expected_delay" = "time" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Timeout</text> + </name> + </place> + <place id="p_demand_handover_intention_receiver_alias_ref"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>HO Intension fordern</text> + </name> + </place> + <place id="p_init_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Initialisierung</text> + </name> + </place> + <place id="p_reach_request_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Reach Request</text> + </name> + </place> + <place id="p_reach_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Reach</text> + </name> + </place> + <place id="p_grasp_request_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "poses" : "grasping_poses" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Grasp Request</text> + </name> + </place> + <place id="p_grasp_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <node>n3</node> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "poses" : "grasping_poses" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Grasp</text> + </name> + </place> + <place id="p_transfer_request_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "poses" : "grasping_poses" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Transfer Request</text> + </name> + </place> + <place id="p_transfer_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "poses" : "grasping_poses" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Transfer</text> + </name> + </place> + <place id="p_retract_request_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Retract Request</text> + </name> + </place> + <place id="p_retract_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Retract</text> + </name> + </place> + <place id="p_disrupption_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Störung</text> + </name> + </place> + <place id="p_adaption_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "assumed_other_state" : "status" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Anpassung</text> + </name> + </place> + <place id="p_cancel_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Abbruch</text> + </name> + </place> + <place id="p_communicate_cancel_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "trajectory" : "path" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Abbruch kommunizieren</text> + </name> + </place> + <place id="p_reflex_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" , "trajectory" : "reflex" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Reflexe/0-Gravity</text> + </name> + </place> + <place id="p_handover_completed_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Handover beendet</text> + </name> + </place> + <!--transitions--> + <transition id="t_interruption_request_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Interruption Request</text> + </name> + </transition> + <transition id="t_to_reach_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>zu reach</text> + </name> + </transition> + <transition id="t_to_grasp_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>zu grasp</text> + </name> + </transition> + <transition id="t_to_transfer_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>zu transfer</text> + </name> + </transition> + <transition id="t_to_retract_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>zu retract</text> + </name> + </transition> + <transition id="t_disrupption_to_reach_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Störung zu reach</text> + </name> + </transition> + <transition id="t_disrupption_to_grasp_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Störung zu grasp</text> + </name> + </transition> + <transition id="t_disrupption_to_transfer_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Störung zu transfer</text> + </name> + </transition> + <transition id="t_disrupption_to_retract_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Störung zu retract</text> + </name> + </transition> + <transition id="t_terminate_ho_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>HO beenden</text> + </name> + </transition> + <transition id="t_terminate_cancel_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Abbruch beenden</text> + </name> + </transition> + <transition id="t_terminate_reflex_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Reflexe beenden</text> + </name> + </transition> + <transition id="t_disrupption_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Störung</text> + </name> + </transition> + <transition id="t_adaption_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Anpassung</text> + </name> + </transition> + <transition id="t_cancel_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Abbruch</text> + </name> + </transition> + <transition id="t_collision_receiver_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Kollision</text> + </name> + </transition> + <!-- arcs --> + <arc id="hr1_alias" source="p_notice_handover_intention_receiver_alias" target="t_interruption_request_receiver_alias"> + </arc> + <arc id="hr2_alias" source="t_interruption_request_receiver_alias" target="p_interrupt_request_receiver_alias"> + </arc> + + <arc id="hr3_alias" source="p_init_receiver_alias" target="t_to_reach_receiver_alias"> + </arc> + <arc id="hr4_alias" source="t_to_reach_receiver_alias" target="p_reach_request_receiver_alias"> + </arc> + + <arc id="hr5_alias" source="p_reach_receiver_alias" target="t_to_grasp_receiver_alias"> + </arc> + <arc id="hr6_alias" source="t_to_grasp_receiver_alias" target="p_grasp_request_receiver_alias"> + </arc> + + <arc id="hr7_alias" source="p_grasp_receiver_alias" target="t_to_transfer_receiver_alias"> + </arc> + <arc id="hr8_alias" source="t_to_transfer_receiver_alias" target="p_transfer_request_receiver_alias"> + </arc> + + <arc id="hr9_alias" source="p_transfer_receiver_alias" target="t_to_retract_receiver_alias"> + </arc> + <arc id="hr10_alias" source="t_to_retract_receiver_alias" target="p_retract_request_receiver_alias"> + </arc> + + <arc id="hr11_alias" source="p_retract_receiver_alias" target="t_terminate_ho_receiver_alias"> + </arc> + <arc id="hr12_alias" source="t_terminate_ho_receiver_alias" target="p_handover_completed_receiver_alias"> + </arc> + <!-- upper row completed --> + + <arc id="hr13_alias" source="p_reach_receiver_alias" target="t_disrupption_receiver_alias"> + </arc> + <arc id="hr14_alias" source="p_grasp_receiver_alias" target="t_disrupption_receiver_alias"> + </arc> + <arc id="hr15_alias" source="p_transfer_receiver_alias" target="t_disrupption_receiver_alias"> + </arc> + <arc id="hr16_alias" source="p_retract_receiver_alias" target="t_disrupption_receiver_alias"> + </arc> + + <arc id="hr17_alias" source="t_disrupption_receiver_alias" target="p_disrupption_receiver_alias"> + </arc> + <arc id="hr18_alias" source="p_disrupption_receiver_alias" target="t_adaption_receiver_alias"> + </arc> + <arc id="hr19_alias" source="p_disrupption_receiver_alias" target="t_cancel_receiver_alias"> + </arc> + <arc id="hr20_alias" source="p_disrupption_receiver_alias" target="t_collision_receiver_alias"> + </arc> + + <arc id="hr21_alias" source="t_adaption_receiver_alias" target="p_adaption_receiver_alias"> + </arc> + <arc id="hr22_alias" source="t_cancel_receiver_alias" target="p_cancel_receiver_alias"> + </arc> + <arc id="hr23_alias" source="t_cancel_receiver_alias" target="p_communicate_cancel_receiver_alias"> + </arc> + <arc id="hr24_alias" source="t_collision_receiver_alias" target="p_reflex_receiver_alias"> + </arc> + + <arc id="hr25_alias" source="p_adaption_receiver_alias" target="t_disrupption_to_reach_receiver_alias"> + </arc> + <arc id="hr26_alias" source="p_adaption_receiver_alias" target="t_disrupption_to_grasp_receiver_alias"> + </arc> + <arc id="hr27_alias" source="p_adaption_receiver_alias" target="t_disrupption_to_transfer_receiver_alias"> + </arc> + <arc id="hr28_alias" source="p_adaption_receiver_alias" target="t_disrupption_to_retract_receiver_alias"> + </arc> + + <arc id="hr29_alias" source="t_disrupption_to_reach_receiver_alias" target="p_reach_request_receiver_alias"> + </arc> + <arc id="hr30_alias" source="t_disrupption_to_grasp_receiver_alias" target="p_grasp_request_receiver_alias"> + </arc> + <arc id="hr31_alias" source="t_disrupption_to_transfer_receiver_alias" target="p_transfer_request_receiver_alias"> + </arc> + <arc id="hr32_alias" source="t_disrupption_to_retract_receiver_alias" target="p_retract_request_receiver_alias"> + </arc> + + <arc id="hr33_alias" source="p_cancel_receiver_alias" target="t_terminate_cancel_receiver_alias"> + </arc> + <arc id="hr34_alias" source="p_reflex_receiver_alias" target="t_terminate_reflex_receiver_alias"> + </arc> + <arc id="hr35_alias" source="t_terminate_cancel_receiver_alias" target="p_handover_completed_receiver_alias"> + </arc> + <arc id="hr36_alias" source="t_terminate_reflex_receiver_alias" target="p_handover_completed_receiver_alias"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/interruption_request.pnml b/src/main/resources/static_pages/interruption_request.pnml new file mode 100644 index 0000000000000000000000000000000000000000..39cd5b893b01f78cf4784ce69bb6b6dffa93e267 --- /dev/null +++ b/src/main/resources/static_pages/interruption_request.pnml @@ -0,0 +1,235 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="robot" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific> + <page id="interruption_request"> + <name> + <text>Aufgabenunterbrechung</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_new_task_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "new_task", "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>neue Aufgabe</text> + </name> + </place> + <!-- is not a place, it's a global signal given from config.json file --> + <!--place id="p_prio_maintask"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Hauptaufgabe hochpriorisiert</text> + </name> + </place--> + <place id="p_safety_critical_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Signal: Tätigkeit sicherheitskritisch</text> + </name> + </place> + <place id="p_action_uninterruptable_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Signal: Tätigkeit ununterbrechbar</text> + </name> + </place> + <place id="p_check_current_action_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Prüfung der aktuellen Tätigkeit</text> + </name> + </place> + <place id="p_secondary_task_possible_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Nebenaufgabe möglich</text> + </name> + </place> + <place id="p_secondary_task_delayed_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" , "expected_delay" = "time" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Nebenaufgabe aufgeschoben</text> + </name> + </place> + <place id="p_secondary_task_denied_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Nebenaufgabe abgelehnt</text> + </name> + </place> + <!--transitions--> + <transition id="t_idle_alias_ref"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>idle</text> + </name> + </transition> + <transition id="t_maintask_no_prio_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>nicht hochpriorisiert</text> + </name> + </transition> + <transition id="t_maintask_prio_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>hochpriorisiert</text> + </name> + </transition> + <transition id="t_action_interruptable_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>unterbrechbar</text> + </name> + </transition> + <transition id="t_action_uninterruptable_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>ununterbrechbar</text> + </name> + </transition> + <!-- arcs --> + <arc id="ir1_alias" source="p_new_task_alias" target="t_idle_alias_ref"> + </arc> + <arc id="ir2_alias" source="p_new_task_alias" target="t_maintask_no_prio_alias"> + </arc> + <arc id="ir3_alias" source="p_new_task_alias" target="t_maintask_prio_alias"> + </arc> + <arc id="ir4_alias" source="t_idle_alias_ref" target="p_secondary_task_possible_alias"> + </arc> + <arc id="ir5_alias" source="t_maintask_prio_alias" target="p_secondary_task_denied_alias"> + </arc> + <arc id="ir6_alias" source="t_maintask_no_prio_alias" target="p_check_current_action_alias"> + </arc> + <arc id="ir7_alias" source="p_check_current_action_alias" target="t_action_interruptable_alias"> + </arc> + <arc id="ir8_alias" source="p_check_current_action_alias" target="t_action_uninterruptable_alias"> + </arc> + <arc id="ir9_alias" source="t_action_interruptable_alias" target="p_secondary_task_possible_alias"> + </arc> + <arc id="ir10_alias" source="t_action_uninterruptable_alias" target="p_secondary_task_delayed_alias"> + </arc> + <arc id="ir11_alias" source="p_safety_critical_alias" target="t_action_interruptable_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>inhibitor</type> + </toolspecific> + </arc> + <arc id="ir12_alias" source="p_safety_critical_alias" target="t_action_uninterruptable_alias"> + </arc> + <arc id="ir13_alias" source="p_action_uninterruptable_alias" target="t_action_interruptable_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>inhibitor</type> + </toolspecific> + </arc> + <arc id="ir14_alias" source="p_action_uninterruptable_alias" target="t_action_uninterruptable_alias"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/interruption_safety.pnml b/src/main/resources/static_pages/interruption_safety.pnml new file mode 100644 index 0000000000000000000000000000000000000000..0f277c931a373c5925a18db39ce7b5cbaa617478 --- /dev/null +++ b/src/main/resources/static_pages/interruption_safety.pnml @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="robot" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific><page id="interruption_safety"> + <name> + <text>Unterbrechbarkeitsbewertung der aktuellen Aufgabe</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_safety_evaluation_alias_ref"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Sicherheitsbewertung</text> + </name> + </place> + <place id="p_task_uninterruptable_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "true" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Signal: Tätigkeit ununterbrechbar</text> + </name> + </place> + <place id="p_task_interruptable_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "true" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Signal: Tätigkeit unterbrechbar</text> + </name> + </place> + <!--transitions--> + <transition id="t_uninterruptable_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Einstufung: Tätigkeit ununterbrechbar</text> + </name> + </transition> + <transition id="t_interruptable_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Einstufung: Tätigkeit unterbrechbar</text> + </name> + </transition> + <!-- arcs --> + <arc id="is1_alias" source="p_safety_evaluation_alias_ref" target="t_uninterruptable_alias"> + </arc> + <arc id="is2_alias" source="p_safety_evaluation_alias_ref" target="t_interruptable_alias"> + </arc> + <arc id="is3_alias" source="t_uninterruptable_alias" target="p_task_uninterruptable_alias"> + </arc> + <arc id="is4_alias" source="t_interruptable_alias" target="p_task_interruptable_alias"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/new_action.pnml b/src/main/resources/static_pages/new_action.pnml new file mode 100644 index 0000000000000000000000000000000000000000..f674f648b1a06b8025cdee5cb49dc91274b2bd69 --- /dev/null +++ b/src/main/resources/static_pages/new_action.pnml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="robot" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific><page id="new_task"> + <name> + <text>neue Tätigkeit</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_goal_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Zielvorgabe</text> + </name> + </place> + <place id="p_trajectory_request_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" , "trajectory_goal" : "x y z" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Trajektorienanfrage</text> + </name> + </place> + <!--transitions--> + <transition id="t_request_trajectory_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Trajektorie anfragen</text> + </name> + </transition> + <!-- arcs --> + <arc id="na1" source="p_goal_alias" target="t_request_trajectory_alias"> + </arc> + <arc id="na2" source="t_request_trajectory_alias" target="p_trajectory_request_alias"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/simple_action.pnml b/src/main/resources/static_pages/simple_action.pnml new file mode 100644 index 0000000000000000000000000000000000000000..cfed6b8234d1a7fdec7912dc5d0145750d3de5b0 --- /dev/null +++ b/src/main/resources/static_pages/simple_action.pnml @@ -0,0 +1,80 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="robot" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific> + <page id="simple_action"> + <name> + <text>simple Tätigkeit</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_simple_action_alias_ref"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "taskID", "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>einfache Tätigkeit Request</text> + </name> + </place> + <place id="p_simple_action_done_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "taskID", "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Tätigkeit ausgeführt</text> + </name> + </place> + <place id="p_simple_action_completed_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "id" : "taskID"} </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Tätigkeit beendet</text> + </name> + </place> + <transition id="t_simple_action_completed_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text></text> + </name> + </transition> + <!-- arcs --> + <arc id="st1_alias" source="p_simple_action_done_alias" target="t_simple_action_completed_alias"> + </arc> + <arc id="st2_alias" source="t_simple_action_completed_alias" target="p_simple_action_completed_alias"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/task_safety.pnml b/src/main/resources/static_pages/task_safety.pnml new file mode 100644 index 0000000000000000000000000000000000000000..3484902ea8a2ce3ac7db6152ff90787764066c6b --- /dev/null +++ b/src/main/resources/static_pages/task_safety.pnml @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="robot" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific> + <page id="task_safety"> + <name> + <text>Sicherheitsbewertung der aktuellen Aufgabe</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_safety_evaluation_alias_ref"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>aktuelle Tätigkeit</text> + </name> + </place> + <place id="p_safety_critical_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "true" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Tätigkeit sicherheitskritisch</text> + </name> + </place> + <place id="p_safety_uncritical_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "true" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Tätigkeit sicherheitsunkritisch</text> + </name> + </place> + <!--transitions--> + <transition id="t_safety_critical_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Einstufung: Tätigkeit sicherheitskritisch</text> + </name> + </transition> + <transition id="t_safety_uncritical_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Einstufung: Tätigkeit sicherheitsunkritisch</text> + </name> + </transition> + <!-- arcs --> + <arc id="ts1" source="p_safety_evaluation_alias_ref" target="t_safety_critical_alias"> + </arc> + <arc id="ts2" source="p_safety_evaluation_alias_ref" target="t_safety_uncritical_alias"> + </arc> + <arc id="ts3" source="t_safety_critical_alias" target="p_safety_critical_alias"> + </arc> + <arc id="ts4" source="t_safety_uncritical_alias" target="p_safety_uncritical_alias"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/static_pages/update_taskqueue.pnml b/src/main/resources/static_pages/update_taskqueue.pnml new file mode 100644 index 0000000000000000000000000000000000000000..5ac47765a32d43ed9fa38e868ac2d2863a8f8f2d --- /dev/null +++ b/src/main/resources/static_pages/update_taskqueue.pnml @@ -0,0 +1,238 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="robot" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific> + <page id="update_taskqueue"> + <name> + <text>Aufgabenkette aktualisieren</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>nodePage</type> + </toolspecific> + <!-- places --> + <place id="p_secondary_task_possible_alias_ref"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Nebentätigkeit möglich</text> + </name> + </place> + <place id="p_task_completed_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Tätigkeit beendet</text> + </name> + </place> + <place id="p_secondary_task_delayed_alias_ref"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" , "expected_delay" = "time" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Nebentätigkeit aufgeschoben</text> + </name> + </place> + <place id="p_secondary_task_denied_alias_ref"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "status" : "xxx" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Nebentätigkeit abgelehnt</text> + </name> + </place> + <place id="p_taskqueue_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "taskqueue" : "tasks" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Aufgabenkette</text> + </name> + </place> + <place id="p_current_task_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>aktuelle Tätigkeit</text> + </name> + </place> + <place id="p_safety_evaluation_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <balloonMarking> + <tokens> + <token> { "robot_id" : "id" , "data" : "taskdescription" } </token> + </tokens> + </balloonMarking> + </toolspecific> + <initialMarking> + <text>0</text> + </initialMarking> + <name> + <text>Sicherheitsbewertung</text> + </name> + </place> + <!--transitions--> + <transition id="t_secondary_task_first_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Nebentätigkeit vor Aufgabenkette</text> + </name> + </transition> + <transition id="t_delete_first_entry_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>erstes Element löschen</text> + </name> + </transition> + <transition id="t_insert_secondary_task_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Einarbeitung der Nebentätigkeit</text> + </name> + </transition> + <transition id="t_keep_taskqueue_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>Beibehaltung der Aufgabenkette</text> + </name> + </transition> + <transition id="t_idle_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>leere Aufgabenkette</text> + </name> + </transition> + <transition id="t_next_action_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <!--node>n3</node--> + <!--subnet>s3</subnet--> + <type>discreteTransitionType</type> + <inputsignalclause></inputsignalclause> + </toolspecific> + <name> + <text>nächste Tätigkeit</text> + </name> + </transition> + <!-- arcs --> + <arc id="ut1_alias" source="p_secondary_task_possible_alias_ref" target="t_secondary_task_first_alias"> + </arc> + <arc id="ut2_alias" source="p_task_completed_alias" target="t_delete_first_entry_alias"> + </arc> + <arc id="ut3_alias" source="p_secondary_task_delayed_alias_ref" target="t_insert_secondary_task_alias"> + </arc> + <arc id="ut4_alias" source="p_secondary_task_denied_alias_ref" target="t_keep_taskqueue_alias"> + </arc> + <arc id="ut5_alias" source="p_taskqueue_alias" target="t_secondary_task_first_alias"> + <!--toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>inhibitor</type> + </toolspecific--> + </arc> + <arc id="ut6_alias" source="p_taskqueue_alias" target="t_delete_first_entry_alias"> + <!--toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>inhibitor</type> + </toolspecific--> + </arc> + <arc id="ut7_alias" source="p_taskqueue_alias" target="t_insert_secondary_task_alias"> + <!--toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>inhibitor</type> + </toolspecific--> + </arc> + <arc id="ut8_alias" source="p_taskqueue_alias" target="t_keep_taskqueue_alias"> + <!--toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>inhibitor</type> + </toolspecific--> + </arc> + <arc id="ut9_alias" source="p_taskqueue_alias" target="t_idle_alias"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>inhibitor</type> + </toolspecific> + </arc> + <arc id="ut10_alias" source="p_taskqueue_alias" target="t_next_action_alias"> + <!--toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>inhibitor</type> + </toolspecific--> + </arc> + <arc id="ut11_alias" source="t_next_action_alias" target="p_current_task_alias"> + </arc> + <arc id="ut12_alias" source="t_next_action_alias" target="p_safety_evaluation_alias"> + </arc> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/system.pnml b/src/main/resources/system.pnml new file mode 100644 index 0000000000000000000000000000000000000000..099b6d3db3bad9d16c6efe8d9c73e33c7072ef17 --- /dev/null +++ b/src/main/resources/system.pnml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="robot" type="http://www.pnml.org/version-2009/grammar/ptnet"> + <page id="collaboration_system"> + <!--all modules will be inserted here--> + + </page> + + <transition id="SensordataTopicTransition"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <type>topicTransitionType</type> + <topicName>SensordataTopic</topicName> + <publishers> + <publisher> + <id>p_read_sensordata</id> + <limit>10</limit> + </publisher> + </publishers> + <subscribers> + <subscriber> + <id>p_task_from_sensordata_alias</id> + <limit>20</limit> + </subscriber> + </subscribers> + </toolspecific> + <name> + <text>SensordataTopicTransition</text> + </name> + </transition> + + <name> + <text>Collaboration System</text> + </name> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + </toolspecific> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/resources/topo.json b/src/main/resources/topo.json new file mode 100644 index 0000000000000000000000000000000000000000..91fe82dcf684ba0e86cdf59579262d63ecdbd522 --- /dev/null +++ b/src/main/resources/topo.json @@ -0,0 +1,66 @@ +{ + "modules" : [ + { + "coordinator": [ + { "block": "environment" } + ] + } + ], + "blocks" : [ + { + "environment": [ + {"page": "analyse_scene"}, + {"page": "determine_hazards"} + ] + }, + { + "reflexes": [ + {"page": "extract_reflexzones"}, + {"page": "create_reflexes"} + ] + }, + { + "collisioncontrol": [ + {"page": "collision_control"} + ] + }, + + + { + "selector": [ + {"page": "get_task"} + ] + }, + { + "actor": [ + {"page": "simple_task"}, + {"page": "handover_receiver"}, + {"page": "handover_giver"}, + {"page": "task_categorization"} + ] + }, + { + "executor": [ + {"page": "new_action"}, + {"page": "create_trajectory"}, + {"page": "allow_trajectory"} + ] + }, + { + "controller": [ + {"page": "interruption_request"}, + {"page": "update_taskqueue"}, + {"page": "task_safety"}, + {"page": "interruption_safety"} + ] + } + ] +} + + + + + + + +