| 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 |
|