mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-18 08:54:15 +01:00
OP-1384 gyro calibration will not zero revo board rotation anymore
This commit is contained in:
parent
0e1fd756ab
commit
4de8575fa9
@ -55,18 +55,23 @@ GyroBiasCalibrationModel::GyroBiasCalibrationModel(QObject *parent) :
|
|||||||
|
|
||||||
void GyroBiasCalibrationModel::start()
|
void GyroBiasCalibrationModel::start()
|
||||||
{
|
{
|
||||||
// Store and reset board rotation before calibration starts
|
// reset dirty state to forget previous unsaved runs
|
||||||
storeAndClearBoardRotation();
|
m_dirty = false;
|
||||||
|
|
||||||
|
// configure board for calibration
|
||||||
RevoCalibration::DataFields revoCalibrationData = revoCalibration->getData();
|
RevoCalibration::DataFields revoCalibrationData = revoCalibration->getData();
|
||||||
memento.revoCalibrationData = revoCalibrationData;
|
memento.revoCalibrationData = revoCalibrationData;
|
||||||
revoCalibrationData.BiasCorrectedRaw = RevoCalibration::BIASCORRECTEDRAW_FALSE;
|
revoCalibrationData.BiasCorrectedRaw = RevoCalibration::BIASCORRECTEDRAW_FALSE;
|
||||||
revoCalibration->setData(revoCalibrationData);
|
revoCalibration->setData(revoCalibrationData);
|
||||||
|
|
||||||
// Disable gyro bias correction while calibrating
|
|
||||||
AttitudeSettings::DataFields attitudeSettingsData = attitudeSettings->getData();
|
AttitudeSettings::DataFields attitudeSettingsData = attitudeSettings->getData();
|
||||||
memento.attitudeSettingsData = attitudeSettingsData;
|
memento.attitudeSettingsData = attitudeSettingsData;
|
||||||
|
// Disable gyro bias correction while calibrating
|
||||||
attitudeSettingsData.BiasCorrectGyro = AttitudeSettings::BIASCORRECTGYRO_FALSE;
|
attitudeSettingsData.BiasCorrectGyro = AttitudeSettings::BIASCORRECTGYRO_FALSE;
|
||||||
|
// Zero board rotation
|
||||||
|
attitudeSettingsData.BoardRotation[AttitudeSettings::BOARDROTATION_YAW] = 0;
|
||||||
|
attitudeSettingsData.BoardRotation[AttitudeSettings::BOARDROTATION_ROLL] = 0;
|
||||||
|
attitudeSettingsData.BoardRotation[AttitudeSettings::BOARDROTATION_PITCH] = 0;
|
||||||
attitudeSettings->setData(attitudeSettingsData);
|
attitudeSettings->setData(attitudeSettingsData);
|
||||||
|
|
||||||
UAVObject::Metadata gyroStateMetadata = gyroState->getMetadata();
|
UAVObject::Metadata gyroStateMetadata = gyroState->getMetadata();
|
||||||
@ -89,9 +94,6 @@ void GyroBiasCalibrationModel::start()
|
|||||||
gyro_state_accum_y.clear();
|
gyro_state_accum_y.clear();
|
||||||
gyro_state_accum_z.clear();
|
gyro_state_accum_z.clear();
|
||||||
|
|
||||||
// reset dirty state to forget previous unsaved runs
|
|
||||||
m_dirty = false;
|
|
||||||
|
|
||||||
started();
|
started();
|
||||||
progressChanged(0);
|
progressChanged(0);
|
||||||
displayVisualHelp(CALIBRATION_HELPER_PLANE_PREFIX + CALIBRATION_HELPER_IMAGE_NED);
|
displayVisualHelp(CALIBRATION_HELPER_PLANE_PREFIX + CALIBRATION_HELPER_IMAGE_NED);
|
||||||
@ -149,9 +151,6 @@ void GyroBiasCalibrationModel::getSample(UAVObject *obj)
|
|||||||
revoCalibration->setData(memento.revoCalibrationData);
|
revoCalibration->setData(memento.revoCalibrationData);
|
||||||
attitudeSettings->setData(memento.attitudeSettingsData);
|
attitudeSettings->setData(memento.attitudeSettingsData);
|
||||||
|
|
||||||
// Recall saved board rotation
|
|
||||||
recallBoardRotation();
|
|
||||||
|
|
||||||
stopped();
|
stopped();
|
||||||
displayInstructions(tr("Gyroscope calibration completed successfully."), WizardModel::Success);
|
displayInstructions(tr("Gyroscope calibration completed successfully."), WizardModel::Success);
|
||||||
displayVisualHelp(CALIBRATION_HELPER_IMAGE_EMPTY);
|
displayVisualHelp(CALIBRATION_HELPER_IMAGE_EMPTY);
|
||||||
|
@ -57,8 +57,7 @@ public:
|
|||||||
signals:
|
signals:
|
||||||
void started();
|
void started();
|
||||||
void stopped();
|
void stopped();
|
||||||
void storeAndClearBoardRotation();
|
|
||||||
void recallBoardRotation();
|
|
||||||
void progressChanged(int value);
|
void progressChanged(int value);
|
||||||
void displayVisualHelp(QString elementID);
|
void displayVisualHelp(QString elementID);
|
||||||
void displayInstructions(QString text, WizardModel::MessageType type = WizardModel::Info);
|
void displayInstructions(QString text, WizardModel::MessageType type = WizardModel::Info);
|
||||||
|
@ -157,8 +157,6 @@ ConfigRevoWidget::ConfigRevoWidget(QWidget *parent) :
|
|||||||
|
|
||||||
connect(m_gyroBiasCalibrationModel, SIGNAL(started()), this, SLOT(disableAllCalibrations()));
|
connect(m_gyroBiasCalibrationModel, SIGNAL(started()), this, SLOT(disableAllCalibrations()));
|
||||||
connect(m_gyroBiasCalibrationModel, SIGNAL(stopped()), this, SLOT(enableAllCalibrations()));
|
connect(m_gyroBiasCalibrationModel, SIGNAL(stopped()), this, SLOT(enableAllCalibrations()));
|
||||||
connect(m_gyroBiasCalibrationModel, SIGNAL(storeAndClearBoardRotation()), this, SLOT(storeAndClearBoardRotation()));
|
|
||||||
connect(m_gyroBiasCalibrationModel, SIGNAL(recallBoardRotation()), this, SLOT(recallBoardRotation()));
|
|
||||||
connect(m_gyroBiasCalibrationModel, SIGNAL(displayInstructions(QString, WizardModel::MessageType)),
|
connect(m_gyroBiasCalibrationModel, SIGNAL(displayInstructions(QString, WizardModel::MessageType)),
|
||||||
this, SLOT(addInstructions(QString, WizardModel::MessageType)));
|
this, SLOT(addInstructions(QString, WizardModel::MessageType)));
|
||||||
connect(m_gyroBiasCalibrationModel, SIGNAL(displayVisualHelp(QString)), this, SLOT(displayVisualHelp(QString)));
|
connect(m_gyroBiasCalibrationModel, SIGNAL(displayVisualHelp(QString)), this, SLOT(displayVisualHelp(QString)));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user