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)
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
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
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 = ""
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
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)
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)