コード例 #1
0
 def listenGoToResultCB(self, result):
     name = result.data
     for desire in self.curDesireSet.desires:
         if desire.type == "AddLandmark":
             paramsDict = safe_load(desire.params)
             if paramsDict["name"] == name:
                 print "Landmark we wanted was added"
                 event = Event()
                 event.desire = desire.id
                 event.desire_type = desire.type
                 event.type = Event.ACC_ON
                 self.eventPublisher.publish(event)
コード例 #2
0
    def listenFaceDetectionCB(self, success):
        if success.data == True:
            for desire in self.curDesireSet.desires:
                if desire.type == "face_detection":
                    paramsDict = safe_load(desire.params)

                    event = Event()
                    event.desire = desire.id
                    event.desire_type = desire.type
                    event.type = Event.ACC_ON
                    self.eventPublisher.publish(event)
                    rospy.loginfo("ok face detection")
        else:
            # here things to do if we have a false too often
            pass
コード例 #3
0
 def listenGoToResultCB(self, result):
     succes = result.result
     if result.result == True:
         for desire in self.curDesireSet.desires:
             if desire.type == "GoToLandmark":
                 print "looking at a GoToLandmark"
                 paramsDict = safe_load(desire.params)
                 if result.landmark == paramsDict["name"]:
                     print "Attained Landmark found in gotoLandmark desires"
                     event = Event()
                     event.desire = desire.id
                     event.desire_type = desire.type
                     event.type = Event.ACC_ON
                     self.eventPublisher.publish(event)
                 else:
                     print "name did not match"
                     
     else:
         # What do we do when GoTo fails?
         pass
コード例 #4
0
    def desire_event_change(self, Event_type):
        """
        This method send an event depening from which it's type depend of the argument
        Arguments
        ---------
        Event_type: Event.type
            The type of event given by the caller representing the states of the desire
        """
        # S'il y a beaucoup de desirs du meme type... il me semble que ca ne fonctionnera pas
        event = Event()
        rospy.loginfo(self.curDesireSet.desires)
        for desire in self.curDesireSet.desires:
            if desire.type == "Listening":
                event.desire = desire.id
                event.desire_type = desire.type
                event.type = Event_type
                self.event_publisher.publish(event)

        #reset
        self.timer.cancel()
        self.actual_context = ""
コード例 #5
0
    def listenGoToResultCB(self, result):
        succes = result.result
        if result.result == True:
            for desire in self.curDesireSet.desires:
                if desire.type == "GoTo":
                    paramsDict = safe_load(desire.params)
                    if equalWithinTolerance(result.x, paramsDict["x"],
                                            0.1) and equalWithinTolerance(
                                                result.y, paramsDict["y"],
                                                0.1) and equalWithinTolerance(
                                                    result.t, paramsDict["t"],
                                                    0.1):
                        print "Position found within tolerance of a goal position"
                        event = Event()
                        event.desire = desire.id
                        event.desire_type = desire.type
                        event.type = Event.ACC_ON
                        self.eventPublisher.publish(event)
                    else:
                        print "Position found outside tolerance of a goal position"

        else:
            # What do we do when GoTo fails?
            pass
コード例 #6
0
    def desire_event_change(self, detection):
        """
        This method is the callback of the output of the module it observes. it sends an event depending on the result
        get from the topic.

        Arguments
        ---------
        SpeechText: Bool
            The result of the output of the module it observes. In this case it is the detection of the keyword
        """
        # S'il y a beaucoup de desirs du meme type... il me semble que ca ne fonctionnera pas
        event = Event()
        for desire in self.curDesireSet.desires:
            if desire.type == "Keyword_detection":
                event.desire = desire.id
                event.desire_type = desire.type
                if self.accomplish_criterion(detection):
                    event.type = Event.ACC_ON
                    self.event_publisher.publish(event)
                elif self.cancel_criterion():
                    #Probleme actuel est que si le desir n'est pas active il peut tout de meme changer d'etat!
                    event.type = Event.IMP_ON
                    self.event_publisher.publish(event)
コード例 #7
0
    def desire_event_change(self, talkingDone):
        """
        This method is the callback of the output of the module it observes, it then send an event depending the result
        get from the topic.

        Arguments
        ---------
        talkingDone: Bool
            The result of the output of the module it is connected to. In this case it is a confirmation the robot talked
        """
        # S'il y a beaucoup de desirs du meme type... il me semble que ca ne fonctionnera pas
        event = Event()
        for desire in self.curDesireSet.desires:
            if desire.type == "Talking":
                event.desire = desire.id
                event.desire_type = desire.type
                if self.accomplish_criterion(talkingDone):
                    event.type = Event.ACC_ON
                    self.event_publisher.publish(event)
                elif self.cancel_criterion():
                    #Probleme actuel est que si le desir n'est pas active il peut tout de meme changer d'etat!
                    event.type = Event.IMP_ON
                    self.event_publisher.publish(event)