Skip to content

Commit a4dfa85

Browse files
f5sohfilnet
authored andcommitted
Merged in f5soh/librepilot/LP-590_Gyro_calibration_boardleveltrim (pull request #505)
LP-590 Gyro/Accel calibration boardleveltrim Approved-by: Julian Lilov <jdl@abv.bg> Approved-by: Lalanne Laurent <f5soh@free.fr> Approved-by: Philippe Renon <philippe_renon@yahoo.fr>
2 parents 853a014 + 54b3080 commit a4dfa85

3 files changed

Lines changed: 29 additions & 16 deletions

File tree

ground/gcs/src/plugins/config/calibration/gyrobiascalibrationmodel.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,13 @@ void GyroBiasCalibrationModel::start()
6969
// Disable gyro bias correction while calibrating
7070
attitudeSettingsData.BiasCorrectGyro = AttitudeSettings::BIASCORRECTGYRO_FALSE;
7171
// Zero board rotation
72-
attitudeSettingsData.BoardRotation[AttitudeSettings::BOARDROTATION_YAW] = 0;
73-
attitudeSettingsData.BoardRotation[AttitudeSettings::BOARDROTATION_ROLL] = 0;
74-
attitudeSettingsData.BoardRotation[AttitudeSettings::BOARDROTATION_PITCH] = 0;
72+
attitudeSettingsData.BoardRotation[AttitudeSettings::BOARDROTATION_YAW] = 0;
73+
attitudeSettingsData.BoardRotation[AttitudeSettings::BOARDROTATION_ROLL] = 0;
74+
attitudeSettingsData.BoardRotation[AttitudeSettings::BOARDROTATION_PITCH] = 0;
75+
// Zero board level trim
76+
attitudeSettingsData.BoardLevelTrim[AttitudeSettings::BOARDLEVELTRIM_ROLL] = 0;
77+
attitudeSettingsData.BoardLevelTrim[AttitudeSettings::BOARDLEVELTRIM_PITCH] = 0;
78+
7579
attitudeSettings->setData(attitudeSettingsData);
7680

7781
UAVObject::Metadata gyroStateMetadata = gyroState->getMetadata();

ground/gcs/src/plugins/config/configrevowidget.cpp

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -238,19 +238,25 @@ void ConfigRevoWidget::storeAndClearBoardRotation()
238238
if (!isBoardRotationStored) {
239239
UAVObjectUpdaterHelper updateHelper;
240240

241-
// Store current board rotation
241+
// Store current board rotation and board level trim
242242
isBoardRotationStored = true;
243243
AttitudeSettings *attitudeSettings = AttitudeSettings::GetInstance(getObjectManager());
244244
Q_ASSERT(attitudeSettings);
245245
AttitudeSettings::DataFields data = attitudeSettings->getData();
246-
storedBoardRotation[AttitudeSettings::BOARDROTATION_YAW] = data.BoardRotation[AttitudeSettings::BOARDROTATION_YAW];
247-
storedBoardRotation[AttitudeSettings::BOARDROTATION_ROLL] = data.BoardRotation[AttitudeSettings::BOARDROTATION_ROLL];
248-
storedBoardRotation[AttitudeSettings::BOARDROTATION_PITCH] = data.BoardRotation[AttitudeSettings::BOARDROTATION_PITCH];
246+
storedBoardRotation[AttitudeSettings::BOARDROTATION_YAW] = data.BoardRotation[AttitudeSettings::BOARDROTATION_YAW];
247+
storedBoardRotation[AttitudeSettings::BOARDROTATION_ROLL] = data.BoardRotation[AttitudeSettings::BOARDROTATION_ROLL];
248+
storedBoardRotation[AttitudeSettings::BOARDROTATION_PITCH] = data.BoardRotation[AttitudeSettings::BOARDROTATION_PITCH];
249+
storedBoardLevelTrim[AttitudeSettings::BOARDLEVELTRIM_ROLL] = data.BoardLevelTrim[AttitudeSettings::BOARDLEVELTRIM_ROLL];
250+
storedBoardLevelTrim[AttitudeSettings::BOARDLEVELTRIM_PITCH] = data.BoardLevelTrim[AttitudeSettings::BOARDLEVELTRIM_PITCH];
249251

250-
// Set board rotation to no rotation
251-
data.BoardRotation[AttitudeSettings::BOARDROTATION_YAW] = 0;
252-
data.BoardRotation[AttitudeSettings::BOARDROTATION_ROLL] = 0;
253-
data.BoardRotation[AttitudeSettings::BOARDROTATION_PITCH] = 0;
252+
// Set board rotation to zero
253+
data.BoardRotation[AttitudeSettings::BOARDROTATION_YAW] = 0;
254+
data.BoardRotation[AttitudeSettings::BOARDROTATION_ROLL] = 0;
255+
data.BoardRotation[AttitudeSettings::BOARDROTATION_PITCH] = 0;
256+
257+
// Set board level trim to zero
258+
data.BoardLevelTrim[AttitudeSettings::BOARDLEVELTRIM_ROLL] = 0;
259+
data.BoardLevelTrim[AttitudeSettings::BOARDLEVELTRIM_PITCH] = 0;
254260

255261
attitudeSettings->setData(data, false);
256262
updateHelper.doObjectAndWait(attitudeSettings);
@@ -281,13 +287,15 @@ void ConfigRevoWidget::recallBoardRotation()
281287
// Recall current board rotation
282288
isBoardRotationStored = false;
283289

284-
// Restore the flight controller board rotation
290+
// Restore the flight controller board rotation and board level trim
285291
AttitudeSettings *attitudeSettings = AttitudeSettings::GetInstance(getObjectManager());
286292
Q_ASSERT(attitudeSettings);
287293
AttitudeSettings::DataFields data = attitudeSettings->getData();
288-
data.BoardRotation[AttitudeSettings::BOARDROTATION_YAW] = storedBoardRotation[AttitudeSettings::BOARDROTATION_YAW];
289-
data.BoardRotation[AttitudeSettings::BOARDROTATION_ROLL] = storedBoardRotation[AttitudeSettings::BOARDROTATION_ROLL];
290-
data.BoardRotation[AttitudeSettings::BOARDROTATION_PITCH] = storedBoardRotation[AttitudeSettings::BOARDROTATION_PITCH];
294+
data.BoardRotation[AttitudeSettings::BOARDROTATION_YAW] = storedBoardRotation[AttitudeSettings::BOARDROTATION_YAW];
295+
data.BoardRotation[AttitudeSettings::BOARDROTATION_ROLL] = storedBoardRotation[AttitudeSettings::BOARDROTATION_ROLL];
296+
data.BoardRotation[AttitudeSettings::BOARDROTATION_PITCH] = storedBoardRotation[AttitudeSettings::BOARDROTATION_PITCH];
297+
data.BoardLevelTrim[AttitudeSettings::BOARDLEVELTRIM_ROLL] = storedBoardLevelTrim[AttitudeSettings::BOARDLEVELTRIM_ROLL];
298+
data.BoardLevelTrim[AttitudeSettings::BOARDLEVELTRIM_PITCH] = storedBoardLevelTrim[AttitudeSettings::BOARDLEVELTRIM_PITCH];
291299

292300
attitudeSettings->setData(data, false);
293301
updateHelper.doObjectAndWait(attitudeSettings);

ground/gcs/src/plugins/config/configrevowidget.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ class ConfigRevoWidget : public ConfigTaskWidget {
6262
Ui_RevoSensorsWidget *m_ui;
6363

6464
// Board rotation store/recall for FC and for aux mag
65-
qint16 storedBoardRotation[3];
65+
float storedBoardRotation[3];
66+
float storedBoardLevelTrim[2];
6667
qint16 auxMagStoredBoardRotation[3];
6768
bool isBoardRotationStored;
6869

0 commit comments

Comments
 (0)