From a7bbb6f233c97ab96d45b25578f1c55dbbb9360f Mon Sep 17 00:00:00 2001 From: pixhawk Date: Fri, 4 Feb 2011 18:35:38 +0100 Subject: [PATCH] Last fixes to yaw angle displaying / representation --- src/uas/UAS.cc | 21 +++++++++++++++------ src/ui/HUD.cc | 7 ++++--- src/ui/MainWindow.cc | 6 +++--- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/uas/UAS.cc b/src/uas/UAS.cc index 061cdd5aa..d9adcee96 100644 --- a/src/uas/UAS.cc +++ b/src/uas/UAS.cc @@ -402,12 +402,21 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message) emit valueChanged(uasId, "yawspeed", "rad/s", attitude.yawspeed, time); // Emit in angles - emit valueChanged(uasId, "roll", "deg", (roll/M_PI)*180.0, time); - emit valueChanged(uasId, "pitch", "deg", (pitch/M_PI)*180.0, time); - emit valueChanged(uasId, "yaw", "deg", (yaw/M_PI)*180.0, time); - emit valueChanged(uasId, "rollspeed", "deg/s", (attitude.rollspeed/M_PI)*180.0, time); - emit valueChanged(uasId, "pitchspeed", "deg/s", (attitude.pitchspeed/M_PI)*180.0, time); - emit valueChanged(uasId, "yawspeed", "deg/s", (attitude.yawspeed/M_PI)*180.0, time); + + // Convert yaw angle to compass value + // in 0 - 360 deg range + float compass = (yaw/M_PI)*180.0+360.0f; + while (compass > 360.0f) + { + compass -= 360.0f; + } + + emit valueChanged(uasId, "roll deg", "deg", (roll/M_PI)*180.0, time); + emit valueChanged(uasId, "pitch deg", "deg", (pitch/M_PI)*180.0, time); + emit valueChanged(uasId, "yaw deg", "deg", compass, time); + emit valueChanged(uasId, "rollspeed d/s", "deg/s", (attitude.rollspeed/M_PI)*180.0, time); + emit valueChanged(uasId, "pitchspeed d/s", "deg/s", (attitude.pitchspeed/M_PI)*180.0, time); + emit valueChanged(uasId, "yawspeed d/s", "deg/s", (attitude.yawspeed/M_PI)*180.0, time); emit attitudeChanged(this, roll, pitch, yaw, time); emit attitudeSpeedChanged(uasId, attitude.rollspeed, attitude.pitchspeed, attitude.yawspeed, time); diff --git a/src/ui/HUD.cc b/src/ui/HUD.cc index f46f0453c..04d9abacf 100644 --- a/src/ui/HUD.cc +++ b/src/ui/HUD.cc @@ -805,9 +805,10 @@ void HUD::paintHUD() // const float yawDeg = ((values.value("yaw", 0.0f)/M_PI)*180.0f)+180.f; // YAW is in compass-human readable format, so 0 - 360deg. This is normal in aviation, not -180 - +180. - const float yawDeg = ((yawLP/M_PI)*180.0f)+180.0f; - yawAngle.sprintf("%03d", (int)yawDeg); - paintText(yawAngle, defaultColor, 3.5f, -3.7f, compassY+ 0.9f, &painter); + const float yawDeg = ((yawLP/M_PI)*180.0f)+180.0f+180.0f; + int yawCompass = static_cast(yawDeg) % 360; + yawAngle.sprintf("%03d", yawCompass); + paintText(yawAngle, defaultColor, 3.5f, -4.3f, compassY+ 0.97f, &painter); // CHANGE RATE STRIPS drawChangeRateStrip(-51.0f, -50.0f, 15.0f, -1.0f, 1.0f, -zSpeed, &painter); diff --git a/src/ui/MainWindow.cc b/src/ui/MainWindow.cc index cce5d8e4e..7a10249c4 100644 --- a/src/ui/MainWindow.cc +++ b/src/ui/MainWindow.cc @@ -255,12 +255,12 @@ void MainWindow::resizeEvent(QResizeEvent * event) QString MainWindow::getWindowStateKey() { - return QString::number(currentView)+"/windowstate"; + return QString::number(currentView)+"_windowstate"; } QString MainWindow::getWindowGeometryKey() { - return QString::number(currentView)+"/geometry"; + return QString::number(currentView)+"_geometry"; } void MainWindow::buildCustomWidget() @@ -912,7 +912,7 @@ void MainWindow::closeEvent(QCloseEvent *event) // Save the last current view in any case settings.setValue("CURRENT_VIEW", currentView); // Save the current window state, but only if a system is connected (else no real number of widgets would be present) - if (UASManager::instance()->getActiveUAS()) settings.setValue(getWindowStateKey(), saveState(QGC::applicationVersion())); + if (UASManager::instance()->getUASList().length() > 0) settings.setValue(getWindowStateKey(), saveState(QGC::applicationVersion())); // Save the current view only if a UAS is connected if (UASManager::instance()->getUASList().length() > 0) settings.setValue("CURRENT_VIEW_WITH_UAS_CONNECTED", currentView); settings.sync(); -- 2.22.0