mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-01-29 14:52:12 +01:00
OP-975 Calibrating a single sensor doesn't mean reset the other...
This commit is contained in:
parent
6c0851769e
commit
1f0885dd4f
@ -435,8 +435,10 @@ void ConfigRevoWidget::doStartSixPointCalibration(bool calibrateAccel, bool cali
|
||||
Q_ASSERT(revoCalibration);
|
||||
Q_ASSERT(homeLocation);
|
||||
RevoCalibration::DataFields revoCalibrationData = revoCalibration->getData();
|
||||
savedSettings.revoCalibration = revoCalibration->getData();
|
||||
HomeLocation::DataFields homeLocationData = homeLocation->getData();
|
||||
AccelGyroSettings::DataFields accelGyroSettingsData = accelGyroSettings->getData();
|
||||
savedSettings.accelGyroSettings = accelGyroSettings->getData();
|
||||
|
||||
// check if Homelocation is set
|
||||
if (!homeLocationData.Set) {
|
||||
@ -721,14 +723,22 @@ void ConfigRevoWidget::computeScaleBias(bool mag, bool accel)
|
||||
accelGyroSettingsData.accel_bias[AccelGyroSettings::ACCEL_BIAS_Z];
|
||||
}
|
||||
if (good_calibration) {
|
||||
revoCalibration->setData(revoCalibrationData);
|
||||
accelGyroSettings->setData(accelGyroSettingsData);
|
||||
if(mag){
|
||||
revoCalibration->setData(revoCalibrationData);
|
||||
} else {
|
||||
revoCalibration->setData(savedSettings.revoCalibration);
|
||||
}
|
||||
|
||||
if(accel){
|
||||
accelGyroSettings->setData(accelGyroSettingsData);
|
||||
} else {
|
||||
accelGyroSettings->setData(savedSettings.accelGyroSettings);
|
||||
}
|
||||
m_ui->sixPointCalibInstructions->append("Computed sensor scale and bias...");
|
||||
} else {
|
||||
revoCalibrationData = revoCalibration->getData();
|
||||
accelGyroSettingsData = accelGyroSettings->getData();
|
||||
m_ui->sixPointCalibInstructions->append("Bad calibration. Please repeat.");
|
||||
}
|
||||
|
||||
m_ui->sixPointCalibInstructions->append("Bad calibration. Please repeat.");
|
||||
|
||||
position = -1; // set to run again
|
||||
}
|
||||
|
||||
|
@ -43,9 +43,13 @@
|
||||
#include "calibration/thermal/thermalcalibrationmodel.h"
|
||||
class Ui_Widget;
|
||||
|
||||
|
||||
class ConfigRevoWidget : public ConfigTaskWidget {
|
||||
Q_OBJECT
|
||||
|
||||
typedef struct {
|
||||
RevoCalibration::DataFields revoCalibration;
|
||||
AccelGyroSettings::DataFields accelGyroSettings;
|
||||
} SavedSettings;
|
||||
public:
|
||||
ConfigRevoWidget(QWidget *parent = 0);
|
||||
~ConfigRevoWidget();
|
||||
@ -56,6 +60,8 @@ private:
|
||||
// ! Computes the scale and bias of the mag based on collected data
|
||||
void computeScaleBias(bool mag, bool accel);
|
||||
|
||||
SavedSettings savedSettings;
|
||||
|
||||
OpenPilot::ThermalCalibrationModel *m_thermalCalibrationModel;
|
||||
Ui_RevoSensorsWidget *m_ui;
|
||||
QMutex sensorsUpdateLock;
|
||||
|
Loading…
x
Reference in New Issue
Block a user