def getCurrentGoalDescription(self):
        """ Return a description (in the specification language) of
            the goal currently being pursued (jx).
            If no automaton is loaded, return None. """

        if not self.aut:
            return None

        curr_goal_num = self.getCurrentGoalNumber()

        if self.proj.compile_options["parser"] == "slurp":
            # Import the SLURP dialog manager, if necessary
            try:
                dm = self.SLURPDialogManager
            except AttributeError:
                # Add SLURP to path for import
                sys.path.append(
                    os.path.join(project.get_ltlmop_root(), "src", "etc",
                                 "SLURP"))
                from ltlbroom.dialog import DialogManager
                self.SLURPDialogManager = DialogManager()
                dm = self.SLURPDialogManager

            dm.set_gen_tree(self.parserTraceback)
            return dm.explain_goal(int(curr_goal_num))
        else:
            return str(curr_goal_num)
Exemplo n.º 2
0
    def initDialogue(self):
        # Add SLURP to path for import
        p = os.path.dirname(os.path.abspath(__file__))
        sys.path.append(os.path.join(p, "..", "etc", "SLURP"))
        from ltlbroom.specgeneration import SpecGenerator
        _SLURP_SPEC_GENERATOR = SpecGenerator()
    
        # Filter out regions it shouldn't know about
        filtered_regions = [region.name for region in self.proj.rfi.regions 
                            if not (region.isObstacle or region.name.lower() == "boundary")]

        sensorList = copy.deepcopy(self.proj.enabled_sensors)
        robotPropList = self.proj.enabled_actuators + self.proj.all_customs
        
        text = self.proj.specText

        LTLspec_env, LTLspec_sys, self.proj.internal_props, internal_sensors, results, responses, traceback = \
            _SLURP_SPEC_GENERATOR.generate(text, sensorList, filtered_regions, robotPropList,
                                           self.hsub.executing_config.region_tags)

        from ltlbroom.dialog import DialogManager
        self.dialogueManager = DialogManager(traceback)