Exemple #1
0
    def __init__(self, sub_tf, pub_tf, parent=None):
        super(TrackManager, self).__init__(parent)



        # Initialise gui
        self.ui = Ui_ScrollAreaTracker()
        self.ui.setupUi(self)

        # Ros stuff
        self.sub_tf = sub_tf #tf.TransformListener()
        self.pub_tf = pub_tf #tf.TransformBroadcaster()

        # Initialise Trackers
        self.trackers = [KinectTracker(self), QualisysTracker(self)]
        for t in self.trackers:
            t.sig_started.connect(self.started)
            t.sig_error.connect(self.startFailed)


        # KINECT STUFF
        self.trackers[0].sig_inview.connect(self.sig_inView.emit)
        #self.ui.checkBox_autoCapture

        self.trackers[0].sig_backgroundStep.connect(self.updatePB)
        self.ui.comboBox_kinMethod.currentIndexChanged.connect(self.trackers[0].setMethod)
        self.ui.doubleSpinBox_kinMaxDepth.valueChanged.connect(self.trackers[0].setMaxDepth)
        self.ui.doubleSpinBox_kinFG.valueChanged.connect(self.trackers[0].setForegroundDist)
        self.ui.pushButton_reset.clicked.connect(lambda : self.trackers[0].resetBackground(self.ui.doubleSpinBox_kinObsTime.value()))


        self.ui.doubleSpinBox_kinDetSize.valueChanged.connect(self.trackers[0].setSize)
        self.ui.doubleSpinBox_tol.valueChanged.connect(self.trackers[0].setSizeTolerance)
        self.ui.spinBox_kernelSize.valueChanged.connect(self.trackers[0].setKernel)
        self.ui.spinBox_kernelIter.valueChanged.connect(self.trackers[0].setIterations)
        self.ui.comboBox_prio.currentIndexChanged.connect(self.trackers[0].setPriority)
        self.ui.comboBox_kinDepth.currentIndexChanged.connect(self.trackers[0].setDepthEstMode)

        self.tracker = None
        self.tracking = False

        # Connections GUI to GUI
        self.ui.comboBox_tracker.clear()
        self.ui.comboBox_tracker.addItems([t.name for t in self.trackers])
        self.ui.comboBox_tracker.currentIndexChanged.connect(self.switchTracker)
        self.ui.comboBox_tracker.currentIndexChanged.emit(self.ui.comboBox_tracker.currentIndex()) # Force update

        self.readSettings()

        # Connections from GUI
        self.q01 = (self.ui.comboBox_q0.currentIndex(), self.ui.comboBox_q1.currentIndex())
        self.ui.pushButton_trackStart.clicked.connect(self.startStopClicked)
        self.ui.comboBox_q0.currentIndexChanged.connect(lambda x: self.qualisysFrameChanged(0,x))
        self.ui.comboBox_q1.currentIndexChanged.connect(lambda x: self.qualisysFrameChanged(1,x))
Exemple #2
0
    def __init__(self, sub_tf, pub_tf, parent=None):
        super(TrackManager, self).__init__(parent)

        # Initialise gui
        self.ui = Ui_ScrollAreaTracker()
        self.ui.setupUi(self)

        # Ros stuff
        self.sub_tf = sub_tf  #tf.TransformListener()
        self.pub_tf = pub_tf  #tf.TransformBroadcaster()

        # Initialise Trackers
        self.trackers = [KinectTracker(self), QualisysTracker(self)]
        for t in self.trackers:
            t.sig_started.connect(self.started)
            t.sig_error.connect(self.startFailed)

        # KINECT STUFF
        self.trackers[0].sig_inview.connect(self.sig_inView.emit)
        #self.ui.checkBox_autoCapture

        self.trackers[0].sig_backgroundStep.connect(self.updatePB)
        self.ui.comboBox_kinMethod.currentIndexChanged.connect(
            self.trackers[0].setMethod)
        self.ui.doubleSpinBox_kinMaxDepth.valueChanged.connect(
            self.trackers[0].setMaxDepth)
        self.ui.doubleSpinBox_kinFG.valueChanged.connect(
            self.trackers[0].setForegroundDist)
        self.ui.pushButton_reset.clicked.connect(lambda: self.trackers[
            0].resetBackground(self.ui.doubleSpinBox_kinObsTime.value()))

        self.ui.doubleSpinBox_kinDetSize.valueChanged.connect(
            self.trackers[0].setSize)
        self.ui.doubleSpinBox_tol.valueChanged.connect(
            self.trackers[0].setSizeTolerance)
        self.ui.spinBox_kernelSize.valueChanged.connect(
            self.trackers[0].setKernel)
        self.ui.spinBox_kernelIter.valueChanged.connect(
            self.trackers[0].setIterations)
        self.ui.comboBox_prio.currentIndexChanged.connect(
            self.trackers[0].setPriority)
        self.ui.comboBox_kinDepth.currentIndexChanged.connect(
            self.trackers[0].setDepthEstMode)

        self.tracker = None
        self.tracking = False

        # Connections GUI to GUI
        self.ui.comboBox_tracker.clear()
        self.ui.comboBox_tracker.addItems([t.name for t in self.trackers])
        self.ui.comboBox_tracker.currentIndexChanged.connect(
            self.switchTracker)
        self.ui.comboBox_tracker.currentIndexChanged.emit(
            self.ui.comboBox_tracker.currentIndex())  # Force update

        self.readSettings()

        # Connections from GUI
        self.q01 = (self.ui.comboBox_q0.currentIndex(),
                    self.ui.comboBox_q1.currentIndex())
        self.ui.pushButton_trackStart.clicked.connect(self.startStopClicked)
        self.ui.comboBox_q0.currentIndexChanged.connect(
            lambda x: self.qualisysFrameChanged(0, x))
        self.ui.comboBox_q1.currentIndexChanged.connect(
            lambda x: self.qualisysFrameChanged(1, x))
