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'
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()
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))
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)