From 1bf19f54675d20fd779c047c43ff3a3f5fd48e67 Mon Sep 17 00:00:00 2001 From: Michael Carpenter Date: Wed, 10 Jul 2013 17:01:10 -0400 Subject: [PATCH] Implementation of ArduCoptor configuration screen --- src/ui/configuration/ArduCopterPidConfig.cc | 76 ++ src/ui/configuration/ArduCopterPidConfig.h | 6 +- src/ui/configuration/ArduCopterPidConfig.ui | 1033 ++++++++++++++++++- 3 files changed, 1112 insertions(+), 3 deletions(-) diff --git a/src/ui/configuration/ArduCopterPidConfig.cc b/src/ui/configuration/ArduCopterPidConfig.cc index 0a1dfc69a..e6e0498fb 100644 --- a/src/ui/configuration/ArduCopterPidConfig.cc +++ b/src/ui/configuration/ArduCopterPidConfig.cc @@ -3,8 +3,84 @@ ArduCopterPidConfig::ArduCopterPidConfig(QWidget *parent) : AP2ConfigWidget(parent) { ui.setupUi(this); + nameToBoxMap["STB_RLL_P"] = ui.stabilPitchPSpinBox; + nameToBoxMap["STB_PIT_P"] = ui.stabilRollPSpinBox; + nameToBoxMap["STB_YAW_P"] = ui.stabilYawPSpinBox; + nameToBoxMap["HLD_LAT_P"] = ui.loiterPidPSpinBox; + + nameToBoxMap["RATE_RLL_P"] = ui.rateRollPSpinBox; + nameToBoxMap["RATE_RLL_I"] = ui.rateRollISpinBox; + nameToBoxMap["RATE_RLL_D"] = ui.rateRollDSpinBox; + nameToBoxMap["RATE_RLL_IMAX"] = ui.rateRollIMAXSpinBox; + + nameToBoxMap["RATE_PIT_P"] = ui.ratePitchPSpinBox; + nameToBoxMap["RATE_PIT_I"] = ui.ratePitchISpinBox; + nameToBoxMap["RATE_PIT_D"] = ui.ratePitchDSpinBox; + nameToBoxMap["RATE_PIT_IMAX"] = ui.ratePitchIMAXSpinBox; + + nameToBoxMap["RATE_YAW_P"] = ui.rateYawPSpinBox; + nameToBoxMap["RATE_YAW_I"] = ui.rateYawISpinBox; + nameToBoxMap["RATE_YAW_D"] = ui.rateYawDSpinBox; + nameToBoxMap["RATE_YAW_IMAX"] = ui.rateYawIMAXSpinBox; + + nameToBoxMap["LOITER_LAT_P"] = ui.rateLoiterPSpinBox; + nameToBoxMap["LOITER_LAT_I"] = ui.rateLoiterISpinBox; + nameToBoxMap["LOITER_LAT_D"] = ui.rateLoiterDSpinBox; + nameToBoxMap["LOITER_LAT_IMAX"] = ui.rateLoiterIMAXSpinBox; + + nameToBoxMap["THR_ACCEL_P"] = ui.throttleAccelPSpinBox; + nameToBoxMap["THR_ACCEL_I"] = ui.throttleAccelISpinBox; + nameToBoxMap["THR_ACCEL_D"] = ui.throttleAccelDSpinBox; + nameToBoxMap["THR_ACCEL_IMAX"] = ui.throttleAccelIMAXSpinBox; + + nameToBoxMap["THR_RATE_P"] = ui.throttleRatePSpinBox; + nameToBoxMap["THR_RATE_D"] = ui.throttleDateDSpinBox; + + nameToBoxMap["THR_ALT_P"] = ui.altitudeHoldPSpinBox; + + nameToBoxMap["WPNAV_SPEED"] = ui.wpNavLoiterSpeedSpinBox; + nameToBoxMap["WPNAV_RADIUS"] = ui.wpNavRadiusSpinBox; + nameToBoxMap["WPNAV_SPEED_DN"] = ui.wpNavSpeedDownSpinBox; + nameToBoxMap["WPNAV_LOIT_SPEED"] = ui.wpNavSpeedSpinBox; + nameToBoxMap["WPNAV_SPEED_UP"] = ui.wpNavSpeedUpSpinBox; + + nameToBoxMap["TUNE_HIGH"] = ui.ch6MaxSpinBox; + nameToBoxMap["TUNE_LOW"] = ui.ch6MinSpinBox; + + connect(ui.writePushButton,SIGNAL(clicked()),this,SLOT(writeButtonClicked())); + connect(ui.refreshPushButton,SIGNAL(clicked()),this,SLOT(refreshButtonClicked())); } ArduCopterPidConfig::~ArduCopterPidConfig() { } +void ArduCopterPidConfig::parameterChanged(int uas, int component, QString parameterName, QVariant value) +{ + if (nameToBoxMap.contains(parameterName)) + { + nameToBoxMap[parameterName]->setValue(value.toDouble()); + } +} +void ArduCopterPidConfig::writeButtonClicked() +{ + if (!m_uas) + { + return; + } + for (QMap::const_iterator i=nameToBoxMap.constBegin();i!=nameToBoxMap.constEnd();i++) + { + m_uas->getParamManager()->setParameter(1,i.key(),i.value()->value()); + } +} + +void ArduCopterPidConfig::refreshButtonClicked() +{ + if (!m_uas) + { + return; + } + for (QMap::const_iterator i=nameToBoxMap.constBegin();i!=nameToBoxMap.constEnd();i++) + { + m_uas->getParamManager()->requestParameterUpdate(1,i.key()); + } +} diff --git a/src/ui/configuration/ArduCopterPidConfig.h b/src/ui/configuration/ArduCopterPidConfig.h index 339b8c472..b7b2b0735 100644 --- a/src/ui/configuration/ArduCopterPidConfig.h +++ b/src/ui/configuration/ArduCopterPidConfig.h @@ -13,8 +13,12 @@ class ArduCopterPidConfig : public AP2ConfigWidget public: explicit ArduCopterPidConfig(QWidget *parent = 0); ~ArduCopterPidConfig(); - +private slots: + void writeButtonClicked(); + void refreshButtonClicked(); + void parameterChanged(int uas, int component, QString parameterName, QVariant value); private: + QMap nameToBoxMap; Ui::ArduCopterPidConfig ui; }; diff --git a/src/ui/configuration/ArduCopterPidConfig.ui b/src/ui/configuration/ArduCopterPidConfig.ui index a472f6a8f..351ce51ed 100644 --- a/src/ui/configuration/ArduCopterPidConfig.ui +++ b/src/ui/configuration/ArduCopterPidConfig.ui @@ -6,8 +6,8 @@ 0 0 - 400 - 300 + 750 + 596 @@ -26,6 +26,1035 @@ <h2>ArduCopter Pids</h2> + + + + 120 + 540 + 75 + 23 + + + + Write Params + + + + + + 220 + 540 + 91 + 23 + + + + Refresh Params + + + + + + 10 + 70 + 695 + 401 + + + + + + + Rate Yaw + + + + + + + + + + P + + + + + + + I + + + + + + + D + + + + + + + INT_MAX + + + + + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + + + + + + + + Loiter PID + + + + + + + + + + P + + + + + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + + + + + + + + Rate Pitch + + + + + + + + + + P + + + + + + + I + + + + + + + D + + + + + + + INT_MAX + + + + + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + + + + + + + + Stabilize Roll + + + + + + + + + + P + + + + + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + + + + + + + + Stabilize Pitch + + + + + + + + + + P + + + + + + + + + + + 3 + + + 100.000000000000000 + + + + + + + + + + + + + + Rate Roll + + + + + + + + + + P + + + + + + + I + + + + + + + D + + + + + + + INT_MAX + + + + + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + + + + + + + + Altitude Hold + + + + + + + + + + P + + + + + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + + + + + + + + Stabilize Yaw + + + + + + + + + + P + + + + + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + + + + + + + + Rate Loiter + + + + + + + + + + P + + + + + + + I + + + + + + + D + + + + + + + INT_MAX + + + + + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + + + + + + + + Lock Pitch and Roll Values + + + + + + + + + + + Ch6 Opt + + + + + + + + + + + + + + Min + + + + + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + Max + + + + + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + + + + + Ch7 Opt + + + + + + + + + + + + + + Ch8 Opt + + + + + + + + + + + + + + Throttle Accel + + + + + + + + + + P + + + + + + + I + + + + + + + D + + + + + + + INT_MAX + + + + + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + Throttle Rate + + + + + + + + + + P + + + + + + + D + + + + + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + WPNav (cm's) + + + + + + + + + + Speed + + + + + + + Radius + + + + + + + Speed Up + + + + + + + speed Down + + + + + + + Loiter Speed + + + + + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + 3 + + + -10000.000000000000000 + + + 10000.000000000000000 + + + + + + + + + + + + -- 2.22.0