Exemple #3
0
class TrackManager(QScrollArea):
    """ External Flie tracking """
    sig_inView = pyqtSignal(bool)  # True if in view, else False

    def __init__(self, sub_tf, pub_tf, parent=None):
        super(TrackManager, self).__init__(parent)

        # Initialise gui
        self.ui = Ui_ScrollAreaTracker()
        self.ui.setupUi(self)

        # Ros stuff
        self.sub_tf = sub_tf  #tf.TransformListener()
        self.pub_tf = pub_tf  #tf.TransformBroadcaster()

        # Initialise Trackers
        self.trackers = [KinectTracker(self), QualisysTracker(self)]
        for t in self.trackers:
            t.sig_started.connect(self.started)
            t.sig_error.connect(self.startFailed)

        # KINECT STUFF
        self.trackers[0].sig_inview.connect(self.sig_inView.emit)
        #self.ui.checkBox_autoCapture

        self.trackers[0].sig_backgroundStep.connect(self.updatePB)
        self.ui.comboBox_kinMethod.currentIndexChanged.connect(
            self.trackers[0].setMethod)
        self.ui.doubleSpinBox_kinMaxDepth.valueChanged.connect(
            self.trackers[0].setMaxDepth)
        self.ui.doubleSpinBox_kinFG.valueChanged.connect(
            self.trackers[0].setForegroundDist)
        self.ui.pushButton_reset.clicked.connect(lambda: self.trackers[
            0].resetBackground(self.ui.doubleSpinBox_kinObsTime.value()))

        self.ui.doubleSpinBox_kinDetSize.valueChanged.connect(
            self.trackers[0].setSize)
        self.ui.doubleSpinBox_tol.valueChanged.connect(
            self.trackers[0].setSizeTolerance)
        self.ui.spinBox_kernelSize.valueChanged.connect(
            self.trackers[0].setKernel)
        self.ui.spinBox_kernelIter.valueChanged.connect(
            self.trackers[0].setIterations)
        self.ui.comboBox_prio.currentIndexChanged.connect(
            self.trackers[0].setPriority)
        self.ui.comboBox_kinDepth.currentIndexChanged.connect(
            self.trackers[0].setDepthEstMode)

        self.tracker = None
        self.tracking = False

        # Connections GUI to GUI
        self.ui.comboBox_tracker.clear()
        self.ui.comboBox_tracker.addItems([t.name for t in self.trackers])
        self.ui.comboBox_tracker.currentIndexChanged.connect(
            self.switchTracker)
        self.ui.comboBox_tracker.currentIndexChanged.emit(
            self.ui.comboBox_tracker.currentIndex())  # Force update

        self.readSettings()

        # Connections from GUI
        self.q01 = (self.ui.comboBox_q0.currentIndex(),
                    self.ui.comboBox_q1.currentIndex())
        self.ui.pushButton_trackStart.clicked.connect(self.startStopClicked)
        self.ui.comboBox_q0.currentIndexChanged.connect(
            lambda x: self.qualisysFrameChanged(0, x))
        self.ui.comboBox_q1.currentIndexChanged.connect(
            lambda x: self.qualisysFrameChanged(1, x))

    def updatePB(self, val, maxval):
        """ Updates progress bar and hides background options while generating background """

        if self.ui.progressBar_background.maximum() != maxval:
            self.ui.progressBar_background.setMaximum(maxval)
        self.ui.progressBar_background.setValue(val)
        if val == 0:
            self.ui.doubleSpinBox_kinObsTime.setEnabled(False)
            self.ui.comboBox_kinMethod.setEnabled(False)
            self.ui.doubleSpinBox_kinMaxDepth.setEnabled(False)
            self.ui.doubleSpinBox_kinFG.setEnabled(False)
        elif val == maxval:
            self.ui.doubleSpinBox_kinObsTime.setEnabled(True)
            self.ui.comboBox_kinMethod.setEnabled(True)
            self.ui.doubleSpinBox_kinMaxDepth.setEnabled(True)
            self.ui.doubleSpinBox_kinFG.setEnabled(True)

    def qualisysFrameChanged(self, frame, id):
        """ Make sure q1 and q0 do not have the same index. Swaps their previous values if they do
        """
        if self.ui.comboBox_q0.currentIndex(
        ) == self.ui.comboBox_q1.currentIndex():
            if frame == 0:
                self.ui.comboBox_q1.setCurrentIndex(self.q01[0])
            else:
                self.ui.comboBox_q0.setCurrentIndex(self.q01[1])
        self.q01 = (self.ui.comboBox_q0.currentIndex(),
                    self.ui.comboBox_q1.currentIndex())

    @pyqtSlot()
    def startStopClicked(self):
        if self.tracking:
            self.stop()
        else:
            self.start()

    def start(self):
        self.ui.pushButton_trackStart.setText(self.tracker.getStartMsg())
        self.ui.pushButton_trackStart.setEnabled(False)
        self.ui.comboBox_tracker.setEnabled(False)
        self.repaint()
        self.tracking = True
        self.tracker.start()

    def stop(self):
        self.ui.pushButton_trackStart.setEnabled(True)
        self.ui.comboBox_tracker.setEnabled(True)
        self.ui.pushButton_trackStart.setText("Start Tracking")
        self.tracker.stop()
        self.tracking = False

    def started(self):
        self.ui.pushButton_trackStart.setEnabled(True)
        self.ui.pushButton_trackStart.setText("Stop Tracking")

    def startFailed(self, msg):
        self.ui.pushButton_trackStart.setEnabled(True)
        self.ui.comboBox_tracker.setEnabled(True)
        self.ui.pushButton_trackStart.setText("Start [%s]" % msg)
        self.tracking = False

    def readSettings(self):
        # TODO Read Configuration
        pass

    def writeSettings(self):
        # TODO save configuration
        pass

    @pyqtSlot(int)
    def switchTracker(self, idx=0):
        """ Changes current tracker. Only enabled if not tracking"""
        self.ui.pushButton_trackStart.setText("Start Tracking")

        self.tracker = self.trackers[idx]
        self.ui.groupBox_kinectFG.hide()
        self.ui.groupBox_kinectBG.hide()
        self.ui.groupBox_qualisys.hide()
        self.ui.groupBox_slam.hide()

        if idx == 0:
            self.ui.groupBox_kinectFG.show()
            self.ui.groupBox_kinectBG.show()
        elif idx == 1:
            self.ui.groupBox_qualisys.show()
        elif idx == 3:
            self.ui.groupBox_slam.show()
        else:
            rospy.logerr("Unknown Tracker Type Selected: %d", idx)
