Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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()
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
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)