[sysid] Show warning tooltips next to bad feedforward gains instead of throwing (#6251)

Co-authored-by: Tyler Veness <calcmogul@gmail.com>
This commit is contained in:
HarryXChen
2024-01-19 23:33:56 -05:00
committed by GitHub
parent d392570659
commit 1330235918
8 changed files with 247 additions and 86 deletions

View File

@@ -127,16 +127,16 @@ void AnalyzerPlot::SetRawData(const Storage& data, std::string_view unit,
void AnalyzerPlot::SetData(const Storage& rawData, const Storage& filteredData,
std::string_view unit,
const std::vector<double>& ffGains,
const AnalysisManager::FeedforwardGains& ffGains,
const std::array<units::second_t, 4>& startTimes,
AnalysisType type, std::atomic<bool>& abort) {
double simSquaredErrorSum = 0;
double squaredVariationSum = 0;
int timeSeriesPoints = 0;
const auto& Ks = ffGains[0];
const auto& Kv = ffGains[1];
const auto& Ka = ffGains[2];
const auto& Ks = ffGains.Ks.gain;
const auto& Kv = ffGains.Kv.gain;
const auto& Ka = ffGains.Ka.gain;
auto& [slowForward, slowBackward, fastForward, fastBackward] = filteredData;
auto& [rawSlowForward, rawSlowBackward, rawFastForward, rawFastBackward] =
@@ -223,7 +223,7 @@ void AnalyzerPlot::SetData(const Storage& rawData, const Storage& filteredData,
// Populate simulated time domain data
if (type == analysis::kElevator) {
const auto& Kg = ffGains[3];
const auto& Kg = ffGains.Kg.gain;
m_quasistaticData.simData = PopulateTimeDomainSim(
rawSlow, startTimes, fastStep, sysid::ElevatorSim{Ks, Kv, Ka, Kg},
&simSquaredErrorSum, &squaredVariationSum, &timeSeriesPoints);
@@ -231,8 +231,8 @@ void AnalyzerPlot::SetData(const Storage& rawData, const Storage& filteredData,
rawFast, startTimes, fastStep, sysid::ElevatorSim{Ks, Kv, Ka, Kg},
&simSquaredErrorSum, &squaredVariationSum, &timeSeriesPoints);
} else if (type == analysis::kArm) {
const auto& Kg = ffGains[3];
const auto& offset = ffGains[4];
const auto& Kg = ffGains.Kg.gain;
const auto& offset = ffGains.offset.gain;
m_quasistaticData.simData = PopulateTimeDomainSim(
rawSlow, startTimes, fastStep, sysid::ArmSim{Ks, Kv, Ka, Kg, offset},
&simSquaredErrorSum, &squaredVariationSum, &timeSeriesPoints);
@@ -288,10 +288,10 @@ void AnalyzerPlot::SetData(const Storage& rawData, const Storage& filteredData,
std::copysign(Ks / Ka, slow[i].velocity);
if (type == analysis::kElevator) {
const auto& Kg = ffGains[3];
const auto& Kg = ffGains.Kg.gain;
accelPortion -= Kg / Ka;
} else if (type == analysis::kArm) {
const auto& Kg = ffGains[3];
const auto& Kg = ffGains.Kg.gain;
accelPortion -= Kg / Ka * slow[i].cos;
}
@@ -307,10 +307,10 @@ void AnalyzerPlot::SetData(const Storage& rawData, const Storage& filteredData,
std::copysign(Ks / Ka, fast[i].velocity);
if (type == analysis::kElevator) {
const auto& Kg = ffGains[3];
const auto& Kg = ffGains.Kg.gain;
accelPortion -= Kg / Ka;
} else if (type == analysis::kArm) {
const auto& Kg = ffGains[3];
const auto& Kg = ffGains.Kg.gain;
accelPortion -= Kg / Ka * fast[i].cos;
}