class EthernetTest(BaseTest): def __init__(self, parent, serial, func): # Load the XRC resource self.res2 = xrc.XmlResource(execution_path('ethernet_test.xrc')) # Initialize the BaseTest with these parts BaseTest.__init__(self, parent, serial, func, 'Ethernet Cable') def instruct_panel_gen(self, parent): return self.res2.LoadPanel(parent, 'instruct_panel') def test_panel_gen(self, parent): return self.res2.LoadPanel(parent, 'test_panel') # This is what runs once the instructions are read def Run(self): thread.start_new_thread(self.RunThread, (None, )) def RunThread(self, arg): # Create a roslauncher config = roslaunch.ROSLaunchConfig() # Try loading the XML file try: loader = roslaunch.XmlLoader() loader.load(execution_path('ethernet_test.xml'), config) except roslaunch.XmlParseException, e: wx.CallAfter( self.Cancel, 'Could not load back-end XML to launch necessary nodes. Make sure the GUI is up to date.' ) return # Make sure we get a fresh master config.master.auto = config.master.AUTO_RESTART # Bring up the nodes rl = roslaunch.ROSLaunchRunner(config) rl.launch() # Wait for our self-test service to come up rospy.wait_for_service('ethernet/self_test', 5) # Try to query the self_test service on the imu try: s = rospy.ServiceProxy('ethernet/self_test', SelfTest) resp = s.call(SelfTestRequest(), 60) except rospy.ServiceException, e: print e wx.CallAfter( self.Cancel, "Could not contact node via ROS.\nError was: %s\nMake sure GUI is built correctly: rosmake qualification" % (e)) rl.stop() return
def launch_core(self): self.log('Launching ros core services') # Create a roslauncher config = roslaunch.ROSLaunchConfig() config.master.auto = config.master.AUTO_RESTART launcher = roslaunch.ROSLaunchRunner(config) launcher.launch() return launcher
def load_parameters(self): '''Loads all global parameters into roscore.''' run_id = self._run_id if self._run_id is not None \ else roslaunch.rlutil.get_or_generate_uuid(None, True) runner = roslaunch.ROSLaunchRunner(run_id, self._config) runner._load_parameters() msg = 'Loaded %d parameters to parameter server.' \ % len(self._config.params) self.sig_sysmsg.emit(msg) rospy.logdebug(msg)
def launch(package, launch_name, args = []): ros_master_id = rospy.get_param("/run_id") pkg_path = rospkg.RosPack().get_path( package ) launch_path = "%s/launch/%s" % ( pkg_path, launch_name) loader = roslaunch.XmlLoader() config = roslaunch.ROSLaunchConfig() loader.load( launch_path, config, argv=args ) runner = roslaunch.ROSLaunchRunner( ros_master_id, config ) runner.launch()
def launch_core(): # Launch the core, generate the run_id # in the future this may need a rewrite as roslaunch gets the # ability to remotely launch cores, but for now this is fine config = roslaunch.ROSLaunchConfig() config.master.auto = config.master.AUTO_START run_id = roslaunch.core.generate_run_id() core_launcher = roslaunch.ROSLaunchRunner(run_id, config) core_launcher.launch() return core_launcher
def launch_script(self, script): self.log('Launching roslaunch file %s' % (script)) # Create a roslauncher config = roslaunch.ROSLaunchConfig() # Try loading the XML file try: loader = roslaunch.XmlLoader() loader.load(script, config) # Bring up the nodes launcher = roslaunch.ROSLaunchRunner(config) launcher.launch() except roslaunch.RLException, e: self.log('Failed to launch roslaunch file %s: %s' % (script, e)) return None
class ForearmTest(BaseTest): def __init__(self, parent, serial, func): self.ready = False self.serial1 = serial[0:7] print self.serial1 self.count = 1 self.finished = False self.testcount = 1 # Load the XRC resource self.res2 = xrc.XmlResource(execution_path('forearm_test.xrc')) # Initialize the BaseTest with these parts BaseTest.__init__(self, parent, serial, func, 'forearm Test') self.roslaunch = None self.topic = None self.data_topic = None self.response = DiagnosticMessage(None, []) self.data_dict = {} def instruct_panel_gen(self, parent): # Load the instruction and test panels from the XRC resource panel = 'instruct_panel_' + self.serial1 print panel return self.res2.LoadPanel(parent, panel) def test_panel_gen(self, parent): test_panel = self.res2.LoadPanel(parent, 'test_panel') test_panel.Bind(wx.EVT_BUTTON, self.EStop, id=xrc.XRCID('ESTOP_button')) return self.res2.LoadPanel(parent, 'test_panel') # This is what runs once the instructions are read def Run(self): thread.start_new_thread(self.RunThread, (None, )) def RunThread(self, arg): #Create a roslauncher config = roslaunch.ROSLaunchConfig() self.count = 1 self.finished = False self.testcount = 1 self.ready = False # Try loading the test XML file try: xmlFile = execution_path( str('xml/' + self.serial1 + '_forearm_test.xml')) loader = roslaunch.XmlLoader() loader.load(xmlFile, config) except roslaunch.XmlParseException, e: wx.CallAfter( self.Cancel, 'Could not load back-end XML to launch necessary nodes. Make sure the GUI is up to date.' ) return # Make sure we get a fresh master config.master.auto = config.master.AUTO_RESTART # Bring up the nodes self.roslaunch = roslaunch.ROSLaunchRunner(config) self.roslaunch.launch() self.topic = rospy.TopicSub("/diagnostics", DiagnosticMessage, self.OnMsg) self.data_topic = rospy.TopicSub("/hysteresis_data", ChannelFloat32, self.OnData)