[wpilib] Clamp sim battery voltage to 0 (#7325)

This commit is contained in:
Jade
2024-11-04 02:37:44 +08:00
committed by GitHub
parent 23e71e10e4
commit debb52156c
2 changed files with 8 additions and 5 deletions

View File

@@ -4,6 +4,7 @@
#pragma once
#include <algorithm>
#include <numeric>
#include <span>
@@ -33,8 +34,9 @@ class BatterySim {
static units::volt_t Calculate(units::volt_t nominalVoltage,
units::ohm_t resistance,
std::span<const units::ampere_t> currents) {
return nominalVoltage -
std::accumulate(currents.begin(), currents.end(), 0_A) * resistance;
return std::max(0_V, nominalVoltage - std::accumulate(currents.begin(),
currents.end(), 0_A) *
resistance);
}
/**
@@ -52,8 +54,9 @@ class BatterySim {
static units::volt_t Calculate(
units::volt_t nominalVoltage, units::ohm_t resistance,
std::initializer_list<units::ampere_t> currents) {
return nominalVoltage -
std::accumulate(currents.begin(), currents.end(), 0_A) * resistance;
return std::max(0_V, nominalVoltage - std::accumulate(currents.begin(),
currents.end(), 0_A) *
resistance);
}
/**