From 3ea976c8c05a07b102a8a202c9c8dfe77c5b7f55 Mon Sep 17 00:00:00 2001 From: rhunt <rhunt@iastate.edu> Date: Mon, 21 Mar 2022 00:31:31 +0100 Subject: [PATCH] send setpoint added --- groundStation/gui/MicroCART/MicroCart.cflags | 1 + groundStation/gui/MicroCART/MicroCart.config | 2 + groundStation/gui/MicroCART/MicroCart.creator | 1 + .../gui/MicroCART/MicroCart.cxxflags | 1 + groundStation/gui/MicroCART/MicroCart.files | 38 ++ .../gui/MicroCART/MicroCart.includes | 1 + .../gui/MicroCART/crazyflieworker.cpp | 1 + groundStation/gui/MicroCART/crazyflieworker.h | 5 +- groundStation/gui/MicroCART/mainwindow.cpp | 90 ++++- groundStation/gui/MicroCART/mainwindow.h | 14 +- groundStation/gui/MicroCART/mainwindow.ui | 330 ++++++------------ 11 files changed, 246 insertions(+), 238 deletions(-) create mode 100644 groundStation/gui/MicroCART/MicroCart.cflags create mode 100644 groundStation/gui/MicroCART/MicroCart.config create mode 100644 groundStation/gui/MicroCART/MicroCart.creator create mode 100644 groundStation/gui/MicroCART/MicroCart.cxxflags create mode 100644 groundStation/gui/MicroCART/MicroCart.files create mode 100644 groundStation/gui/MicroCART/MicroCart.includes diff --git a/groundStation/gui/MicroCART/MicroCart.cflags b/groundStation/gui/MicroCART/MicroCart.cflags new file mode 100644 index 000000000..68d516530 --- /dev/null +++ b/groundStation/gui/MicroCART/MicroCart.cflags @@ -0,0 +1 @@ +-std=c17 \ No newline at end of file diff --git a/groundStation/gui/MicroCART/MicroCart.config b/groundStation/gui/MicroCART/MicroCart.config new file mode 100644 index 000000000..e0284f425 --- /dev/null +++ b/groundStation/gui/MicroCART/MicroCart.config @@ -0,0 +1,2 @@ +// Add predefined macros for your project here. For example: +// #define THE_ANSWER 42 diff --git a/groundStation/gui/MicroCART/MicroCart.creator b/groundStation/gui/MicroCART/MicroCart.creator new file mode 100644 index 000000000..e94cbbd30 --- /dev/null +++ b/groundStation/gui/MicroCART/MicroCart.creator @@ -0,0 +1 @@ +[General] diff --git a/groundStation/gui/MicroCART/MicroCart.cxxflags b/groundStation/gui/MicroCART/MicroCart.cxxflags new file mode 100644 index 000000000..6435dfce2 --- /dev/null +++ b/groundStation/gui/MicroCART/MicroCart.cxxflags @@ -0,0 +1 @@ +-std=c++17 \ No newline at end of file diff --git a/groundStation/gui/MicroCART/MicroCart.files b/groundStation/gui/MicroCART/MicroCart.files new file mode 100644 index 000000000..b4d086dd0 --- /dev/null +++ b/groundStation/gui/MicroCART/MicroCart.files @@ -0,0 +1,38 @@ +MicroCART +MicroCART.pro +README.md +controlworker.cpp +controlworker.h +crazyflieworker.cpp +crazyflieworker.h +gridlines.gif +main.cpp +mainwindow.cpp +mainwindow.h +mainwindow.ui +moc_controlworker.cpp +moc_crazyflieworker.cpp +moc_mainwindow.cpp +moc_predefs.h +moc_qFlightInstruments.cpp +moc_qattitudeindicator.cpp +moc_qcustomplot.cpp +moc_quaditem.cpp +moc_slotprocess.cpp +moc_trackerworker.cpp +qFlightInstruments.cpp +qFlightInstruments.h +qcustomplot.cpp +qcustomplot.h +qrc_resources.cpp +quad.png +quaditem.cpp +quaditem.h +resources.qrc +setpoint.cpp +setpoint.h +slotprocess.cpp +slotprocess.h +trackerworker.cpp +trackerworker.h +ui_mainwindow.h diff --git a/groundStation/gui/MicroCART/MicroCart.includes b/groundStation/gui/MicroCART/MicroCart.includes new file mode 100644 index 000000000..9c558e357 --- /dev/null +++ b/groundStation/gui/MicroCART/MicroCart.includes @@ -0,0 +1 @@ +. diff --git a/groundStation/gui/MicroCART/crazyflieworker.cpp b/groundStation/gui/MicroCART/crazyflieworker.cpp index 6e5be8620..d51f2ce76 100644 --- a/groundStation/gui/MicroCART/crazyflieworker.cpp +++ b/groundStation/gui/MicroCART/crazyflieworker.cpp @@ -1,4 +1,5 @@ #include "crazyflieworker.h" +#include <iostream> CrazyflieWorker::CrazyflieWorker(QObject *parent) : QObject(parent) { diff --git a/groundStation/gui/MicroCART/crazyflieworker.h b/groundStation/gui/MicroCART/crazyflieworker.h index 8b5ae498e..f22f24135 100644 --- a/groundStation/gui/MicroCART/crazyflieworker.h +++ b/groundStation/gui/MicroCART/crazyflieworker.h @@ -20,8 +20,7 @@ class CrazyflieWorker : public QObject public: explicit CrazyflieWorker(QObject *parent = nullptr); ~CrazyflieWorker(); - void setCurrAttSetpoint(float roll, float pitch, float yaw, float throttle); - void setCurrAttRateSetpoint(float rollRate, float pitchRate, float yawRate, float throttleRate); + signals: void gotParamValue(QString paramName, float value); @@ -35,6 +34,8 @@ public slots: void sendAttSetpoint(); void sendAttRateSetpoint(); void getParamValue(QString paramName); + void setCurrAttSetpoint(float roll, float pitch, float yaw, float throttle); + void setCurrAttRateSetpoint(float rollRate, float pitchRate, float yawRate, float throttleRate); private: struct backend_conn * conn; diff --git a/groundStation/gui/MicroCART/mainwindow.cpp b/groundStation/gui/MicroCART/mainwindow.cpp index d62956482..26cf536a5 100644 --- a/groundStation/gui/MicroCART/mainwindow.cpp +++ b/groundStation/gui/MicroCART/mainwindow.cpp @@ -13,6 +13,7 @@ #include "trackerworker.h" #include "controlworker.h" +#include "crazyflieworker.h" #include "quaditem.h" #include "slotprocess.h" #include "qFlightInstruments.h" @@ -24,11 +25,13 @@ MainWindow::MainWindow(QWidget *parent) : ui(new Ui::MainWindow), setpointList(new QStandardItemModel(this)), nextSpTimer(new QTimer(this)), - sp_x(0.0f), - sp_y(0.0f), - sp_z(0.0f), + sp_roll(0.0f), + sp_pitch(0.0f), + sp_yaw(0.0f), + sp_thrust(0.0f), trackerTimer(new QTimer(this)), workerStartTimer(new QTimer(this)), + crazyflieTimer(new QTimer(this)), backendProcess(new QProcess(this)), matlabProcess(new QProcess(this)), connectedWorkers(0) @@ -41,7 +44,7 @@ MainWindow::MainWindow(QWidget *parent) : posScene->addItem(posIndicator); QGraphicsScene *attScene = new QGraphicsScene(this); - ui->attView->setScene(attScene); + //ui->attView->setScene(attScene); QADI * attIndicator = new QADI(); attScene->addWidget(attIndicator); @@ -75,6 +78,21 @@ MainWindow::MainWindow(QWidget *parent) : ControlWorker * controlWorker = new ControlWorker(); controlWorker->moveToThread(cwThread); + /*Create worker for the crazyflie and moves it to new thread*/ + QThread * crazyflieThread = new QThread(this); + CrazyflieWorker * crazyflieWorker = new CrazyflieWorker(); + controlWorker->moveToThread(crazyflieThread); + + /*sgnals from crazyflie worker*/ + + /*signals to crazyflie worker*/ + connect(this, SIGNAL (rateSetpointSignal(float, float, float, float)), crazyflieWorker, SLOT (setCurrAttSetpoint(float, float, float, float))); + connect(this, SIGNAL (angleSetpointSignal(float, float, float, float)), crazyflieWorker, SLOT (setCurrAttRateSetpoint(float, float, float, float))); + //dont knwo if i need next line + crazyflieTimer->setSingleShot(true); + connect(crazyflieTimer, SIGNAL(timeout()), this, SLOT (on_stopSetpointButton_clicked())); + + /* Connect signals from control worker */ connect(controlWorker, SIGNAL (gotNodes(QStringList)), this, SLOT (newNodes(QStringList))); connect(controlWorker, SIGNAL (gotParams(QStringList)), this, SLOT (newParams(QStringList))); @@ -94,10 +112,13 @@ MainWindow::MainWindow(QWidget *parent) : /* Connect and disconnect from backend when signals emitted */ connect(workerStartTimer, SIGNAL (timeout()), trackerWorker, SLOT (connectBackend())); connect(workerStartTimer, SIGNAL (timeout()), controlWorker, SLOT (connectBackend())); + connect(workerStartTimer, SIGNAL (timeout()), crazyflieWorker, SLOT (connectBackend())); connect(this, SIGNAL (connectWorkers()), trackerWorker, SLOT (connectBackend())); connect(this, SIGNAL (connectWorkers()), controlWorker, SLOT (connectBackend())); + connect(this, SIGNAL (connectWorkers()), crazyflieWorker, SLOT (connectBackend())); connect(this, SIGNAL (disconnectWorkers()), trackerWorker, SLOT (disconnectBackend())); connect(this, SIGNAL (disconnectWorkers()), controlWorker, SLOT (disconnectBackend())); + connect(this, SIGNAL (disconnectWorkers()), crazyflieWorker, SLOT (disconnectBackend())); connect(backendProcess, SIGNAL (started()), this, SLOT (backendStarted())); connect(backendProcess, SIGNAL (errorOccurred(QProcess::ProcessError)), this, SLOT (backendError(QProcess::ProcessError))); @@ -111,6 +132,9 @@ MainWindow::MainWindow(QWidget *parent) : connect(trackerWorker, SIGNAL (connected()), this, SLOT (workerConnected())); connect(trackerWorker, SIGNAL (disconnected()), this, SLOT (workerDisconnected())); + connect(crazyflieWorker, SIGNAL (connected()), this, SLOT (workerConnected())); + connect(crazyflieWorker, SIGNAL (disconnected()), this, SLOT (workerDisconnected())); + /* Connect refresh button and refresh timer to tracker worker */ connect(trackerTimer, SIGNAL(timeout()), this, SLOT(updatePosAtt())); // connect(ui->pbRefresh, SIGNAL (clicked()), this, SLOT (updatePosAtt())); @@ -125,6 +149,7 @@ MainWindow::MainWindow(QWidget *parent) : trackerTimer->start(100); workerThread->start(); cwThread->start(); + crazyflieThread->start(); matlabProcess->start(); /* Connect the setpointlist to the model */ @@ -178,11 +203,11 @@ void MainWindow::updateTracker(float x, float y, float z, float p, float r, floa // ui->xActual->setText(QString::number(x)); // ui->yActual->setText(QString::number(y)); // ui->zActual->setText(QString::number(z)); - ui->pActual->setText(QString::number(p)); - ui->rActual->setText(QString::number(r)); - ui->yActual->setText(QString::number(yaw)); + ui->currPitchActual->setText(QString::number(p)); + ui->currRollActual->setText(QString::number(r)); + ui->currYawActual->setText(QString::number(yaw)); - float dist = sqrt(pow(x - sp_x, 2.0) + pow(y - sp_y, 2.0) + pow(z - sp_z, 2.0)); + //float dist = sqrt(pow(x - sp_x, 2.0) + pow(y - sp_y, 2.0) + pow(z - sp_z, 2.0)); // ui->dist->setText(QString::number(dist)); @@ -399,8 +424,10 @@ void MainWindow::on_paramValue_returnPressed() // ui->paramValue->text().toFloat())); } + void MainWindow::sendSetpoints() { + // if (ui->sendX->isChecked()) { // sp_x = ui->xSetpoint->text().toFloat(); // emit (setParamValue(ui->xSetpointSelect->currentText(), @@ -596,3 +623,50 @@ void MainWindow::on_yawSetpoint_returnPressed() // blockDefs[BLOCK_CONSTANT]->param_names[0], // ui->yawSetpoint->text().toFloat())); } + +void MainWindow::on_applySetpointButton_clicked() +{ + sp_roll = ui->rollSetpointBox->text().toFloat(); + sp_pitch = ui->pitchSetpointBox->text().toFloat(); + sp_yaw = ui->yawSetpointBox->text().toFloat(); + sp_thrust = ui->thrustSetpointBox->text().toFloat(); + + crazyflieTimer -> start(10000); + + //testing print statements + std::cout << "roll: " << sp_roll << std::endl; + std::cout << "pitch: " << sp_pitch << std::endl; + std::cout << "yaw: " << sp_yaw << std::endl; + + if(ui->angleRadioButton->isCheckable()) { + //send as angle setpoint + emit(angleSetpointSignal(sp_roll, sp_pitch, sp_yaw, sp_thrust)); + } + else if (ui->rateRadioButton->isCheckable()) { + //send as rate setpoint + emit(rateSetpointSignal(sp_roll, sp_pitch, sp_yaw, sp_thrust)); + } + + +} + +void MainWindow::on_stopSetpointButton_clicked() +{ + sp_roll = 0.0; + sp_pitch = 0.0; + sp_yaw = 0.0; + sp_thrust = 0.0; + //debug prints + std::cout << "roll: " << sp_roll << std::endl; + std::cout << "pitch: " << sp_pitch << std::endl; + std::cout << "yaw: " << sp_yaw << std::endl; + + if(ui->angleRadioButton->isCheckable()) { + //send as angle setpoint + emit(angleSetpointSignal(sp_roll, sp_pitch, sp_yaw, sp_thrust)); + } + else if (ui->rateRadioButton->isCheckable()) { + //send as rate setpoint + emit(rateSetpointSignal(sp_roll, sp_pitch, sp_yaw, sp_thrust)); + } +} diff --git a/groundStation/gui/MicroCART/mainwindow.h b/groundStation/gui/MicroCART/mainwindow.h index 4e24931aa..194eaa032 100644 --- a/groundStation/gui/MicroCART/mainwindow.h +++ b/groundStation/gui/MicroCART/mainwindow.h @@ -26,6 +26,8 @@ signals: void getNodeOutput(QString node); void setParamValue(QString node, QString param, float value); void getPosAttFromBackend(); + void rateSetpointSignal(float roll, float pitch, float yaw, float throttle); + void angleSetpointSignal(float roll, float pitch, float yaw, float throttle); private slots: void on_pbStart_clicked(); @@ -91,15 +93,21 @@ private slots: void workerConnected(); void workerDisconnected(); + void on_applySetpointButton_clicked(); + + void on_stopSetpointButton_clicked(); + private: Ui::MainWindow *ui; QStandardItemModel * setpointList; QTimer * nextSpTimer; - float sp_x; - float sp_y; - float sp_z; + float sp_roll; + float sp_pitch; + float sp_yaw; + float sp_thrust; QTimer * trackerTimer; QTimer * workerStartTimer; + QTimer * crazyflieTimer; QProcess * backendProcess; QProcess * matlabProcess; int connectedWorkers; diff --git a/groundStation/gui/MicroCART/mainwindow.ui b/groundStation/gui/MicroCART/mainwindow.ui index ceea28e08..b76c0b0ed 100644 --- a/groundStation/gui/MicroCART/mainwindow.ui +++ b/groundStation/gui/MicroCART/mainwindow.ui @@ -2,6 +2,9 @@ <ui version="4.0"> <class>MainWindow</class> <widget class="QMainWindow" name="MainWindow"> + <property name="enabled"> + <bool>true</bool> + </property> <property name="geometry"> <rect> <x>0</x> @@ -10,6 +13,12 @@ <height>1034</height> </rect> </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="windowTitle"> <string>MainWindow</string> </property> @@ -17,8 +26,14 @@ <layout class="QVBoxLayout" name="verticalLayout_1"> <item> <widget class="QTabWidget" name="tabWidget"> + <property name="maximumSize"> + <size> + <width>16777215</width> + <height>1677</height> + </size> + </property> <property name="currentIndex"> - <number>3</number> + <number>4</number> </property> <widget class="QWidget" name="backend"> <attribute name="title"> @@ -148,7 +163,7 @@ </sizepolicy> </property> <property name="text"> - <string>Send Position</string> + <string>Send Setpoint</string> </property> </widget> </item> @@ -158,16 +173,16 @@ <enum>QFormLayout::ExpandingFieldsGrow</enum> </property> <item row="0" column="0"> - <widget class="QLabel" name="pLabel"> + <widget class="QLabel" name="pitchLabel"> <property name="text"> <string>Pitch</string> </property> </widget> </item> <item row="0" column="1"> - <widget class="QLineEdit" name="pActual"> + <widget class="QLineEdit" name="pitchSetpointBox"> <property name="enabled"> - <bool>false</bool> + <bool>true</bool> </property> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> @@ -178,16 +193,16 @@ </widget> </item> <item row="1" column="0"> - <widget class="QLabel" name="rLabel"> + <widget class="QLabel" name="rollLabel"> <property name="text"> <string>Roll</string> </property> </widget> </item> <item row="1" column="1"> - <widget class="QLineEdit" name="rActual"> + <widget class="QLineEdit" name="rollSetpointBox"> <property name="enabled"> - <bool>false</bool> + <bool>true</bool> </property> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> @@ -198,16 +213,16 @@ </widget> </item> <item row="2" column="0"> - <widget class="QLabel" name="yLabel"> + <widget class="QLabel" name="yawLabel"> <property name="text"> <string>Yaw</string> </property> </widget> </item> <item row="2" column="1"> - <widget class="QLineEdit" name="yActual"> + <widget class="QLineEdit" name="yawSetpointBox"> <property name="enabled"> - <bool>false</bool> + <bool>true</bool> </property> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> @@ -217,51 +232,17 @@ </property> </widget> </item> - </layout> - </item> - <item> - <widget class="QPushButton" name="pbActualToWaypoint"> - <property name="text"> - <string>Send</string> - </property> - </widget> - </item> - <item> - <widget class="Line" name="line_6"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="label_2"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Send Rate</string> - </property> - </widget> - </item> - <item> - <layout class="QFormLayout" name="formLayout"> - <property name="fieldGrowthPolicy"> - <enum>QFormLayout::ExpandingFieldsGrow</enum> - </property> - <item row="0" column="0"> - <widget class="QLabel" name="pRateLabel"> + <item row="3" column="0"> + <widget class="QLabel" name="thrustlabel"> <property name="text"> - <string>Pitch Rate</string> + <string>Thrust</string> </property> </widget> </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="pRateActual"> + <item row="3" column="1"> + <widget class="QLineEdit" name="thrustSetpointBox"> <property name="enabled"> - <bool>false</bool> + <bool>true</bool> </property> <property name="sizePolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> @@ -271,74 +252,48 @@ </property> </widget> </item> - <item row="1" column="0"> - <widget class="QLabel" name="rRateLabel"> + <item row="4" column="0"> + <widget class="QRadioButton" name="angleRadioButton"> <property name="text"> - <string>Roll Rate</string> + <string>Angle</string> </property> </widget> </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="rRateActual"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="yRateLabel"> + <item row="4" column="1"> + <widget class="QRadioButton" name="rateRadioButton"> <property name="text"> - <string>Yaw Rate</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLineEdit" name="yRateActual"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> + <string>Rate</string> </property> </widget> </item> </layout> </item> <item> - <widget class="QPushButton" name="pbActualToSetpoint"> + <widget class="QPushButton" name="applySetpointButton"> <property name="text"> - <string>Send</string> + <string>Apply</string> </property> </widget> </item> <item> - <widget class="Line" name="line_7"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> + <widget class="QPushButton" name="stopSetpointButton"> + <property name="text"> + <string>Stop</string> </property> </widget> </item> <item> - <widget class="QLabel" name="label_3"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> </property> - <property name="text"> - <string>Send Thrust</string> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> </property> - </widget> + </spacer> </item> <item> <layout class="QFormLayout" name="formLayout"> @@ -346,177 +301,98 @@ <enum>QFormLayout::ExpandingFieldsGrow</enum> </property> <item row="0" column="0"> - <widget class="QLabel" name="thrustLabel"> + <widget class="QLabel" name="tsLabel"> <property name="text"> - <string>Thrust</string> + <string>TS: </string> </property> </widget> </item> <item row="0" column="1"> - <widget class="QLineEdit" name="thrustActual"> - <property name="enabled"> - <bool>false</bool> + <widget class="QLabel" name="tsActual"> + <property name="text"> + <string>N/A</string> </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="currRollLabel"> + <property name="text"> + <string>Current Roll: </string> </property> </widget> </item> - </layout> - </item> - <item> - <widget class="QPushButton" name="sendThrustButton"> - <property name="text"> - <string>To Waypoint</string> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="label_3"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Send Thrust</string> - </property> - </widget> - </item> - <item> - <layout class="QFormLayout" name="formLayout"> - <property name="fieldGrowthPolicy"> - <enum>QFormLayout::ExpandingFieldsGrow</enum> - </property> - <item row="0" column="0"> - <widget class="QLabel" name="thrustLabel"> + <item row="1" column="1"> + <widget class="QLabel" name="currRollActual"> <property name="text"> - <string>Thrust</string> + <string>N/A</string> </property> </widget> </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="thrustActual"> - <property name="enabled"> - <bool>false</bool> + <item row="2" column="0"> + <widget class="QLabel" name="currPitchLabel"> + <property name="text"> + <string>Current Pitch: </string> </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> + </widget> + </item> + <item row="2" column="1"> + <widget class="QLabel" name="currPitchActual"> + <property name="text"> + <string>N/A</string> </property> </widget> </item> - </layout> - </item> - <item> - <widget class="QPushButton" name="sendThrustButton"> - <property name="text"> - <string>Send</string> - </property> - </widget> - </item> - <item> - <widget class="Line" name="line_7"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="label_4"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Current Position</string> - </property> - </widget> - </item> - <item> - <widget class="Line" name="line_7"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="label_4"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Current Position</string> - </property> - </widget> - </item> - <item> - <layout class="QFormLayout" name="formLayout"> - <property name="fieldGrowthPolicy"> - <enum>QFormLayout::ExpandingFieldsGrow</enum> - </property> - <item row="0" column="0"> - <widget class="QLabel" name="tsLabel"> + <item row="3" column="0"> + <widget class="QLabel" name="currYawLabel"> <property name="text"> - <string>TS: </string> + <string>Current Yaw: </string> </property> </widget> </item> - <item row="0" column="1"> - <widget class="QLabel" name="tsActual"> + <item row="3" column="1"> + <widget class="QLabel" name="currYawActual"> <property name="text"> <string>N/A</string> </property> </widget> </item> - <item row="1" column="0"> - <widget class="QLabel" name="currRLabel"> + <item row="4" column="0"> + <widget class="QLabel" name="currRoleRateLabel"> <property name="text"> - <string>Current Roll: </string> + <string>Current Roll Rate:</string> </property> </widget> </item> - <item row="1" column="1"> - <widget class="QLabel" name="currRActual"> - <property name="text"> + <item row="4" column="1"> + <widget class="QLabel" name="currRollRateActual"> + <property name="text"> <string>N/A</string> </property> </widget> </item> - <item row="2" column="0"> - <widget class="QLabel" name="currPLabel"> + <item row="5" column="0"> + <widget class="QLabel" name="currPitchRateLabel"> <property name="text"> - <string>Current Pitch: </string> + <string>Current Pitch Rate:</string> </property> </widget> </item> - <item row="2" column="1"> - <widget class="QLabel" name="currPActual"> + <item row="5" column="1"> + <widget class="QLabel" name="currPitchRateActual"> <property name="text"> <string>N/A</string> </property> </widget> </item> - <item row="3" column="0"> - <widget class="QLabel" name="currYLabel"> + <item row="6" column="0"> + <widget class="QLabel" name="currYawRateLabel"> <property name="text"> - <string>Current Yaw: </string> + <string>Current Yaw Rate:</string> </property> </widget> </item> - <item row="3" column="1"> - <widget class="QLabel" name="currYActual"> + <item row="6" column="1"> + <widget class="QLabel" name="currYawRateActual"> <property name="text"> <string>N/A</string> </property> @@ -538,9 +414,6 @@ </property> </widget> </item> - <item> - <widget class="QGraphicsView" name="attView"/> - </item> </layout> </item> </layout> @@ -557,7 +430,7 @@ <x>0</x> <y>0</y> <width>1186</width> - <height>28</height> + <height>22</height> </rect> </property> <widget class="QMenu" name="menuScripts"> @@ -578,6 +451,13 @@ <widget class="QStatusBar" name="statusBar"/> </widget> <layoutdefault spacing="6" margin="11"/> + <customwidgets> + <customwidget> + <class>QCustomPlot</class> + <extends>QWidget</extends> + <header>qcustomplot.h</header> + </customwidget> + </customwidgets> <resources/> <connections/> </ui> -- GitLab