Skip to content

Commit

Permalink
Use calibrated ZRO values
Browse files Browse the repository at this point in the history
  • Loading branch information
gorbit99 committed Jan 5, 2025
1 parent 365ebb2 commit 140177c
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 1 deletion.
2 changes: 2 additions & 0 deletions src/sensors/softfusion/CalibrationBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ class CalibrationBase {
virtual void provideGyroSample(const RawSensorT gyroSample[3]) {}
virtual void provideTempSample(float tempSample) {}

virtual float getZROChange() { return IMU::TemperatureZROChange; };

protected:
void recalcFusion() {
fusion = Sensors::SensorFusionRestDetect(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,26 @@ class NonBlockingCalibrator
}
}

float getZROChange() final {
if (activeCalibration.gyroPointsCalibrated < 2) {
return IMU::TemperatureZROChange;
}

float diffX
= (activeCalibration.G_off2[0] - activeCalibration.G_off1[0]) * GScale;
float diffY
= (activeCalibration.G_off2[1] - activeCalibration.G_off1[1]) * GScale;
float diffZ
= (activeCalibration.G_off2[2] - activeCalibration.G_off1[2]) * GScale;

float maxDiff
= std::max(std::max(std::abs(diffX), std::abs(diffY)), std::abs(diffZ));

return 0.1f / maxDiff
/ (activeCalibration.gyroMeasurementTemperature2
- activeCalibration.gyroMeasurementTemperature1);
}

private:
enum class CalibrationStepEnum {
NONE,
Expand Down
2 changes: 1 addition & 1 deletion src/sensors/softfusion/softfusionsensor.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ class SoftFusionSensor : public Sensor {

TemperatureGradientCalculator tempGradientCalculator{[&](float gradient) {
m_fusion.updateBiasForgettingTime(
std::fabs(gradient) * imu::TemperatureZROChange
calibrator.getZROChange() / std::fabs(gradient)
);
}};

Expand Down

0 comments on commit 140177c

Please sign in to comment.