Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00040 from __future__ import with_statement
00041 
00042 import roslib; roslib.load_manifest('application_manager')
00043 import rospy
00044 import actionlib
00045 from actionlib_msgs.msg import GoalStatus
00046 import sys
00047 import optparse
00048 from application_msgs.msg import *
00049 
00050 def main():
00051    args = sys.argv
00052    args.remove(args[0])
00053 
00054    if len(args) == 0:
00055       print 'Usage: do.py list/start/stop/kill'
00056    else:
00057       if args[0] == 'list':
00058          ac = actionlib.SimpleActionClient('application_manager/list_applications', ListApplicationsAction)
00059          ac.wait_for_server(rospy.Duration(10.0))
00060          ac.send_goal_and_wait(ListApplicationsGoal())
00061          res = ac.get_result()
00062          if len(res.application_name) == 0:
00063             print "No applications available"
00064          else:
00065             print "The following appliations are managed by the application manager:"
00066             for name, status in zip(res.application_name, res.application_status):
00067                print "  - %s (%s)"%(name, status)
00068 
00069       if args[0] == 'start':
00070          for i in range(1, len(args)):
00071             ac = actionlib.SimpleActionClient('application_manager/run_application', RunApplicationAction)
00072             ac.wait_for_server(rospy.Duration(10.0))
00073             ac.send_goal(RunApplicationGoal(application_name = args[i]))
00074             while not ac.get_state() in [GoalStatus.ACTIVE, GoalStatus.REJECTED]:
00075                rospy.sleep(0.1)
00076             if ac.get_state() == GoalStatus.ACTIVE:
00077                print "Started application %s"%args[i]
00078             else:
00079                print "Failed to start application %s"%args[i]         
00080          
00081 
00082       if args[0] == 'stop':
00083          for i in range(1, len(args)):
00084             ac = actionlib.SimpleActionClient('application_manager/stop_application', StopApplicationAction)
00085             ac.wait_for_server(rospy.Duration(10.0))
00086             ac.send_goal_and_wait(StopApplicationGoal(application_name = args[i]))
00087             if ac.get_state() == GoalStatus.SUCCEEDED:
00088                print "Killed application %s"%args[i]
00089             else:
00090                print "Failed to kill application %s"%args[i]         
00091 
00092       if args[0] == 'kill':
00093          for i in range(1, len(args)):
00094             ac = actionlib.SimpleActionClient('application_manager/kill_application', KillApplicationAction)
00095             ac.wait_for_server(rospy.Duration(10.0))
00096             ac.send_goal_and_wait(KillApplicationGoal(application_name = args[i]))
00097             if ac.get_state() == GoalStatus.SUCCEEDED:
00098                print "Killed application %s"%args[i]
00099             else:
00100                print "Failed to kill application %s"%args[i]         
00101 
00102 
00103 
00104 
00105 if __name__ == '__main__':
00106    rospy.init_node('application_manager_do')
00107    main()
00108 
00109 
00110