Revision 70c54617 client/python/hlrc_client/RobotController.py

View differences:

client/python/hlrc_client/RobotController.py
31 31

  
32 32
class RobotController:
33 33
    def __init__(self, mw_name, scope, loglevel=logging.WARNING):
34
	"""initialise
35
	:param mw_name: which mw to use, currentyl ROS and RSB are supported
36
	:param scope: base scope we want to listen on
37
	:param  loglevel: optional log level
38
	"""
39
	self.logger = logging.getLogger(__name__)
40

  
41
	# create nice and actually usable formatter and add it to the handler
42
	self.config_logger(loglevel)
43

  
44
	#store
45
	self.scope = scope
46
	self.mw = mw_name
47
	self.loglevel = loglevel
48

  
49
	self.middleware = None
50

  
51

  
52
	if (self.mw.upper() == "RSB"):
53
	    self.logger.info("creating new middleware connection via RSB")
54
	    try:
55
		from MiddlewareRSB import MiddlewareRSB
56
		except ImportError, e:
57
		    self.logger.error("failed to import RSB or the necessary data types: {}".format(e))
58
		    sys.exit(errno.EINVAL)
59

  
60
		    #import worked, safe to intantiate RSB mw now
61
		    self.middleware = MiddlewareRSB(self.scope, self.loglevel)
62

  
63
		    elif (self.mw.upper() == "ROS"):
64
			self.logger.info("creating new middleware connection via ROS")
65
			try:
66
			    from MiddlewareROS import MiddlewareROS
67
			    except ImportError, e:
68
				self.logger.error("failed to import ROS or the necessary data types: {}".format(e))
69
				sys.exit(errno.EINVAL)
70

  
71
				#import worked, safe to intantiate RSB mw now
72
				self.middleware = MiddlewareROS(self.scope, self.loglevel)
73
				else:
74
				    self.logger.error("invalid middleware requested (%s). supported: {ROS, RSB}\n\n" % (self.mw))
75
				    sys.exit(errno.EINVAL)
76

  
77
				    def __del__(self):
78
					"""destructor
79
					"""
80
					self.logger.debug("destructor of RobotController called")
81

  
82
					def config_logger(self, level):
83
					    """initialise a nice logger formatting
84
					    :param  level: log level
85
					    """
86
					    formatter = logging.Formatter('%(asctime)s %(name)-30s %(levelname)-8s > %(message)s')
87
					    ch = logging.StreamHandler()
88
					    #ch.setLevel(level)
89
					    ch.setFormatter(formatter)
90
					    self.logger.setLevel(level)
91
					    self.logger.addHandler(ch)
92

  
93
					    def set_current_emotion(self, robot_emotion, blocking = False):
94
						"""set the current emotion
95
						:param robot_emotion: a RobotEmotion object
96
						:param blocking: should this call block during execution?
97
						"""
98
						self.logger.debug("set_current_emotion(%s) %s" % (robot_emotion, ("BLOCKING" if blocking else "NON_BLOCKING")))
99
						self.middleware.set_current_emotion(robot_emotion, blocking)
100

  
101
						def set_default_emotion(self, robot_emotion, blocking = False):
102
						    """set the default emotion
103
						    :param robot_emotion: a RobotEmotion object
104
						    :param blocking: should this call block during execution?
105
						    """
106
						    self.logger.debug("set_default_emotion(%s) %s" % (robot_emotion, ("BLOCKING" if blocking else "NON_BLOCKING")))
107
						    self.middleware.set_default_emotion(robot_emotion, blocking)
108

  
109
						    def set_gaze_target(self, robot_gaze, blocking = False):
110
							"""set a gaze target
111
							:param robot_gaze: a RobotGaze object
112
							:param blocking: should this call block during execution?
113
							"""
114

  
115
							self.logger.debug("set_gaze_target(%s) %s" % (robot_gaze, ("BLOCKING" if blocking else "NON_BLOCKING")))
116
							self.middleware.set_gaze_target(robot_gaze, blocking)
117

  
118
							def set_mouth_target(self, robot_mouth, blocking = False):
119
							    """set a mouth target
120
							    :param robot_mouth: a RobotMouth object
121
							    :param blocking: should this call block during execution?
122
							    """
123
							    self.logger.debug("set_mouth_target(%s) %s" % (robot_mouth, ("BLOCKING" if blocking else "NON_BLOCKING")))
124
							    self.middleware.set_mouth_target(robot_mouth, blocking)
125

  
126
							    def set_head_animation(self, robot_animation, blocking = False):
127
								"""set a head animation
128
								:param robot_animation: a RobotAnimation object
129
								:param blocking: should this call block during execution?
130
								"""
131
								self.logger.debug("set_head_animation(%s) %s" % (robot_animation, ("BLOCKING" if blocking else "NON_BLOCKING")))
132
								self.middleware.set_head_animation(robot_animation, blocking)
133

  
134
								def set_speak(self, text, blocking = False):
135
								    """request the robot to say something using tts
136
								    :param text: text to synthesize
137
								    :param blocking: should this call block during execution?
138
								    """
139
								    self.logger.debug("set_speak(%s) %s" % (text, ("BLOCKING" if blocking else "NON_BLOCKING")))
140
								    self.middleware.set_speak(text, blocking)
141

  
142
								    #def get_gaze_target(self):