Exemple #4
0
class TrackManager(QScrollArea):
    """ External Flie tracking """
    sig_inView = pyqtSignal(bool) # True if in view, else False
    def __init__(self, sub_tf, pub_tf, parent=None):
        super(TrackManager, self).__init__(parent)



        # Initialise gui
        self.ui = Ui_ScrollAreaTracker()
        self.ui.setupUi(self)

        # Ros stuff
        self.sub_tf = sub_tf #tf.TransformListener()
        self.pub_tf = pub_tf #tf.TransformBroadcaster()

        # Initialise Trackers
        self.trackers = [KinectTracker(self), QualisysTracker(self)]
        for t in self.trackers:
            t.sig_started.connect(self.started)
            t.sig_error.connect(self.startFailed)


        # KINECT STUFF
        self.trackers[0].sig_inview.connect(self.sig_inView.emit)
        #self.ui.checkBox_autoCapture

        self.trackers[0].sig_backgroundStep.connect(self.updatePB)
        self.ui.comboBox_kinMethod.currentIndexChanged.connect(self.trackers[0].setMethod)
        self.ui.doubleSpinBox_kinMaxDepth.valueChanged.connect(self.trackers[0].setMaxDepth)
        self.ui.doubleSpinBox_kinFG.valueChanged.connect(self.trackers[0].setForegroundDist)
        self.ui.pushButton_reset.clicked.connect(lambda : self.trackers[0].resetBackground(self.ui.doubleSpinBox_kinObsTime.value()))


        self.ui.doubleSpinBox_kinDetSize.valueChanged.connect(self.trackers[0].setSize)
        self.ui.doubleSpinBox_tol.valueChanged.connect(self.trackers[0].setSizeTolerance)
        self.ui.spinBox_kernelSize.valueChanged.connect(self.trackers[0].setKernel)
        self.ui.spinBox_kernelIter.valueChanged.connect(self.trackers[0].setIterations)
        self.ui.comboBox_prio.currentIndexChanged.connect(self.trackers[0].setPriority)
        self.ui.comboBox_kinDepth.currentIndexChanged.connect(self.trackers[0].setDepthEstMode)

        self.tracker = None
        self.tracking = False

        # Connections GUI to GUI
        self.ui.comboBox_tracker.clear()
        self.ui.comboBox_tracker.addItems([t.name for t in self.trackers])
        self.ui.comboBox_tracker.currentIndexChanged.connect(self.switchTracker)
        self.ui.comboBox_tracker.currentIndexChanged.emit(self.ui.comboBox_tracker.currentIndex()) # Force update

        self.readSettings()

        # Connections from GUI
        self.q01 = (self.ui.comboBox_q0.currentIndex(), self.ui.comboBox_q1.currentIndex())
        self.ui.pushButton_trackStart.clicked.connect(self.startStopClicked)
        self.ui.comboBox_q0.currentIndexChanged.connect(lambda x: self.qualisysFrameChanged(0,x))
        self.ui.comboBox_q1.currentIndexChanged.connect(lambda x: self.qualisysFrameChanged(1,x))


    def updatePB(self, val, maxval):
        """ Updates progress bar and hides background options while generating background """

        if self.ui.progressBar_background.maximum()!=maxval:
            self.ui.progressBar_background.setMaximum(maxval)
        self.ui.progressBar_background.setValue(val)
        if val == 0:
            self.ui.doubleSpinBox_kinObsTime.setEnabled(False)
            self.ui.comboBox_kinMethod.setEnabled(False)
            self.ui.doubleSpinBox_kinMaxDepth.setEnabled(False)
            self.ui.doubleSpinBox_kinFG.setEnabled(False)
        elif val==maxval:
            self.ui.doubleSpinBox_kinObsTime.setEnabled(True)
            self.ui.comboBox_kinMethod.setEnabled(True)
            self.ui.doubleSpinBox_kinMaxDepth.setEnabled(True)
            self.ui.doubleSpinBox_kinFG.setEnabled(True)






    def qualisysFrameChanged(self, frame, id):
        """ Make sure q1 and q0 do not have the same index. Swaps their previous values if they do
        """
        if self.ui.comboBox_q0.currentIndex() == self.ui.comboBox_q1.currentIndex():
            if frame == 0:
                self.ui.comboBox_q1.setCurrentIndex(self.q01[0])
            else:
                self.ui.comboBox_q0.setCurrentIndex(self.q01[1])
        self.q01 = (self.ui.comboBox_q0.currentIndex(), self.ui.comboBox_q1.currentIndex())





    @pyqtSlot()
    def startStopClicked(self):
        if self.tracking:
            self.stop()
        else:
            self.start()


    def start(self):
        self.ui.pushButton_trackStart.setText(self.tracker.getStartMsg())
        self.ui.pushButton_trackStart.setEnabled(False)
        self.ui.comboBox_tracker.setEnabled(False)
        self.repaint()
        self.tracking = True
        self.tracker.start()

    def stop(self):
        self.ui.pushButton_trackStart.setEnabled(True)
        self.ui.comboBox_tracker.setEnabled(True)
        self.ui.pushButton_trackStart.setText("Start Tracking")
        self.tracker.stop()
        self.tracking = False

    def started(self):
        self.ui.pushButton_trackStart.setEnabled(True)
        self.ui.pushButton_trackStart.setText("Stop Tracking")

    def startFailed(self, msg):
        self.ui.pushButton_trackStart.setEnabled(True)
        self.ui.comboBox_tracker.setEnabled(True)
        self.ui.pushButton_trackStart.setText("Start [%s]"%msg)
        self.tracking = False



    def readSettings(self):
        # TODO Read Configuration
        pass
    def writeSettings(self):
        # TODO save configuration
        pass


    @pyqtSlot(int)
    def switchTracker(self, idx=0):
        """ Changes current tracker. Only enabled if not tracking"""
        self.ui.pushButton_trackStart.setText("Start Tracking")

        self.tracker = self.trackers[idx]
        self.ui.groupBox_kinectFG.hide()
        self.ui.groupBox_kinectBG.hide()
        self.ui.groupBox_qualisys.hide()
        self.ui.groupBox_slam.hide()

        if idx == 0:
            self.ui.groupBox_kinectFG.show()
            self.ui.groupBox_kinectBG.show()
        elif idx == 1:
            self.ui.groupBox_qualisys.show()
        elif idx == 3:
            self.ui.groupBox_slam.show()
        else:
            rospy.logerr("Unknown Tracker Type Selected: %d", idx)