Go to the documentation of this file.00001
00002 import roslib
00003 roslib.load_manifest('cob_hardware_test')
00004 import rospy
00005 import sys
00006
00007 from simple_script_server import *
00008 sss = simple_script_server()
00009
00010 c1 = [["torso","shake"],
00011 ["tray","up"],
00012 ["arm","pregrasp"],
00013 ["sdh","cylopen"],
00014 ["head","back"]]
00015
00016
00017 c2 = [["torso","nod"],
00018 ["tray","down"],
00019 ["arm","folded"],
00020 ["sdh","cylclosed"],
00021 ["head","front"]]
00022
00023 def init(config_list):
00024 for config in config_list:
00025 handle = sss.init(config[0])
00026 if handle.get_error_code() > 0:
00027 sss.set_light("red")
00028 raise NameError('could not initialize ' + config[0])
00029
00030 def recover(config_list):
00031 for config in config_list:
00032 handle = sss.recover(config[0])
00033 if handle.get_error_code() > 0:
00034 sss.set_light("red")
00035 raise NameError('could not recover ' + config[0])
00036
00037 def move_single_component(config):
00038
00039 handle = sss.move(config[0],config[1])
00040
00041
00042 if handle.get_state() != 3:
00043 sss.set_light("red")
00044 raise NameError('something went wrong with ' + str(config[0]) + '. Action state = ' + str(handle.get_state()))
00045
00046
00047 def move_all_component(config_list):
00048 handles = []
00049
00050
00051 for config in config_list:
00052 handles.append(sss.move(config[0],config[1],False))
00053
00054
00055 for handle in handles:
00056 handle.wait()
00057
00058
00059 for handle in handles:
00060 if handle.get_state() != 3:
00061 sss.set_light("red")
00062 raise NameError('something went wrong in move all. Action state = ' + str(handle.get_state()))
00063
00064
00065 if __name__ == "__main__":
00066 rospy.init_node("life_test")
00067
00068 init(c1)
00069
00070
00071 counter = 0
00072 while not rospy.is_shutdown():
00073 counter += 1
00074 try:
00075 sss.say(["This is round " + str(counter)])
00076 print "================================"
00077 print "=== moving single components ==="
00078 print "================================"
00079 sss.set_light("yellow")
00080 for config in c1:
00081 move_single_component(config)
00082 for config in c2:
00083 move_single_component(config)
00084 sss.set_light("green")
00085
00086 print "*****************************"
00087 print "*** moving all components ***"
00088 print "*****************************"
00089 sss.set_light("yellow")
00090 move_all_component(c1)
00091 move_all_component(c2)
00092 sss.set_light("green")
00093 except NameError, e:
00094 print "Error: %s"%e
00095 print "Successfull round(s): <<" + str(counter) + ">>"
00096 print "press <return> to continue"
00097 sss.wait_for_input()
00098 counter = 0
00099 recover(c1)