def __init__(self, tabWidget, helper, *args): super(PlotTab, self).__init__(*args) self.setupUi(self) self.tabName = "Plotter" self.menuName = "Plotter" self._log_error_signal.connect(self._logging_error) self._plot = PlotWidget(fps=30) # Check if we could find the PyQtImport. If not, then # set this tab as disabled self.enabled = self._plot.can_enable self._model = LogConfigModel() self.dataSelector.setModel(self._model) self._log_data_signal.connect(self._log_data_received) self.tabWidget = tabWidget self.helper = helper self.plotLayout.addWidget(self._plot) # Connect external signals if we can use the tab if self.enabled: self._disconnected_signal.connect(self._disconnected) self.helper.cf.disconnected.add_callback( self._disconnected_signal.emit) self.helper.cf.log.block_added_cb.add_callback(self._config_added) self.dataSelector.currentIndexChanged.connect( self._selection_changed) self._previous_config = None self._started_previous = False
def __init__(self, tabWidget, helper, *args): super(PlotTab, self).__init__(*args) self.setupUi(self) self.tabName = "Plotter" self.menuName = "Plotter" self.previousLog = None self.dsList = helper.logConfigReader.getLogConfigs() self.plot = PlotWidget(fps=50) self.dataSelector.currentIndexChanged.connect(self.newLogSetupSelected) self.logDataSignal.connect(self.logDataReceived) self.tabWidget = tabWidget self.helper = helper # self.layout().addWidget(self.dataSelector) self.plotLayout.addWidget(self.plot) # Connect external signals self.helper.cf.connectSetupFinished.add_callback( self.connectedSignal.emit) self.connectedSignal.connect(self.connected) self.datasets = [] self.logEntrys = [] self.plot.saveToFileSignal.connect(self.saveToFile) self.plot.stopSavingSignal.connect(self.savingStopped) self.saveFile = None
def initUI(self): #QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) self.fp = PlotWidget(title="A nice test plot") self.cosDataSet = PlotDataSet("Graph showing cos", QtCore.Qt.black, [180, -180]) self.sinDataSet = PlotDataSet("One showing sin", QtCore.Qt.blue, [180, -180]) self.negcosDataSet = PlotDataSet("Another one showing -cos", QtCore.Qt.green, [180, -180]) self.negsinDataSet = PlotDataSet("And the last one showing -sin", QtCore.Qt.magenta, [180, -180]) self.fp.addDataset(self.cosDataSet) self.fp.addDataset(self.sinDataSet) self.fp.addDataset(self.negcosDataSet) self.fp.addDataset(self.negsinDataSet) self.setGeometry(100, 100, 800, 500) self.setWindowTitle('FastPlotTest') layout = QtGui.QGridLayout(self) layout.addWidget(self.fp) self.setLayout(layout) self.show() self.timer.start() self.mod = 0.0
def __init__(self, tabWidget, helper, *args): super(SwarmTab, self).__init__(*args) self.setupUi(self) self.tabName = "Swarm" self.menuName = "Swarm" self.tabWidget = tabWidget self.helper = helper self.disconnectedSignal.connect(self.disconnected) self.connectionFinishedSignal.connect(self.connected) # Incoming signals self.helper.cf.connected.add_callback( self.connectionFinishedSignal.emit) self.helper.cf.disconnected.add_callback(self.disconnectedSignal.emit) self._input_updated_signal.connect(self.updateInputControl) self.helper.inputDeviceReader.input_updated.add_callback( self._input_updated_signal.emit) self._rp_trim_updated_signal.connect(self.calUpdateFromInput) self.helper.inputDeviceReader.rp_trim_updated.add_callback( self._rp_trim_updated_signal.emit) self._emergency_stop_updated_signal.connect(self.updateEmergencyStop) self.helper.inputDeviceReader.emergency_stop_updated.add_callback( self._emergency_stop_updated_signal.emit) self.helper.inputDeviceReader.heighthold_input_updated.add_callback( self._heighthold_input_updated_signal.emit) self._heighthold_input_updated_signal.connect( self._heighthold_input_updated) self.helper.inputDeviceReader.hover_input_updated.add_callback( self._hover_input_updated_signal.emit) self._hover_input_updated_signal.connect( self._hover_input_updated) self.helper.inputDeviceReader.assisted_control_updated.add_callback( self._assisted_control_updated_signal.emit) self._assisted_control_updated_signal.connect( self._assisted_control_updated) self._imu_data_signal.connect(self._imu_data_received) self._baro_data_signal.connect(self._baro_data_received) self._motor_data_signal.connect(self._motor_data_received) self._log_error_signal.connect(self._logging_error) # PlotWidget Stuff self._plot = PlotWidget(fps=30) # Check if we could find the PyQtImport. If not, then # set this tab as disabled self.enabled = self._plot.can_enable self._model = LogConfigModel() self.dataSelector.setModel(self._model) self.plotLayout.addWidget(self._plot) self._log_data_signal.connect(self._log_data_received) self._plotter_log_error_signal.connect(self._plotter_logging_error) if self.enabled: self._disconnected_signal.connect(self._disconnected) self.helper.cf.disconnected.add_callback( self._disconnected_signal.emit) self._connected_signal.connect(self._connected) self.helper.cf.connected.add_callback( self._connected_signal.emit) self.helper.cf.log.block_added_cb.add_callback(self._config_added) self.dataSelector.currentIndexChanged.connect( self._selection_changed) self._previous_config = None self._started_previous = False # Connect UI signals that are in this tab #self.flightModeCombo.currentIndexChanged.connect(self.flightmodeChange) # self.minThrust.valueChanged.connect(self.minMaxThrustChanged) # self.maxThrust.valueChanged.connect(self.minMaxThrustChanged) # self.thrustLoweringSlewRateLimit.valueChanged.connect( # self.thrustLoweringSlewRateLimitChanged) # self.slewEnableLimit.valueChanged.connect( # self.thrustLoweringSlewRateLimitChanged) self.targetCalRoll.valueChanged.connect(self._trim_roll_changed) self.inputTypeComboBox.currentIndexChanged.connect(self.inputtypeChange) self.stepHeightCombo.valueChanged.connect(self._step_height_changed) self.frequencyCombo.valueChanged.connect(self._sine_frequency_changed) self.referenceHeightCheckbox.toggled.connect(lambda: self._use_ref_input(self.referenceHeightCheckbox.isChecked())) self.targetCalPitch.valueChanged.connect(self._trim_pitch_changed) self.updateGainsBtn.clicked.connect(self._controller_gain_changed) self.k1Combo.valueChanged.connect(self._k123_gain_changed) self.k2Combo.valueChanged.connect(self._k123_gain_changed) self.k3Combo.valueChanged.connect(self._k123_gain_changed) # self.maxAngle.valueChanged.connect(self.maxAngleChanged) # self.maxYawRate.valueChanged.connect(self.maxYawRateChanged) self.uiSetupReadySignal.connect(self.uiSetupReady) self.clientXModeCheckbox.toggled.connect(self.changeXmode) self.isInCrazyFlightmode = False self.uiSetupReady() # self.clientXModeCheckbox.setChecked(Config().get("client_side_xmode")) # # self.crazyflieXModeCheckbox.clicked.connect( # lambda enabled: # self.helper.cf.param.set_value("flightmode.x", # str(enabled))) # self.helper.cf.param.add_update_callback( # group="flightmode", name="xmode", # cb=(lambda name, checked: # self.crazyflieXModeCheckbox.setChecked(eval(checked)))) # # self.ratePidRadioButton.clicked.connect( # lambda enabled: # self.helper.cf.param.set_value("flightmode.ratepid", # str(enabled))) # # self.angularPidRadioButton.clicked.connect( # lambda enabled: # self.helper.cf.param.set_value("flightmode.ratepid", # str(not enabled))) # # self._led_ring_headlight.clicked.connect( # lambda enabled: # self.helper.cf.param.set_value("ring.headlightEnable", # str(enabled))) # self.helper.cf.param.add_update_callback( # group="flightmode", name="ratepid", # cb=(lambda name, checked: # self.ratePidRadioButton.setChecked(eval(checked)))) # self.helper.cf.param.add_update_callback( # group="cpu", name="flash", # cb=self._set_enable_client_xmode) # self.helper.cf.param.add_update_callback( # group="ring", name="headlightEnable", # cb=(lambda name, checked: # self._led_ring_headlight.setChecked(eval(checked)))) self._ledring_nbr_effects = 0 # self.helper.cf.param.add_update_callback( # group="ring", # name="effect", # cb=self._ring_effect_updated) self.helper.cf.param.add_update_callback( group="imu_sensors", cb=self._set_available_sensors) # self.helper.cf.param.all_updated.add_callback( # self._ring_populate_dropdown) self.logBaro = None self.logAltHold = None self.ai = AttitudeIndicator() self.verticalLayout_2.addWidget(self.ai) # self.logo = QLabel(self) # pixmap = QPixmap('C:\dev\crazyflie-clients-python\src\cfclient/SUTDLogo.png') # self.logo.setPixmap(pixmap.scaled(150, 150, Qt.KeepAspectRatio)) # self.verticalLayout.addWidget(self.logo) self.splitter.setSizes([1000, 1]) self.targetCalPitch.setValue(Config().get("trim_pitch")) self.targetCalRoll.setValue(Config().get("trim_roll")) self.helper.inputDeviceReader.alt1_updated.add_callback( self.alt1_updated) self.helper.inputDeviceReader.alt2_updated.add_callback( self.alt2_updated) self._tf_state = 0 self._ring_effect = 0
def __init__(self, tabWidget, helper, *args): super(SwarmTab, self).__init__(*args) self.setupUi(self) self.tabName = "Swarm" self.menuName = "Swarm" self.tabWidget = tabWidget self.helper = helper print("helper:", helper) self.disconnectedSignal.connect(self.disconnected) self.connectionFinishedSignal.connect(self.connected) # Incoming signals self.helper.cf.connected.add_callback( self.connectionFinishedSignal.emit) self.helper.cf.disconnected.add_callback(self.disconnectedSignal.emit) self._input_updated_signal.connect(self.updateInputControl) self.helper.inputDeviceReader.input_updated.add_callback( self._input_updated_signal.emit) self._rp_trim_updated_signal.connect(self.calUpdateFromInput) self.helper.inputDeviceReader.rp_trim_updated.add_callback( self._rp_trim_updated_signal.emit) self._emergency_stop_updated_signal.connect(self.updateEmergencyStop) self.helper.inputDeviceReader.emergency_stop_updated.add_callback( self._emergency_stop_updated_signal.emit) self.helper.inputDeviceReader.heighthold_input_updated.add_callback( self._heighthold_input_updated_signal.emit) self._heighthold_input_updated_signal.connect( self._heighthold_input_updated) self.helper.inputDeviceReader.hover_input_updated.add_callback( self._hover_input_updated_signal.emit) self._hover_input_updated_signal.connect(self._hover_input_updated) self.helper.inputDeviceReader.assisted_control_updated.add_callback( self._assisted_control_updated_signal.emit) self._assisted_control_updated_signal.connect( self._assisted_control_updated) self._imu_data_signal.connect(self._imu_data_received) self._baro_data_signal.connect(self._baro_data_received) self._motor_data_signal.connect(self._motor_data_received) self._log_error_signal.connect(self._logging_error) # PlotWidget Stuff self._plot = PlotWidget(fps=30) # Check if we could find the PyQtImport. If not, then # set this tab as disabled self.enabled = self._plot.can_enable self._model = LogConfigModel() self.dataSelector.setModel(self._model) self.plotLayout.addWidget(self._plot) self._log_data_signal.connect(self._log_data_received) self._plotter_log_error_signal.connect(self._plotter_logging_error) if self.enabled: self._disconnected_signal.connect(self._disconnected) self.helper.cf.disconnected.add_callback( self._disconnected_signal.emit) self._connected_signal.connect(self._connected) self.helper.cf.connected.add_callback(self._connected_signal.emit) self.helper.cf.log.block_added_cb.add_callback(self._config_added) self.dataSelector.currentIndexChanged.connect( self._selection_changed) self._previous_config = None self._started_previous = False self.targetCalRoll.valueChanged.connect(self._trim_roll_changed) self.inputTypeComboBox.currentIndexChanged.connect( self.inputtypeChange) self.stepHeightCombo.valueChanged.connect(self._step_height_changed) self.frequencyCombo.valueChanged.connect(self._sine_frequency_changed) self.referenceHeightCheckbox.toggled.connect( lambda: self._use_ref_input(self.referenceHeightCheckbox.isChecked( ))) self.targetCalPitch.valueChanged.connect(self._trim_pitch_changed) self.updateGainsBtn.clicked.connect(self._controller_gain_changed) self.k1Combo.valueChanged.connect(self._k123_gain_changed) self.k2Combo.valueChanged.connect(self._k123_gain_changed) self.k3Combo.valueChanged.connect(self._k123_gain_changed) # self.maxAngle.valueChanged.connect(self.maxAngleChanged) # self.maxYawRate.valueChanged.connect(self.maxYawRateChanged) self.uiSetupReadySignal.connect(self.uiSetupReady) self.clientXModeCheckbox.toggled.connect(self.changeXmode) self.isInCrazyFlightmode = False self.uiSetupReady() self._ledring_nbr_effects = 0 self.helper.cf.param.add_update_callback( group="imu_sensors", cb=self._set_available_sensors) self.helper.cf.param.all_updated.add_callback(self._all_params_updated) self.logBaro = None self.logAltHold = None self.ai = AttitudeIndicator() self.verticalLayout_2.addWidget(self.ai) self.splitter.setSizes([1000, 1]) self.targetCalPitch.setValue(Config().get("trim_pitch")) self.targetCalRoll.setValue(Config().get("trim_roll")) self.helper.inputDeviceReader.alt1_updated.add_callback( self.alt1_updated) self.helper.inputDeviceReader.alt2_updated.add_callback( self.alt2_updated) self._tf_state = 0 self._ring_effect = 0