Beispiel #1
0
    def execute(self, userdata):
        if self.preempt_requested():
            self.service_preempt()
            return 'preempted'

        self.goal = FaceRecognitionGoal()
        self.goal.order_id = 1
        self.goal.order_argument = ''

        self._done_cond.acquire()
        self.face_recog_client.send_goal(self.goal, self._goal_done_cb,
                                         self._goal_active_cb,
                                         self._goal_feedback_cb)

        # Wait for action to finish
        self._done_cond.wait()
        self._done_cond.release()

        print self._goal_status
        print self._goal_result

        # self.goal.order_id = 4
        # self.face_recog_client.send_goal(self.goal)

        if self._goal_status == GoalStatus.PREEMPTED:
            self.service_preempt()
            return 'preempted'

        return 'succeeded'
Beispiel #2
0
    def __init__(self):
        # Get the parameters from launchfile
        self.param_prefix = "/rpi_integration"
        self.autostart = rospy.get_param(self.param_prefix + '/autostart')
        self.use_stt = rospy.get_param(self.param_prefix + '/use_stt', False)
        self.use_tts = rospy.get_param(self.param_prefix + '/use_tts', True)
        self.use_ontosem_comms = rospy.get_param(self.param_prefix +
                                                 '/use_ontosem_comms')
        self.use_face_rec = rospy.get_param(self.param_prefix +
                                            '/use_face_rec')

        self.use_script = rospy.get_param(self.param_prefix + '/use_script',
                                          True)

        self.client = actionlib.SimpleActionClient("face_recognition",
                                                   FaceRecognitionAction)
        self.goal = FaceRecognitionGoal()

        self.storage_1 = [
        ]  # For the purposes of this demo, storage_1 is empty
        self.storage_2 = rospy.get_param(self.param_prefix +
                                         "/objects_right").values()

        self.workspace = [
        ]  # stores ids of retrieved objects in shared workspace.
        # Candidate for deletion
        # self.strt_time       = time.time()
        self.LISTENING = False

        # Listens for speech commands from microphone
        self._listen_sub = rospy.Subscriber(
            self.STT_TOPIC,  #self.SPEECH_SERVICE,
            transcript,
            self._listen_query_cb)
        self._cmd = None  # Will store the current command POSTed by OntoSem
        BaseController.__init__(
            self,
            use_left=True,
            use_right=True,
            use_stt=self.use_stt,
            use_tts=self.use_tts,
            recovery=False,
        )

        RESTOntoSemUtils.__init__(self)

        if self.use_face_rec:
            rospy.logwarn("Waiting for actionserver....")
            self.client.wait_for_server()
            rospy.logwarn("Action server ready!")

        self._bootstrap()
Beispiel #3
0
 def set_name(self):
 
     reco = actionlib.SimpleActionClient("face_recognition", FaceRecognitionAction)
     
     rospy.loginfo("Connected to face recognition server")
     reco.wait_for_server(rospy.Duration(10))
 
     reco_goal = FaceRecognitionGoal()
     reco_goal.order_id = 0
     reco_goal.order_argument="none"
     reco.send_goal(reco_goal)
     
     rospy.loginfo("Waiting the result to face recognition server")
     finished_within_time = reco.wait_for_result(rospy.Duration(4))
Beispiel #4
0
 def get_name(self):
         
     reco = actionlib.SimpleActionClient("face_recognition", FaceRecognitionAction)
 
     rospy.loginfo("Connected to face recognition server")
     reco.wait_for_server(rospy.Duration(10))
 
     reco_goal = FaceRecognitionGoal()
     reco_goal.order_id = 0
     reco_goal.order_argument="none"
     reco.send_goal(reco_goal)
 
     rospy.loginfo("Waiting the result to face recognition server")
     finished_within_time = reco.wait_for_result(rospy.Duration(2))
 
     if not finished_within_time:
         self.recognized_name = "unknown"
         reco.cancel_goal()
         #self.kernel.setPredicate('name',str(self.recognized_name))
         #self.kernel.setPredicate('confidence','00')
         return "unknown"
     
     else:
       state = reco.get_state()        
       result = reco.get_result()
       name = result.names
       confidence = "%.2f" %result.confidence
       confidence = float(confidence)*100
       confidence = int(confidence)
       
       name = str(name).replace("[","").replace("]","").replace("'","").capitalize()
   
     if confidence >= self.recog_name_certainty :
       rospy.loginfo("Il s'agit de :" + str(name))
       rospy.loginfo("Avec une reconnaissance de :" + str(confidence)+"%")
       self.kernel.setPredicate('valConfidence',str(confidence),str(name))
       self.kernel.setPredicate('name',str(name),str(name))
       self.kernel.setPredicate('confidence','ok',str(name))
       self.recognized_name = name 
       return str(name)
    def start_recognition(self):
        while not rospy.is_shutdown():
            if self.ready_for_recognition == True:
                # send orders to  face recognition server
                self.recognitionGoal = FaceRecognitionGoal()
                self.recognitionGoal.order_id = 0
                self.recognitionGoal.order_argument = "none"
                self.recognition.send_goal(self.recognitionGoal)
                self.recognition.wait_for_result()
                #get result from face recognition server
                result = self.recognition.get_result()
                name = result.names
                #confidence = result.confidence
                self.recognizedName = str(name).replace("['",
                                                        "").replace("']", "")
                #self.recognizedConfidence = str(confidence)
                self.pubFace.publish(self.recognizedName)
                state = self.recognition.get_state()
                print "voici l'etat:" + str(
                    self.goal_states[state]
                ) + " et le nom: " + self.recognizedName

            else:
                continue
#!/usr/bin/env python

import sys
import rospy
import actionlib
from face_recognition.msg import FaceRecognitionAction, FaceRecognitionGoal

if __name__ == '__main__':
    rospy.init_node('face_recognition_starter')
    c = actionlib.ActionClient('face_recognition', FaceRecognitionAction)
    c.wait_for_server()
    g = FaceRecognitionGoal()
    g.order_id = 1
    g.order_argument = "none"
    c.send_goal(g)
    sys.exit(0)