Browse Source

Thermal Calibration - add parameter required to control max starting temperature

sbg
Paul Riseborough 8 years ago committed by Lorenz Meier
parent
commit
22c8c59829
  1. 4
      src/modules/events/temperature_calibration/accel.cpp
  2. 2
      src/modules/events/temperature_calibration/accel.h
  3. 4
      src/modules/events/temperature_calibration/baro.cpp
  4. 2
      src/modules/events/temperature_calibration/baro.h
  5. 11
      src/modules/events/temperature_calibration/common.h
  6. 4
      src/modules/events/temperature_calibration/gyro.cpp
  7. 2
      src/modules/events/temperature_calibration/gyro.h
  8. 9
      src/modules/events/temperature_calibration/task.cpp
  9. 10
      src/modules/systemlib/system_params.c

4
src/modules/events/temperature_calibration/accel.cpp

@ -44,8 +44,8 @@ @@ -44,8 +44,8 @@
#include <uORB/topics/sensor_accel.h>
#include <mathlib/mathlib.h>
TemperatureCalibrationAccel::TemperatureCalibrationAccel(float min_temperature_rise, float min_start_temperature)
: TemperatureCalibrationCommon(min_temperature_rise, min_start_temperature)
TemperatureCalibrationAccel::TemperatureCalibrationAccel(float min_temperature_rise, float min_start_temperature, float max_start_temperature)
: TemperatureCalibrationCommon(min_temperature_rise, min_start_temperature, max_start_temperature)
{
//init subscriptions

2
src/modules/events/temperature_calibration/accel.h

@ -39,7 +39,7 @@ @@ -39,7 +39,7 @@
class TemperatureCalibrationAccel : public TemperatureCalibrationCommon<3, 3>
{
public:
TemperatureCalibrationAccel(float min_temperature_rise, float min_start_temperature);
TemperatureCalibrationAccel(float min_temperature_rise, float min_start_temperature, float max_start_temperature);
virtual ~TemperatureCalibrationAccel();
/**

4
src/modules/events/temperature_calibration/baro.cpp

@ -44,8 +44,8 @@ @@ -44,8 +44,8 @@
#include <uORB/topics/sensor_baro.h>
#include <mathlib/mathlib.h>
TemperatureCalibrationBaro::TemperatureCalibrationBaro(float min_temperature_rise, float min_start_temperature)
: TemperatureCalibrationCommon(min_temperature_rise, min_start_temperature)
TemperatureCalibrationBaro::TemperatureCalibrationBaro(float min_temperature_rise, float min_start_temperature, float max_start_temperature)
: TemperatureCalibrationCommon(min_temperature_rise, min_start_temperature, max_start_temperature)
{
//init subscriptions

2
src/modules/events/temperature_calibration/baro.h

@ -42,7 +42,7 @@ @@ -42,7 +42,7 @@
class TemperatureCalibrationBaro : public TemperatureCalibrationCommon<1, POLYFIT_ORDER>
{
public:
TemperatureCalibrationBaro(float min_temperature_rise, float min_start_temperature);
TemperatureCalibrationBaro(float min_temperature_rise, float min_start_temperature, float max_start_temperature);
virtual ~TemperatureCalibrationBaro();
/**

11
src/modules/events/temperature_calibration/common.h

@ -53,8 +53,8 @@ @@ -53,8 +53,8 @@
class TemperatureCalibrationBase
{
public:
TemperatureCalibrationBase(float min_temperature_rise, float min_start_temperature)
: _min_temperature_rise(min_temperature_rise), _min_start_temperature(min_start_temperature) {}
TemperatureCalibrationBase(float min_temperature_rise, float min_start_temperature, float max_start_temperature)
: _min_temperature_rise(min_temperature_rise), _min_start_temperature(min_start_temperature), _max_start_temperature(max_start_temperature) {}
virtual ~TemperatureCalibrationBase() {}
@ -86,6 +86,7 @@ protected: @@ -86,6 +86,7 @@ protected:
float _min_temperature_rise; ///< minimum difference in temperature before the process finishes
float _min_start_temperature; ///< minimum temperature before the process starts
float _max_start_temperature; ///< maximum temperature above which the process does not start and an error is declared
};
@ -111,8 +112,8 @@ template <int Dim, int PolyfitOrder> @@ -111,8 +112,8 @@ template <int Dim, int PolyfitOrder>
class TemperatureCalibrationCommon : public TemperatureCalibrationBase
{
public:
TemperatureCalibrationCommon(float min_temperature_rise, float min_start_temperature)
: TemperatureCalibrationBase(min_temperature_rise, min_start_temperature) {}
TemperatureCalibrationCommon(float min_temperature_rise, float min_start_temperature, float max_start_temperature)
: TemperatureCalibrationBase(min_temperature_rise, min_start_temperature, max_start_temperature) {}
virtual ~TemperatureCalibrationCommon() {}
@ -164,7 +165,7 @@ protected: @@ -164,7 +165,7 @@ protected:
/**
* update a single sensor instance
* @return 0 when done, 1 not finished yet
* @return 0 when done, 1 not finished yet, -1 for an error that requires the test to be repeated
*/
virtual int update_sensor_instance(PerSensorData &data, int sensor_sub) = 0;

4
src/modules/events/temperature_calibration/gyro.cpp

@ -43,8 +43,8 @@ @@ -43,8 +43,8 @@
#include <uORB/topics/sensor_gyro.h>
#include "gyro.h"
TemperatureCalibrationGyro::TemperatureCalibrationGyro(float min_temperature_rise, float min_start_temperature, int gyro_subs[], int num_gyros)
: TemperatureCalibrationCommon(min_temperature_rise, min_start_temperature)
TemperatureCalibrationGyro::TemperatureCalibrationGyro(float min_temperature_rise, float min_start_temperature, float max_start_temperature, int gyro_subs[], int num_gyros)
: TemperatureCalibrationCommon(min_temperature_rise, min_start_temperature, max_start_temperature)
{
for (int i = 0; i < num_gyros; ++i) {
_sensor_subs[i] = gyro_subs[i];

2
src/modules/events/temperature_calibration/gyro.h

@ -39,7 +39,7 @@ @@ -39,7 +39,7 @@
class TemperatureCalibrationGyro : public TemperatureCalibrationCommon<3, 3>
{
public:
TemperatureCalibrationGyro(float min_temperature_rise, float min_start_temperature, int gyro_subs[], int num_gyros);
TemperatureCalibrationGyro(float min_temperature_rise, float min_start_temperature, float max_start_temperature, int gyro_subs[], int num_gyros);
virtual ~TemperatureCalibrationGyro() {}
/**

9
src/modules/events/temperature_calibration/task.cpp

@ -130,13 +130,16 @@ void TemperatureCalibration::task_main() @@ -130,13 +130,16 @@ void TemperatureCalibration::task_main()
int32_t min_start_temp = 5;
param_get(param_find("SYS_CAL_TMIN"), &min_start_temp);
int32_t max_start_temp = 10;
param_get(param_find("SYS_CAL_TMAX"), &max_start_temp);
//init calibrators
TemperatureCalibrationBase *calibrators[3];
bool error_reported[3] = {};
int num_calibrators = 0;
if (_accel) {
calibrators[num_calibrators] = new TemperatureCalibrationAccel(min_temp_rise,min_start_temp);
calibrators[num_calibrators] = new TemperatureCalibrationAccel(min_temp_rise, min_start_temp, max_start_temp);
if (calibrators[num_calibrators]) {
++num_calibrators;
@ -147,7 +150,7 @@ void TemperatureCalibration::task_main() @@ -147,7 +150,7 @@ void TemperatureCalibration::task_main()
}
if (_baro) {
calibrators[num_calibrators] = new TemperatureCalibrationBaro(min_temp_rise, min_start_temp);
calibrators[num_calibrators] = new TemperatureCalibrationBaro(min_temp_rise, min_start_temp, max_start_temp);
if (calibrators[num_calibrators]) {
++num_calibrators;
@ -158,7 +161,7 @@ void TemperatureCalibration::task_main() @@ -158,7 +161,7 @@ void TemperatureCalibration::task_main()
}
if (_gyro) {
calibrators[num_calibrators] = new TemperatureCalibrationGyro(min_temp_rise, min_start_temp, gyro_sub, num_gyro);
calibrators[num_calibrators] = new TemperatureCalibrationGyro(min_temp_rise, min_start_temp, max_start_temp, gyro_sub, num_gyro);
if (calibrators[num_calibrators]) {
++num_calibrators;

10
src/modules/systemlib/system_params.c

@ -231,3 +231,13 @@ PARAM_DEFINE_INT32(SYS_CAL_TDEL, 24); @@ -231,3 +231,13 @@ PARAM_DEFINE_INT32(SYS_CAL_TDEL, 24);
* @group System
*/
PARAM_DEFINE_INT32(SYS_CAL_TMIN, 5);
/**
* Maximum starting temperature for thermal calibration
*
* Temperature calibration will not start if the temperature of any sensor is higher than the value set by SYS_CAL_TMAX.
*
* @unit deg C
* @group System
*/
PARAM_DEFINE_INT32(SYS_CAL_TMAX, 10);

Loading…
Cancel
Save