1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-20 10:54:14 +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:
edouard 2011-02-25 21:17:07 +00:00 committed by edouard
parent 09786b763f
commit 495445c3a5
3 changed files with 159 additions and 4 deletions

View File

@ -53,9 +53,27 @@ ConfigStabilizationWidget::ConfigStabilizationWidget(QWidget *parent) : ConfigTa
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.
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
*****************************/
@ -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();
}

View File

@ -34,7 +34,7 @@
#include "uavobject.h"
#include "stabilizationsettings.h"
#include <QtGui/QWidget>
#include <QList>
#include <QTimer>
class ConfigStabilizationWidget: public ConfigTaskWidget
@ -48,13 +48,32 @@ public:
private:
Ui_StabilizationWidget *m_stabilization;
StabilizationSettings* stabSettings;
QTimer updateTimer;
private slots:
void requestStabilizationUpdate();
void sendStabilizationUpdate();
void saveStabilizationUpdate();
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);
};

View File

@ -248,6 +248,9 @@
<property name="decimals">
<number>6</number>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
</widget>
</item>
<item row="2" column="2">
@ -255,6 +258,9 @@
<property name="decimals">
<number>6</number>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
</widget>
</item>
<item row="3" column="2">
@ -262,6 +268,9 @@
<property name="decimals">
<number>6</number>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
</widget>
</item>
<item row="1" column="3">
@ -269,6 +278,9 @@
<property name="decimals">
<number>6</number>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
</widget>
</item>
<item row="2" column="3">
@ -276,6 +288,9 @@
<property name="decimals">
<number>6</number>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
</widget>
</item>
<item row="3" column="3">
@ -283,6 +298,9 @@
<property name="decimals">
<number>6</number>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
</widget>
</item>
<item row="1" column="4">
@ -290,6 +308,9 @@
<property name="decimals">
<number>6</number>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
</widget>
</item>
<item row="2" column="4">
@ -297,6 +318,9 @@
<property name="decimals">
<number>6</number>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
</widget>
</item>
<item row="3" column="4">
@ -304,6 +328,9 @@
<property name="decimals">
<number>6</number>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
</widget>
</item>
<item row="0" column="2">