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 __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))
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)
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)