mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-21 11:54:15 +01:00
OP-146 Stabilization configuration: can now update stab settings in real time on the airframe, and link roll/pitch for easier adjustment...
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@2880 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
parent
09786b763f
commit
495445c3a5
@ -53,9 +53,27 @@ ConfigStabilizationWidget::ConfigStabilizationWidget(QWidget *parent) : ConfigTa
|
|||||||
|
|
||||||
connect(parent, SIGNAL(autopilotConnected()),this, SLOT(requestStabilizationUpdate()));
|
connect(parent, SIGNAL(autopilotConnected()),this, SLOT(requestStabilizationUpdate()));
|
||||||
|
|
||||||
// TODO: create a timer to regularly send the object update in case
|
// Create a timer to regularly send the object update in case
|
||||||
// we want realtime updates.
|
// we want realtime updates.
|
||||||
|
connect(&updateTimer, SIGNAL(timeout()), this, SLOT(sendStabilizationUpdate()));
|
||||||
|
connect(m_stabilization->realTimeUpdates, SIGNAL(toggled(bool)), this, SLOT(realtimeUpdateToggle(bool)));
|
||||||
|
|
||||||
|
// Connect the updates of the stab values
|
||||||
|
connect(m_stabilization->rateRollKp, SIGNAL(valueChanged(double)), this, SLOT(updateRateRollKP(double)));
|
||||||
|
connect(m_stabilization->rateRollKi, SIGNAL(valueChanged(double)), this, SLOT(updateRateRollKI(double)));
|
||||||
|
connect(m_stabilization->rateRollILimit, SIGNAL(valueChanged(double)), this, SLOT(updateRateRollILimit(double)));
|
||||||
|
|
||||||
|
connect(m_stabilization->ratePitchKp, SIGNAL(valueChanged(double)), this, SLOT(updateRatePitchKP(double)));
|
||||||
|
connect(m_stabilization->ratePitchKi, SIGNAL(valueChanged(double)), this, SLOT(updateRatePitchKI(double)));
|
||||||
|
connect(m_stabilization->ratePitchILimit, SIGNAL(valueChanged(double)), this, SLOT(updateRatePitchILimit(double)));
|
||||||
|
|
||||||
|
connect(m_stabilization->rollKp, SIGNAL(valueChanged(double)), this, SLOT(updateRollKP(double)));
|
||||||
|
connect(m_stabilization->rollKi, SIGNAL(valueChanged(double)), this, SLOT(updateRollKI(double)));
|
||||||
|
connect(m_stabilization->rollILimit, SIGNAL(valueChanged(double)), this, SLOT(updateRollILimit(double)));
|
||||||
|
|
||||||
|
connect(m_stabilization->pitchKp, SIGNAL(valueChanged(double)), this, SLOT(updatePitchKP(double)));
|
||||||
|
connect(m_stabilization->pitchKi, SIGNAL(valueChanged(double)), this, SLOT(updatePitchKI(double)));
|
||||||
|
connect(m_stabilization->pitchILimit, SIGNAL(valueChanged(double)), this, SLOT(updatePitchILimit(double)));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,6 +83,93 @@ ConfigStabilizationWidget::~ConfigStabilizationWidget()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ConfigStabilizationWidget::updateRateRollKP(double val)
|
||||||
|
{
|
||||||
|
if (m_stabilization->linkRateRP->isChecked()) {
|
||||||
|
m_stabilization->ratePitchKp->setValue(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigStabilizationWidget::updateRateRollKI(double val)
|
||||||
|
{
|
||||||
|
if (m_stabilization->linkRateRP->isChecked()) {
|
||||||
|
m_stabilization->ratePitchKi->setValue(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigStabilizationWidget::updateRateRollILimit(double val)
|
||||||
|
{
|
||||||
|
if (m_stabilization->linkRateRP->isChecked()) {
|
||||||
|
m_stabilization->ratePitchILimit->setValue(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigStabilizationWidget::updateRatePitchKP(double val)
|
||||||
|
{
|
||||||
|
if (m_stabilization->linkRateRP->isChecked()) {
|
||||||
|
m_stabilization->rateRollKp->setValue(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigStabilizationWidget::updateRatePitchKI(double val)
|
||||||
|
{
|
||||||
|
if (m_stabilization->linkRateRP->isChecked()) {
|
||||||
|
m_stabilization->rateRollKi->setValue(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigStabilizationWidget::updateRatePitchILimit(double val)
|
||||||
|
{
|
||||||
|
if (m_stabilization->linkRateRP->isChecked()) {
|
||||||
|
m_stabilization->rateRollILimit->setValue(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigStabilizationWidget::updateRollKP(double val)
|
||||||
|
{
|
||||||
|
if (m_stabilization->linkAttitudeRP->isChecked()) {
|
||||||
|
m_stabilization->pitchKp->setValue(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigStabilizationWidget::updateRollKI(double val)
|
||||||
|
{
|
||||||
|
if (m_stabilization->linkAttitudeRP->isChecked()) {
|
||||||
|
m_stabilization->pitchKi->setValue(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigStabilizationWidget::updateRollILimit(double val)
|
||||||
|
{
|
||||||
|
if (m_stabilization->linkAttitudeRP->isChecked()) {
|
||||||
|
m_stabilization->pitchILimit->setValue(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigStabilizationWidget::updatePitchKP(double val)
|
||||||
|
{
|
||||||
|
if (m_stabilization->linkAttitudeRP->isChecked()) {
|
||||||
|
m_stabilization->rollKp->setValue(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigStabilizationWidget::updatePitchKI(double val)
|
||||||
|
{
|
||||||
|
if (m_stabilization->linkAttitudeRP->isChecked()) {
|
||||||
|
m_stabilization->rollKi->setValue(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigStabilizationWidget::updatePitchILimit(double val)
|
||||||
|
{
|
||||||
|
if (m_stabilization->linkAttitudeRP->isChecked()) {
|
||||||
|
m_stabilization->rollILimit->setValue(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*******************************
|
/*******************************
|
||||||
* Stabilization Settings
|
* Stabilization Settings
|
||||||
*****************************/
|
*****************************/
|
||||||
@ -160,6 +265,10 @@ void ConfigStabilizationWidget::resetStabilizationToDefaults()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigStabilizationWidget::parameterValueChanged(double value)
|
void ConfigStabilizationWidget::realtimeUpdateToggle(bool state)
|
||||||
{
|
{
|
||||||
|
if (state)
|
||||||
|
updateTimer.start(300);
|
||||||
|
else
|
||||||
|
updateTimer.stop();
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
#include "uavobject.h"
|
#include "uavobject.h"
|
||||||
#include "stabilizationsettings.h"
|
#include "stabilizationsettings.h"
|
||||||
#include <QtGui/QWidget>
|
#include <QtGui/QWidget>
|
||||||
#include <QList>
|
#include <QTimer>
|
||||||
|
|
||||||
|
|
||||||
class ConfigStabilizationWidget: public ConfigTaskWidget
|
class ConfigStabilizationWidget: public ConfigTaskWidget
|
||||||
@ -48,13 +48,32 @@ public:
|
|||||||
private:
|
private:
|
||||||
Ui_StabilizationWidget *m_stabilization;
|
Ui_StabilizationWidget *m_stabilization;
|
||||||
StabilizationSettings* stabSettings;
|
StabilizationSettings* stabSettings;
|
||||||
|
QTimer updateTimer;
|
||||||
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void requestStabilizationUpdate();
|
void requestStabilizationUpdate();
|
||||||
void sendStabilizationUpdate();
|
void sendStabilizationUpdate();
|
||||||
void saveStabilizationUpdate();
|
void saveStabilizationUpdate();
|
||||||
void resetStabilizationToDefaults();
|
void resetStabilizationToDefaults();
|
||||||
void parameterValueChanged(double value);
|
void realtimeUpdateToggle(bool);
|
||||||
|
|
||||||
|
void updateRateRollKP(double);
|
||||||
|
void updateRateRollKI(double);
|
||||||
|
void updateRateRollILimit(double);
|
||||||
|
|
||||||
|
void updateRatePitchKP(double);
|
||||||
|
void updateRatePitchKI(double);
|
||||||
|
void updateRatePitchILimit(double);
|
||||||
|
|
||||||
|
void updateRollKP(double);
|
||||||
|
void updateRollKI(double);
|
||||||
|
void updateRollILimit(double);
|
||||||
|
|
||||||
|
void updatePitchKP(double);
|
||||||
|
void updatePitchKI(double);
|
||||||
|
void updatePitchILimit(double);
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -248,6 +248,9 @@
|
|||||||
<property name="decimals">
|
<property name="decimals">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>0.100000000000000</double>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="2">
|
<item row="2" column="2">
|
||||||
@ -255,6 +258,9 @@
|
|||||||
<property name="decimals">
|
<property name="decimals">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>0.100000000000000</double>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="2">
|
<item row="3" column="2">
|
||||||
@ -262,6 +268,9 @@
|
|||||||
<property name="decimals">
|
<property name="decimals">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>0.100000000000000</double>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="3">
|
<item row="1" column="3">
|
||||||
@ -269,6 +278,9 @@
|
|||||||
<property name="decimals">
|
<property name="decimals">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>0.100000000000000</double>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="3">
|
<item row="2" column="3">
|
||||||
@ -276,6 +288,9 @@
|
|||||||
<property name="decimals">
|
<property name="decimals">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>0.100000000000000</double>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="3">
|
<item row="3" column="3">
|
||||||
@ -283,6 +298,9 @@
|
|||||||
<property name="decimals">
|
<property name="decimals">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>0.100000000000000</double>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="4">
|
<item row="1" column="4">
|
||||||
@ -290,6 +308,9 @@
|
|||||||
<property name="decimals">
|
<property name="decimals">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>0.100000000000000</double>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="4">
|
<item row="2" column="4">
|
||||||
@ -297,6 +318,9 @@
|
|||||||
<property name="decimals">
|
<property name="decimals">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>0.100000000000000</double>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="4">
|
<item row="3" column="4">
|
||||||
@ -304,6 +328,9 @@
|
|||||||
<property name="decimals">
|
<property name="decimals">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="singleStep">
|
||||||
|
<double>0.100000000000000</double>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="2">
|
<item row="0" column="2">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user