143
									#	result = self.middleware.get_gaze_target()
144
									#	self.logger.debug("get_gaze_target() returned %s" % (result))
145
									#	return self.middleware.get_gaze_target()
34
        """initialise
35
        :param mw_name: which mw to use, currentyl ROS and RSB are supported
36
        :param scope: base scope we want to listen on
37
        :param  loglevel: optional log level
38
        """
39
        self.logger = logging.getLogger(__name__)
40

  
41
        # create nice and actually usable formatter and add it to the handler
42
        self.config_logger(loglevel)
43

  
44
        #store
45
        self.scope = scope
46
        self.mw = mw_name
47
        self.loglevel = loglevel
48

  
49
        self.middleware = None
50

  
51

  
52
        if (self.mw.upper() == "RSB"):
53
            self.logger.info("creating new middleware connection via RSB")
54
            try:
55
                from MiddlewareRSB import MiddlewareRSB
56
            except ImportError, e:
57
                self.logger.error("failed to import RSB or the necessary data types: {}".format(e))
58
                sys.exit(errno.EINVAL)
59

  
60
            #import worked, safe to intantiate RSB mw now
61
            self.middleware = MiddlewareRSB(self.scope, self.loglevel)
62

  
63
        elif (self.mw.upper() == "ROS"):
64
            self.logger.info("creating new middleware connection via ROS")
65
            try:
66
                from MiddlewareROS import MiddlewareROS
67
            except ImportError, e:
68
                self.logger.error("failed to import ROS or the necessary data types: {}".format(e))
69
                sys.exit(errno.EINVAL)
70

  
71
            #import worked, safe to intantiate RSB mw now
72
            self.middleware = MiddlewareROS(self.scope, self.loglevel)
73
        else:
74
            self.logger.error("invalid middleware requested (%s). supported: {ROS, RSB}\n\n" % (self.mw))
75
            sys.exit(errno.EINVAL)
76

  
77
    def __del__(self):
78
        """destructor
79
        """
80
        self.logger.debug("destructor of RobotController called")
81

  
82
    def config_logger(self, level):
83
        """initialise a nice logger formatting
84
        :param  level: log level
85
        """
86
        formatter = logging.Formatter('%(asctime)s %(name)-30s %(levelname)-8s > %(message)s')
87
        ch = logging.StreamHandler()
88
        #ch.setLevel(level)
89
        ch.setFormatter(formatter)
90
        self.logger.setLevel(level)
91
        self.logger.addHandler(ch)
92

  
93
    def set_current_emotion(self, robot_emotion, blocking = False):
94
        """set the current emotion
95
        :param robot_emotion: a RobotEmotion object
96
        :param blocking: should this call block during execution?
97
        """
98
        self.logger.debug("set_current_emotion(%s) %s" % (robot_emotion, ("BLOCKING" if blocking else "NON_BLOCKING")))
99
        self.middleware.set_current_emotion(robot_emotion, blocking)
100

  
101
    def set_default_emotion(self, robot_emotion, blocking = False):
102
        """set the default emotion
103
        :param robot_emotion: a RobotEmotion object
104
        :param blocking: should this call block during execution?
105
        """
106
        self.logger.debug("set_default_emotion(%s) %s" % (robot_emotion, ("BLOCKING" if blocking else "NON_BLOCKING")))
107
        self.middleware.set_default_emotion(robot_emotion, blocking)
108

  
109
    def set_gaze_target(self, robot_gaze, blocking = False):
110
        """set a gaze target
111
        :param robot_gaze: a RobotGaze object
112
        :param blocking: should this call block during execution?
113
        """
114

  
115
        self.logger.debug("set_gaze_target(%s) %s" % (robot_gaze, ("BLOCKING" if blocking else "NON_BLOCKING")))
116
        self.middleware.set_gaze_target(robot_gaze, blocking)
117

  
118
    def set_mouth_target(self, robot_mouth, blocking = False):
119
        """set a mouth target
120
        :param robot_mouth: a RobotMouth object
121
        :param blocking: should this call block during execution?
122
        """
123
        self.logger.debug("set_mouth_target(%s) %s" % (robot_mouth, ("BLOCKING" if blocking else "NON_BLOCKING")))
124
        self.middleware.set_mouth_target(robot_mouth, blocking)
125

  
126
    def set_head_animation(self, robot_animation, blocking = False):
127
        """set a head animation
128
        :param robot_animation: a RobotAnimation object
129
        :param blocking: should this call block during execution?
130
        """
131
        self.logger.debug("set_head_animation(%s) %s" % (robot_animation, ("BLOCKING" if blocking else "NON_BLOCKING")))
132
        self.middleware.set_head_animation(robot_animation, blocking)
133

  
134
    def set_speak(self, text, blocking = False):
135
        """request the robot to say something using tts
136
        :param text: text to synthesize
137
        :param blocking: should this call block during execution?
138
        """
139
        self.logger.debug("set_speak(%s) %s" % (text, ("BLOCKING" if blocking else "NON_BLOCKING")))
140
        self.middleware.set_speak(text, blocking)
141

  
142
    #def get_gaze_target(self):
143
    #       result = self.middleware.get_gaze_target()
144
    #       self.logger.debug("get_gaze_target() returned %s" % (result))
145
    #       return self.middleware.get_gaze_target()

Also available in: Unified diff