32 |
32 |
import rospy
|
33 |
33 |
import actionlib
|
34 |
34 |
from hlrc_server.msg import *
|
|
35 |
from actionlib_msgs.msg import GoalStatus
|
35 |
36 |
|
36 |
37 |
class MiddlewareROS(Middleware):
|
37 |
38 |
#default timeout to wait in case of blocking calls
|
... | ... | |
113 |
114 |
client = self.current_emotion_client
|
114 |
115 |
|
115 |
116 |
#send the goal to the server
|
116 |
|
client.send_goal(goal)
|
117 |
|
|
118 |
|
#wait for the server to finish
|
119 |
117 |
if (blocking):
|
120 |
|
timed_out = client.wait_for_result(rospy.Duration.from_sec(MiddlewareROS.ROS_ACTION_CALL_TIMEOUT))
|
121 |
|
if (timed_out):
|
122 |
|
self.logger.error("%s timed out waiting for result" % (sys._getframe().f_code.co_name))
|
|
118 |
#send and wait:
|
|
119 |
state = client.send_goal_and_wait(goal, execute_timeout = rospy.Duration.from_sec(MiddlewareROS.ROS_ACTION_CALL_TIMEOUT))
|
|
120 |
if (state != GoalStatus.SUCCEEDED):
|
|
121 |
self.logger.error("%s timed out waiting for result or soemthing else went wrong" % (sys._getframe().f_code.co_name))
|
|
122 |
else:
|
|
123 |
#non blocking, fire & forget
|
|
124 |
client.send_goal(goal)
|
|
125 |
|
|
126 |
self.logger.debug("emotion rpc done")
|
123 |
127 |
|
124 |
128 |
def publish_default_emotion(self, emotion, blocking):
|
125 |
129 |
self.publish_emotion(RobotEmotion.TYPE_DEFAULT, emotion, blocking)
|
... | ... | |
142 |
146 |
goal.scale = animation.scale
|
143 |
147 |
|
144 |
148 |
#send the goal to the server
|
145 |
|
self.animation_client.send_goal(goal)
|
146 |
|
|
147 |
|
#wait for the server to finish
|
148 |
149 |
if (blocking):
|
149 |
|
timed_out = self.animation_client.wait_for_result(rospy.Duration.from_sec(MiddlewareROS.ROS_ACTION_CALL_TIMEOUT))
|
150 |
|
if (timed_out):
|
151 |
|
self.logger.error("%s timed out waiting for result" % (sys._getframe().f_code.co_name))
|
|
150 |
#send and wait:
|
|
151 |
state = self.animation_client.send_goal_and_wait(goal, execute_timeout = rospy.Duration.from_sec(MiddlewareROS.ROS_ACTION_CALL_TIMEOUT))
|
|
152 |
if (state != GoalStatus.SUCCEEDED):
|
|
153 |
self.logger.error("%s timed out waiting for result or soemthing else went wrong" % (sys._getframe().f_code.co_name))
|
|
154 |
else:
|
|
155 |
#non blocking, fire & forget
|
|
156 |
self.animation_client.send_goal(goal)
|
152 |
157 |
|
153 |
158 |
self.logger.debug("animation rpc done")
|
154 |
159 |
|
... | ... | |
177 |
182 |
goal.gaze_timestamp = rospy.Time.from_sec(gaze.timestamp)
|
178 |
183 |
|
179 |
184 |
#send the goal to the server
|
180 |
|
self.gazetarget_client.send_goal(goal)
|
181 |
|
|
182 |
|
#wait for the server to finish
|
183 |
185 |
if (blocking):
|
184 |
|
timed_out = self.gazetarget_client.wait_for_result(rospy.Duration.from_sec(MiddlewareROS.ROS_ACTION_CALL_TIMEOUT))
|
185 |
|
if (timed_out):
|
186 |
|
self.logger.error("%s timed out waiting for result" % (sys._getframe().f_code.co_name))
|
187 |
|
|
|
186 |
#send and wait:
|
|
187 |
state = self.gazetarget_client.send_goal_and_wait(goal, execute_timeout = rospy.Duration.from_sec(MiddlewareROS.ROS_ACTION_CALL_TIMEOUT))
|
|
188 |
if (state != GoalStatus.SUCCEEDED):
|
|
189 |
self.logger.error("%s timed out waiting for result or soemthing else went wrong" % (sys._getframe().f_code.co_name))
|
|
190 |
else:
|
|
191 |
#non blocking, fire & forget
|
|
192 |
self.gazetarget_client.send_goal(goal)
|
188 |
193 |
|
189 |
194 |
self.logger.debug("gaze rpc done")
|
190 |
195 |
|
... | ... | |
205 |
210 |
goal.position_right = mouth.position_right
|
206 |
211 |
|
207 |
212 |
#send the goal to the server
|
208 |
|
self.mouthtarget_client.send_goal(goal)
|
209 |
|
|
210 |
|
#wait for the server to finish
|
211 |
213 |
if (blocking):
|
212 |
|
timed_out = self.mouthtarget_client.wait_for_result(rospy.Duration.from_sec(MiddlewareROS.ROS_ACTION_CALL_TIMEOUT))
|
213 |
|
if (timed_out):
|
214 |
|
self.logger.error("%s timed out waiting for result" % (sys._getframe().f_code.co_name))
|
|
214 |
#send and wait:
|
|
215 |
state = self.mouthtarget_client.send_goal_and_wait(goal, execute_timeout = rospy.Duration.from_sec(MiddlewareROS.ROS_ACTION_CALL_TIMEOUT))
|
|
216 |
if (state != GoalStatus.SUCCEEDED):
|
|
217 |
self.logger.error("%s timed out waiting for result or soemthing else went wrong" % (sys._getframe().f_code.co_name))
|
|
218 |
else:
|
|
219 |
#non blocking, fire & forget
|
|
220 |
self.mouthtarget_client.send_goal(goal)
|
215 |
221 |
|
216 |
222 |
self.logger.debug("mouth rpc done")
|
217 |
223 |
|
... | ... | |
226 |
232 |
goal = speechGoal(text=text_)
|
227 |
233 |
|
228 |
234 |
#send the goal to the server
|
229 |
|
self.speech_client.send_goal(goal)
|
230 |
|
|
231 |
|
#wait for the server to finish
|
232 |
235 |
if (blocking):
|
233 |
|
timed_out = self.speech_client.wait_for_result(rospy.Duration.from_sec(MiddlewareROS.ROS_ACTION_CALL_TIMEOUT))
|
234 |
|
if (timed_out):
|
235 |
|
self.logger.error("%s timed out waiting for result" % (sys._getframe().f_code.co_name))
|
|
236 |
#send and wait:
|
|
237 |
state = self.speech_client.send_goal_and_wait(goal, execute_timeout = rospy.Duration.from_sec(MiddlewareROS.ROS_ACTION_CALL_TIMEOUT))
|
|
238 |
if (state != GoalStatus.SUCCEEDED):
|
|
239 |
self.logger.error("%s timed out waiting for result or soemthing else went wrong" % (sys._getframe().f_code.co_name))
|
|
240 |
else:
|
|
241 |
#non blocking, fire & forget
|
|
242 |
self.speech_client.send_goal(goal)
|
236 |
243 |
|
237 |
244 |
self.logger.debug("speech rpc done")
|
238 |
245 |
|