mirror of
https://gitee.com/xiaohuolufeihua/bizhang_-obav.git
synced 2026-05-22 01:12:31 +00:00
Thermal Calibration - add parameter required to control max starting temperature
This commit is contained in:
committed by
Lorenz Meier
parent
93a70c2d0b
commit
22c8c59829
@@ -44,8 +44,8 @@
|
|||||||
#include <uORB/topics/sensor_accel.h>
|
#include <uORB/topics/sensor_accel.h>
|
||||||
#include <mathlib/mathlib.h>
|
#include <mathlib/mathlib.h>
|
||||||
|
|
||||||
TemperatureCalibrationAccel::TemperatureCalibrationAccel(float min_temperature_rise, float min_start_temperature)
|
TemperatureCalibrationAccel::TemperatureCalibrationAccel(float min_temperature_rise, float min_start_temperature, float max_start_temperature)
|
||||||
: TemperatureCalibrationCommon(min_temperature_rise, min_start_temperature)
|
: TemperatureCalibrationCommon(min_temperature_rise, min_start_temperature, max_start_temperature)
|
||||||
{
|
{
|
||||||
|
|
||||||
//init subscriptions
|
//init subscriptions
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
class TemperatureCalibrationAccel : public TemperatureCalibrationCommon<3, 3>
|
class TemperatureCalibrationAccel : public TemperatureCalibrationCommon<3, 3>
|
||||||
{
|
{
|
||||||
public:
|
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();
|
virtual ~TemperatureCalibrationAccel();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -44,8 +44,8 @@
|
|||||||
#include <uORB/topics/sensor_baro.h>
|
#include <uORB/topics/sensor_baro.h>
|
||||||
#include <mathlib/mathlib.h>
|
#include <mathlib/mathlib.h>
|
||||||
|
|
||||||
TemperatureCalibrationBaro::TemperatureCalibrationBaro(float min_temperature_rise, float min_start_temperature)
|
TemperatureCalibrationBaro::TemperatureCalibrationBaro(float min_temperature_rise, float min_start_temperature, float max_start_temperature)
|
||||||
: TemperatureCalibrationCommon(min_temperature_rise, min_start_temperature)
|
: TemperatureCalibrationCommon(min_temperature_rise, min_start_temperature, max_start_temperature)
|
||||||
{
|
{
|
||||||
|
|
||||||
//init subscriptions
|
//init subscriptions
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
class TemperatureCalibrationBaro : public TemperatureCalibrationCommon<1, POLYFIT_ORDER>
|
class TemperatureCalibrationBaro : public TemperatureCalibrationCommon<1, POLYFIT_ORDER>
|
||||||
{
|
{
|
||||||
public:
|
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();
|
virtual ~TemperatureCalibrationBaro();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -53,8 +53,8 @@
|
|||||||
class TemperatureCalibrationBase
|
class TemperatureCalibrationBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TemperatureCalibrationBase(float min_temperature_rise, float 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) {}
|
: _min_temperature_rise(min_temperature_rise), _min_start_temperature(min_start_temperature), _max_start_temperature(max_start_temperature) {}
|
||||||
|
|
||||||
virtual ~TemperatureCalibrationBase() {}
|
virtual ~TemperatureCalibrationBase() {}
|
||||||
|
|
||||||
@@ -86,6 +86,7 @@ protected:
|
|||||||
|
|
||||||
float _min_temperature_rise; ///< minimum difference in temperature before the process finishes
|
float _min_temperature_rise; ///< minimum difference in temperature before the process finishes
|
||||||
float _min_start_temperature; ///< minimum temperature before the process starts
|
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>
|
|||||||
class TemperatureCalibrationCommon : public TemperatureCalibrationBase
|
class TemperatureCalibrationCommon : public TemperatureCalibrationBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TemperatureCalibrationCommon(float min_temperature_rise, float min_start_temperature)
|
TemperatureCalibrationCommon(float min_temperature_rise, float min_start_temperature, float max_start_temperature)
|
||||||
: TemperatureCalibrationBase(min_temperature_rise, min_start_temperature) {}
|
: TemperatureCalibrationBase(min_temperature_rise, min_start_temperature, max_start_temperature) {}
|
||||||
|
|
||||||
virtual ~TemperatureCalibrationCommon() {}
|
virtual ~TemperatureCalibrationCommon() {}
|
||||||
|
|
||||||
@@ -164,7 +165,7 @@ protected:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* update a single sensor instance
|
* 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;
|
virtual int update_sensor_instance(PerSensorData &data, int sensor_sub) = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -43,8 +43,8 @@
|
|||||||
#include <uORB/topics/sensor_gyro.h>
|
#include <uORB/topics/sensor_gyro.h>
|
||||||
#include "gyro.h"
|
#include "gyro.h"
|
||||||
|
|
||||||
TemperatureCalibrationGyro::TemperatureCalibrationGyro(float min_temperature_rise, float min_start_temperature, int gyro_subs[], int num_gyros)
|
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)
|
: TemperatureCalibrationCommon(min_temperature_rise, min_start_temperature, max_start_temperature)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < num_gyros; ++i) {
|
for (int i = 0; i < num_gyros; ++i) {
|
||||||
_sensor_subs[i] = gyro_subs[i];
|
_sensor_subs[i] = gyro_subs[i];
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
class TemperatureCalibrationGyro : public TemperatureCalibrationCommon<3, 3>
|
class TemperatureCalibrationGyro : public TemperatureCalibrationCommon<3, 3>
|
||||||
{
|
{
|
||||||
public:
|
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() {}
|
virtual ~TemperatureCalibrationGyro() {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -130,13 +130,16 @@ void TemperatureCalibration::task_main()
|
|||||||
int32_t min_start_temp = 5;
|
int32_t min_start_temp = 5;
|
||||||
param_get(param_find("SYS_CAL_TMIN"), &min_start_temp);
|
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
|
//init calibrators
|
||||||
TemperatureCalibrationBase *calibrators[3];
|
TemperatureCalibrationBase *calibrators[3];
|
||||||
bool error_reported[3] = {};
|
bool error_reported[3] = {};
|
||||||
int num_calibrators = 0;
|
int num_calibrators = 0;
|
||||||
|
|
||||||
if (_accel) {
|
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]) {
|
if (calibrators[num_calibrators]) {
|
||||||
++num_calibrators;
|
++num_calibrators;
|
||||||
@@ -147,7 +150,7 @@ void TemperatureCalibration::task_main()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (_baro) {
|
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]) {
|
if (calibrators[num_calibrators]) {
|
||||||
++num_calibrators;
|
++num_calibrators;
|
||||||
@@ -158,7 +161,7 @@ void TemperatureCalibration::task_main()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (_gyro) {
|
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]) {
|
if (calibrators[num_calibrators]) {
|
||||||
++num_calibrators;
|
++num_calibrators;
|
||||||
|
|||||||
@@ -231,3 +231,13 @@ PARAM_DEFINE_INT32(SYS_CAL_TDEL, 24);
|
|||||||
* @group System
|
* @group System
|
||||||
*/
|
*/
|
||||||
PARAM_DEFINE_INT32(SYS_CAL_TMIN, 5);
|
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);
|
||||||
|
|||||||
Reference in New Issue
Block a user