diff --git a/wpilibc/src/main/native/include/frc/simulation/BatterySim.h b/wpilibc/src/main/native/include/frc/simulation/BatterySim.h index ab79844e30..d50ff22480 100644 --- a/wpilibc/src/main/native/include/frc/simulation/BatterySim.h +++ b/wpilibc/src/main/native/include/frc/simulation/BatterySim.h @@ -4,6 +4,7 @@ #pragma once +#include #include #include @@ -33,8 +34,9 @@ class BatterySim { static units::volt_t Calculate(units::volt_t nominalVoltage, units::ohm_t resistance, std::span 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 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); } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/BatterySim.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/BatterySim.java index 78c988848c..fcee31bdb3 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/BatterySim.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/BatterySim.java @@ -27,7 +27,7 @@ public final class BatterySim { for (var current : currents) { retval -= current * resistanceOhms; } - return retval; + return Math.max(0.0, retval); } /**