sensor calibration: save temperature at calibration time for monitoring

This commit is contained in:
Daniel Agar
2021-08-15 11:19:24 -04:00
parent a76bcd3e01
commit ff39e27e2d
29 changed files with 295 additions and 41 deletions
+11
View File
@@ -166,3 +166,14 @@ PARAM_DEFINE_FLOAT(CAL_ACC0_YSCALE, 1.0f);
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_ACC0_ZSCALE, 1.0f);
/**
* Accelerometer calibration temperature
*
* Temperature during last calibration.
*
* @category system
* @group Sensor Calibration
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_ACC0_TEMP, NAN);
+11
View File
@@ -166,3 +166,14 @@ PARAM_DEFINE_FLOAT(CAL_ACC1_YSCALE, 1.0f);
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_ACC1_ZSCALE, 1.0f);
/**
* Accelerometer calibration temperature
*
* Temperature during last calibration.
*
* @category system
* @group Sensor Calibration
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_ACC1_TEMP, NAN);
+11
View File
@@ -166,3 +166,14 @@ PARAM_DEFINE_FLOAT(CAL_ACC2_YSCALE, 1.0f);
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_ACC2_ZSCALE, 1.0f);
/**
* Accelerometer calibration temperature
*
* Temperature during last calibration.
*
* @category system
* @group Sensor Calibration
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_ACC2_TEMP, NAN);
+11
View File
@@ -166,3 +166,14 @@ PARAM_DEFINE_FLOAT(CAL_ACC3_YSCALE, 1.0f);
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_ACC3_ZSCALE, 1.0f);
/**
* Accelerometer calibration temperature
*
* Temperature during last calibration.
*
* @category system
* @group Sensor Calibration
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_ACC3_TEMP, NAN);
+11
View File
@@ -139,3 +139,14 @@ PARAM_DEFINE_FLOAT(CAL_GYRO0_YOFF, 0.0f);
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_GYRO0_ZOFF, 0.0f);
/**
* Gyroscope calibration temperature
*
* Temperature during last calibration.
*
* @category system
* @group Sensor Calibration
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_GYRO0_TEMP, NAN);
+11
View File
@@ -139,3 +139,14 @@ PARAM_DEFINE_FLOAT(CAL_GYRO1_YOFF, 0.0f);
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_GYRO1_ZOFF, 0.0f);
/**
* Gyroscope calibration temperature
*
* Temperature during last calibration.
*
* @category system
* @group Sensor Calibration
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_GYRO1_TEMP, NAN);
+11
View File
@@ -139,3 +139,14 @@ PARAM_DEFINE_FLOAT(CAL_GYRO2_YOFF, 0.0f);
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_GYRO2_ZOFF, 0.0f);
/**
* Gyroscope calibration temperature
*
* Temperature during last calibration.
*
* @category system
* @group Sensor Calibration
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_GYRO2_TEMP, NAN);
+11
View File
@@ -139,3 +139,14 @@ PARAM_DEFINE_FLOAT(CAL_GYRO3_YOFF, 0.0f);
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_GYRO3_ZOFF, 0.0f);
/**
* Gyroscope calibration temperature
*
* Temperature during last calibration.
*
* @category system
* @group Sensor Calibration
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_GYRO3_TEMP, NAN);
+11
View File
@@ -235,3 +235,14 @@ PARAM_DEFINE_FLOAT(CAL_MAG0_YCOMP, 0.0f);
* @group Sensor Calibration
*/
PARAM_DEFINE_FLOAT(CAL_MAG0_ZCOMP, 0.0f);
/**
* Magnetometer calibration temperature
*
* Temperature during last calibration.
*
* @category system
* @group Sensor Calibration
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_MAG0_TEMP, NAN);
+11
View File
@@ -235,3 +235,14 @@ PARAM_DEFINE_FLOAT(CAL_MAG1_YCOMP, 0.0f);
* @group Sensor Calibration
*/
PARAM_DEFINE_FLOAT(CAL_MAG1_ZCOMP, 0.0f);
/**
* Magnetometer calibration temperature
*
* Temperature during last calibration.
*
* @category system
* @group Sensor Calibration
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_MAG1_TEMP, NAN);
+11
View File
@@ -235,3 +235,14 @@ PARAM_DEFINE_FLOAT(CAL_MAG2_YCOMP, 0.0f);
* @group Sensor Calibration
*/
PARAM_DEFINE_FLOAT(CAL_MAG2_ZCOMP, 0.0f);
/**
* Magnetometer calibration temperature
*
* Temperature during last calibration.
*
* @category system
* @group Sensor Calibration
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_MAG2_TEMP, NAN);
+11
View File
@@ -235,3 +235,14 @@ PARAM_DEFINE_FLOAT(CAL_MAG3_YCOMP, 0.0f);
* @group Sensor Calibration
*/
PARAM_DEFINE_FLOAT(CAL_MAG3_ZCOMP, 0.0f);
/**
* Magnetometer calibration temperature
*
* Temperature during last calibration.
*
* @category system
* @group Sensor Calibration
* @volatile
*/
PARAM_DEFINE_FLOAT(CAL_MAG3_TEMP, NAN);
+9 -9
View File
@@ -319,22 +319,22 @@ int Sensors::parameters_update()
// mark all existing sensor calibrations active even if sensor is missing
// this preserves the calibration in the event of a parameter export while the sensor is missing
for (int i = 0; i < MAX_SENSOR_COUNT; i++) {
uint32_t device_id_accel = calibration::GetCalibrationParam("ACC", "ID", i);
uint32_t device_id_gyro = calibration::GetCalibrationParam("GYRO", "ID", i);
uint32_t device_id_mag = calibration::GetCalibrationParam("MAG", "ID", i);
uint32_t device_id_accel = calibration::GetCalibrationParamInt32("ACC", "ID", i);
uint32_t device_id_gyro = calibration::GetCalibrationParamInt32("GYRO", "ID", i);
uint32_t device_id_mag = calibration::GetCalibrationParamInt32("MAG", "ID", i);
if (device_id_accel != 0) {
bool external_accel = (calibration::GetCalibrationParam("ACC", "ROT", i) >= 0);
bool external_accel = (calibration::GetCalibrationParamInt32("ACC", "ROT", i) >= 0);
calibration::Accelerometer accel_cal(device_id_accel, external_accel);
}
if (device_id_gyro != 0) {
bool external_gyro = (calibration::GetCalibrationParam("GYRO", "ROT", i) >= 0);
bool external_gyro = (calibration::GetCalibrationParamInt32("GYRO", "ROT", i) >= 0);
calibration::Gyroscope gyro_cal(device_id_gyro, external_gyro);
}
if (device_id_mag != 0) {
bool external_mag = (calibration::GetCalibrationParam("MAG", "ROT", i) >= 0);
bool external_mag = (calibration::GetCalibrationParamInt32("MAG", "ROT", i) >= 0);
calibration::Magnetometer mag_cal(device_id_mag, external_mag);
}
}
@@ -343,21 +343,21 @@ int Sensors::parameters_update()
// this to done to eliminate differences in the active set of parameters before and after sensor calibration
for (int i = 0; i < MAX_SENSOR_COUNT; i++) {
if (orb_exists(ORB_ID(sensor_accel), i) == PX4_OK) {
bool external = (calibration::GetCalibrationParam("ACC", "ROT", i) >= 0);
bool external = (calibration::GetCalibrationParamInt32("ACC", "ROT", i) >= 0);
calibration::Accelerometer cal{0, external};
cal.set_calibration_index(i);
cal.ParametersUpdate();
}
if (orb_exists(ORB_ID(sensor_gyro), i) == PX4_OK) {
bool external = (calibration::GetCalibrationParam("GYRO", "ROT", i) >= 0);
bool external = (calibration::GetCalibrationParamInt32("GYRO", "ROT", i) >= 0);
calibration::Gyroscope cal{0, external};
cal.set_calibration_index(i);
cal.ParametersUpdate();
}
if (orb_exists(ORB_ID(sensor_mag), i) == PX4_OK) {
bool external = (calibration::GetCalibrationParam("MAG", "ROT", i) >= 0);
bool external = (calibration::GetCalibrationParamInt32("MAG", "ROT", i) >= 0);
calibration::Magnetometer cal{0, external};
cal.set_calibration_index(i);
cal.ParametersUpdate();
+2 -2
View File
@@ -96,7 +96,7 @@ void VotedSensorsUpdate::parametersUpdate()
// found matching CAL_ACCx_PRIO
int32_t accel_priority_old = _accel.priority_configured[uorb_index];
_accel.priority_configured[uorb_index] = calibration::GetCalibrationParam("ACC", "PRIO", accel_cal_index);
_accel.priority_configured[uorb_index] = calibration::GetCalibrationParamInt32("ACC", "PRIO", accel_cal_index);
if (accel_priority_old != _accel.priority_configured[uorb_index]) {
if (_accel.priority_configured[uorb_index] == 0) {
@@ -119,7 +119,7 @@ void VotedSensorsUpdate::parametersUpdate()
// found matching CAL_GYROx_PRIO
int32_t gyro_priority_old = _gyro.priority_configured[uorb_index];
_gyro.priority_configured[uorb_index] = calibration::GetCalibrationParam("GYRO", "PRIO", gyro_cal_index);
_gyro.priority_configured[uorb_index] = calibration::GetCalibrationParamInt32("GYRO", "PRIO", gyro_cal_index);
if (gyro_priority_old != _gyro.priority_configured[uorb_index]) {
if (_gyro.priority_configured[uorb_index] == 0) {