mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-26 17:55:30 +03:00
Add unfiltered gyro black box field (#12907)
* Add unfiltered gyro black box field * Rename UFGYRO and GyroUf to gyroUnfilt
This commit is contained in:
parent
9186d05468
commit
90d09e2e5b
3 changed files with 20 additions and 2 deletions
|
@ -227,6 +227,9 @@ static const blackboxDeltaFieldDefinition_t blackboxMainFields[] = {
|
||||||
{"gyroADC", 0, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(GYRO)},
|
{"gyroADC", 0, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(GYRO)},
|
||||||
{"gyroADC", 1, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(GYRO)},
|
{"gyroADC", 1, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(GYRO)},
|
||||||
{"gyroADC", 2, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(GYRO)},
|
{"gyroADC", 2, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(GYRO)},
|
||||||
|
{"gyroUnfilt", 0, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(GYROUNFILT)},
|
||||||
|
{"gyroUnfilt", 1, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(GYROUNFILT)},
|
||||||
|
{"gyroUnfilt", 2, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(GYROUNFILT)},
|
||||||
{"accSmooth", 0, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(ACC)},
|
{"accSmooth", 0, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(ACC)},
|
||||||
{"accSmooth", 1, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(ACC)},
|
{"accSmooth", 1, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(ACC)},
|
||||||
{"accSmooth", 2, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(ACC)},
|
{"accSmooth", 2, SIGNED, .Ipredict = PREDICT(0), .Iencode = ENCODING(SIGNED_VB), .Ppredict = PREDICT(AVERAGE_2), .Pencode = ENCODING(SIGNED_VB), CONDITION(ACC)},
|
||||||
|
@ -324,6 +327,7 @@ typedef struct blackboxMainState_s {
|
||||||
int16_t rcCommand[4];
|
int16_t rcCommand[4];
|
||||||
int16_t setpoint[4];
|
int16_t setpoint[4];
|
||||||
int16_t gyroADC[XYZ_AXIS_COUNT];
|
int16_t gyroADC[XYZ_AXIS_COUNT];
|
||||||
|
int16_t gyroUnfilt[XYZ_AXIS_COUNT];
|
||||||
int16_t accADC[XYZ_AXIS_COUNT];
|
int16_t accADC[XYZ_AXIS_COUNT];
|
||||||
int16_t debug[DEBUG16_VALUE_COUNT];
|
int16_t debug[DEBUG16_VALUE_COUNT];
|
||||||
int16_t motor[MAX_SUPPORTED_MOTORS];
|
int16_t motor[MAX_SUPPORTED_MOTORS];
|
||||||
|
@ -518,6 +522,9 @@ static bool testBlackboxConditionUncached(FlightLogFieldCondition condition)
|
||||||
case CONDITION(GYRO):
|
case CONDITION(GYRO):
|
||||||
return isFieldEnabled(FIELD_SELECT(GYRO));
|
return isFieldEnabled(FIELD_SELECT(GYRO));
|
||||||
|
|
||||||
|
case CONDITION(GYROUNFILT):
|
||||||
|
return isFieldEnabled(FIELD_SELECT(GYROUNFILT));
|
||||||
|
|
||||||
case CONDITION(ACC):
|
case CONDITION(ACC):
|
||||||
return sensors(SENSOR_ACC) && isFieldEnabled(FIELD_SELECT(ACC));
|
return sensors(SENSOR_ACC) && isFieldEnabled(FIELD_SELECT(ACC));
|
||||||
|
|
||||||
|
@ -661,6 +668,10 @@ static void writeIntraframe(void)
|
||||||
blackboxWriteSigned16VBArray(blackboxCurrent->gyroADC, XYZ_AXIS_COUNT);
|
blackboxWriteSigned16VBArray(blackboxCurrent->gyroADC, XYZ_AXIS_COUNT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (testBlackboxCondition(CONDITION(GYROUNFILT))) {
|
||||||
|
blackboxWriteSigned16VBArray(blackboxCurrent->gyroUnfilt, XYZ_AXIS_COUNT);
|
||||||
|
}
|
||||||
|
|
||||||
if (testBlackboxCondition(CONDITION(ACC))) {
|
if (testBlackboxCondition(CONDITION(ACC))) {
|
||||||
blackboxWriteSigned16VBArray(blackboxCurrent->accADC, XYZ_AXIS_COUNT);
|
blackboxWriteSigned16VBArray(blackboxCurrent->accADC, XYZ_AXIS_COUNT);
|
||||||
}
|
}
|
||||||
|
@ -822,6 +833,9 @@ static void writeInterframe(void)
|
||||||
if (testBlackboxCondition(CONDITION(GYRO))) {
|
if (testBlackboxCondition(CONDITION(GYRO))) {
|
||||||
blackboxWriteMainStateArrayUsingAveragePredictor(offsetof(blackboxMainState_t, gyroADC), XYZ_AXIS_COUNT);
|
blackboxWriteMainStateArrayUsingAveragePredictor(offsetof(blackboxMainState_t, gyroADC), XYZ_AXIS_COUNT);
|
||||||
}
|
}
|
||||||
|
if (testBlackboxCondition(CONDITION(GYROUNFILT))) {
|
||||||
|
blackboxWriteMainStateArrayUsingAveragePredictor(offsetof(blackboxMainState_t, gyroUnfilt), XYZ_AXIS_COUNT);
|
||||||
|
}
|
||||||
if (testBlackboxCondition(CONDITION(ACC))) {
|
if (testBlackboxCondition(CONDITION(ACC))) {
|
||||||
blackboxWriteMainStateArrayUsingAveragePredictor(offsetof(blackboxMainState_t, accADC), XYZ_AXIS_COUNT);
|
blackboxWriteMainStateArrayUsingAveragePredictor(offsetof(blackboxMainState_t, accADC), XYZ_AXIS_COUNT);
|
||||||
}
|
}
|
||||||
|
@ -1119,6 +1133,7 @@ static void loadMainState(timeUs_t currentTimeUs)
|
||||||
blackboxCurrent->axisPID_D[i] = lrintf(pidData[i].D);
|
blackboxCurrent->axisPID_D[i] = lrintf(pidData[i].D);
|
||||||
blackboxCurrent->axisPID_F[i] = lrintf(pidData[i].F);
|
blackboxCurrent->axisPID_F[i] = lrintf(pidData[i].F);
|
||||||
blackboxCurrent->gyroADC[i] = lrintf(gyro.gyroADCf[i] * blackboxHighResolutionScale);
|
blackboxCurrent->gyroADC[i] = lrintf(gyro.gyroADCf[i] * blackboxHighResolutionScale);
|
||||||
|
blackboxCurrent->gyroUnfilt[i] = lrintf(gyro.gyroADC[i] * blackboxHighResolutionScale);
|
||||||
#if defined(USE_ACC)
|
#if defined(USE_ACC)
|
||||||
blackboxCurrent->accADC[i] = lrintf(acc.accADC[i]);
|
blackboxCurrent->accADC[i] = lrintf(acc.accADC[i]);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -61,6 +61,7 @@ typedef enum FlightLogFieldCondition {
|
||||||
FLIGHT_LOG_FIELD_CONDITION_NOT_LOGGING_EVERY_FRAME,
|
FLIGHT_LOG_FIELD_CONDITION_NOT_LOGGING_EVERY_FRAME,
|
||||||
|
|
||||||
FLIGHT_LOG_FIELD_CONDITION_GYRO,
|
FLIGHT_LOG_FIELD_CONDITION_GYRO,
|
||||||
|
FLIGHT_LOG_FIELD_CONDITION_GYROUNFILT,
|
||||||
FLIGHT_LOG_FIELD_CONDITION_ACC,
|
FLIGHT_LOG_FIELD_CONDITION_ACC,
|
||||||
FLIGHT_LOG_FIELD_CONDITION_DEBUG_LOG,
|
FLIGHT_LOG_FIELD_CONDITION_DEBUG_LOG,
|
||||||
|
|
||||||
|
@ -84,6 +85,7 @@ typedef enum FlightLogFieldSelect_e { // no more than 32
|
||||||
FLIGHT_LOG_FIELD_SELECT_MOTOR,
|
FLIGHT_LOG_FIELD_SELECT_MOTOR,
|
||||||
FLIGHT_LOG_FIELD_SELECT_GPS,
|
FLIGHT_LOG_FIELD_SELECT_GPS,
|
||||||
FLIGHT_LOG_FIELD_SELECT_RPM,
|
FLIGHT_LOG_FIELD_SELECT_RPM,
|
||||||
|
FLIGHT_LOG_FIELD_SELECT_GYROUNFILT,
|
||||||
FLIGHT_LOG_FIELD_SELECT_COUNT
|
FLIGHT_LOG_FIELD_SELECT_COUNT
|
||||||
} FlightLogFieldSelect_e;
|
} FlightLogFieldSelect_e;
|
||||||
|
|
||||||
|
|
|
@ -819,8 +819,9 @@ const clivalue_t valueTable[] = {
|
||||||
#if defined(USE_BARO) || defined(USE_RANGEFINDER)
|
#if defined(USE_BARO) || defined(USE_RANGEFINDER)
|
||||||
{ "blackbox_disable_alt", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_ALTITUDE, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_disabled_mask) },
|
{ "blackbox_disable_alt", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_ALTITUDE, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_disabled_mask) },
|
||||||
#endif
|
#endif
|
||||||
{ "blackbox_disable_rssi", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_RSSI, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_disabled_mask) },
|
{ "blackbox_disable_rssi", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_RSSI, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_disabled_mask) },
|
||||||
{ "blackbox_disable_gyro", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_GYRO, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_disabled_mask) },
|
{ "blackbox_disable_gyro", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_GYRO, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_disabled_mask) },
|
||||||
|
{ "blackbox_disable_gyrounfilt",VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_GYROUNFILT, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_disabled_mask) },
|
||||||
#if defined(USE_ACC)
|
#if defined(USE_ACC)
|
||||||
{ "blackbox_disable_acc", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_ACC, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_disabled_mask) },
|
{ "blackbox_disable_acc", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = FLIGHT_LOG_FIELD_SELECT_ACC, PG_BLACKBOX_CONFIG, offsetof(blackboxConfig_t, fields_disabled_mask) },
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue