Esempio n. 1
0
    def load(self, filename, host="localhost", port=6499):
        print "Tuner.load " + str(port)
        basename = os.path.basename(str(filename))
        fileroot, ext = os.path.splitext(basename)

        if filename == "":
            error = QtGui.QErrorMessage(self)
            error.showMessage( "Error, you must specify an autopilot.xml config file name" )
            return
        elif not os.path.exists(filename):
            error = QtGui.QErrorMessage(self)
            error.showMessage( filename + ": does not exist" )
            return

        try:
            self.xml = ET.parse(filename)
        except:
            error = QtGui.QErrorMessage(self)
            error.showMessage( filename + ": xml parse error:\n"
                               + str(sys.exc_info()[1]) )
            return

        self.filename = str(filename)
        self.fileroot, ext = os.path.splitext(self.filename)

        root = self.xml.getroot()

        # Route follow parameters
        self.L1 = L1Controller(changefunc=self.onChange, host=host, port=port)
        self.L1.parse_xml( root.find('L1_controller') )
        self.tabs.addTab( self.L1.get_widget(), "L1" )

        # PID controller parameters
        for i,pid_node in enumerate(root.findall('component')):
            e = pid_node.find('module')
            if e != None and e.text != None:
                comp_type = e.text
            else:
                comp_type = 'unknown'
            print "component found:", comp_type
            if comp_type == 'pid_component':
                pid = Component(index=i, changefunc=self.onChange, host=host,
                                port=port, type="pid")
            elif comp_type == 'pid_vel_component':
                pid = Component(index=i, changefunc=self.onChange, host=host,
                                port=port, type="vel")
            else:
                print "unknown ..."
                next
            pid.parse_xml(pid_node)
            self.components.append(pid)
            self.tabs.addTab( pid.get_widget(), pid.get_name() )
Esempio n. 2
0
    def load(self, filename, host="localhost", port=6499):
        print "Tuner.load " + str(port)
        basename = os.path.basename(str(filename))
        fileroot, ext = os.path.splitext(basename)

        if filename == "":
            error = QtGui.QErrorMessage(self)
            error.showMessage(
                "Error, you must specify an autopilot config file name")
            return
        elif not os.path.exists(filename):
            error = QtGui.QErrorMessage(self)
            error.showMessage(filename + ": does not exist")
            return

        try:
            props_json.load(filename, root)
        except:
            error = QtGui.QErrorMessage(self)
            error.showMessage(filename + ": parse error:\n" +
                              str(sys.exc_info()[1]))
            return

        self.filename = str(filename)
        self.fileroot, ext = os.path.splitext(self.filename)

        # Route follow parameters
        self.L1 = L1Controller(changefunc=self.onChange, host=host, port=port)
        L1_node = getNode('/L1_controller', create=True)
        self.L1.parse(L1_node)
        self.tabs.addTab(self.L1.get_widget(), "L1")

        # PID controller parameters
        print root.getChild('component')
        len = root.getLen('component')
        #comp_node = getNode('/component', create=True)
        for i in range(len):
            node_name = 'component[%d]' % i
            print node_name
            node = root.getChild(node_name)
            comp_type = node.getString('module')
            if comp_type == 'pid_component':
                pid = Component(index=i,
                                changefunc=self.onChange,
                                host=host,
                                port=port,
                                type="pid")
            elif comp_type == 'pid_vel_component':
                pid = Component(index=i,
                                changefunc=self.onChange,
                                host=host,
                                port=port,
                                type="vel")
            elif comp_type == 'summer':
                pid = Component(index=i,
                                changefunc=self.onChange,
                                host=host,
                                port=port,
                                type="sum")
            else:
                print "unknown ..."
                next
            pid.parse(node)
            self.components.append(pid)
            self.tabs.addTab(pid.get_widget(), pid.get_name())