mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-29 02:21:44 +00:00
[sim] Use units for voltage and current in RoboRioSim (#2853)
This commit is contained in:
committed by
GitHub
parent
ac3c336b98
commit
3c85a40648
@@ -39,10 +39,12 @@ std::unique_ptr<CallbackStore> RoboRioSim::RegisterVInVoltageCallback(
|
||||
return store;
|
||||
}
|
||||
|
||||
double RoboRioSim::GetVInVoltage() { return HALSIM_GetRoboRioVInVoltage(); }
|
||||
units::volt_t RoboRioSim::GetVInVoltage() {
|
||||
return units::volt_t(HALSIM_GetRoboRioVInVoltage());
|
||||
}
|
||||
|
||||
void RoboRioSim::SetVInVoltage(double vInVoltage) {
|
||||
HALSIM_SetRoboRioVInVoltage(vInVoltage);
|
||||
void RoboRioSim::SetVInVoltage(units::volt_t vInVoltage) {
|
||||
HALSIM_SetRoboRioVInVoltage(vInVoltage.to<double>());
|
||||
}
|
||||
|
||||
std::unique_ptr<CallbackStore> RoboRioSim::RegisterVInCurrentCallback(
|
||||
@@ -54,10 +56,12 @@ std::unique_ptr<CallbackStore> RoboRioSim::RegisterVInCurrentCallback(
|
||||
return store;
|
||||
}
|
||||
|
||||
double RoboRioSim::GetVInCurrent() { return HALSIM_GetRoboRioVInCurrent(); }
|
||||
units::ampere_t RoboRioSim::GetVInCurrent() {
|
||||
return units::ampere_t(HALSIM_GetRoboRioVInCurrent());
|
||||
}
|
||||
|
||||
void RoboRioSim::SetVInCurrent(double vInCurrent) {
|
||||
HALSIM_SetRoboRioVInCurrent(vInCurrent);
|
||||
void RoboRioSim::SetVInCurrent(units::ampere_t vInCurrent) {
|
||||
HALSIM_SetRoboRioVInCurrent(vInCurrent.to<double>());
|
||||
}
|
||||
|
||||
std::unique_ptr<CallbackStore> RoboRioSim::RegisterUserVoltage6VCallback(
|
||||
@@ -69,12 +73,12 @@ std::unique_ptr<CallbackStore> RoboRioSim::RegisterUserVoltage6VCallback(
|
||||
return store;
|
||||
}
|
||||
|
||||
double RoboRioSim::GetUserVoltage6V() {
|
||||
return HALSIM_GetRoboRioUserVoltage6V();
|
||||
units::volt_t RoboRioSim::GetUserVoltage6V() {
|
||||
return units::volt_t(HALSIM_GetRoboRioUserVoltage6V());
|
||||
}
|
||||
|
||||
void RoboRioSim::SetUserVoltage6V(double userVoltage6V) {
|
||||
HALSIM_SetRoboRioUserVoltage6V(userVoltage6V);
|
||||
void RoboRioSim::SetUserVoltage6V(units::volt_t userVoltage6V) {
|
||||
HALSIM_SetRoboRioUserVoltage6V(userVoltage6V.to<double>());
|
||||
}
|
||||
|
||||
std::unique_ptr<CallbackStore> RoboRioSim::RegisterUserCurrent6VCallback(
|
||||
@@ -86,12 +90,12 @@ std::unique_ptr<CallbackStore> RoboRioSim::RegisterUserCurrent6VCallback(
|
||||
return store;
|
||||
}
|
||||
|
||||
double RoboRioSim::GetUserCurrent6V() {
|
||||
return HALSIM_GetRoboRioUserCurrent6V();
|
||||
units::ampere_t RoboRioSim::GetUserCurrent6V() {
|
||||
return units::ampere_t(HALSIM_GetRoboRioUserCurrent6V());
|
||||
}
|
||||
|
||||
void RoboRioSim::SetUserCurrent6V(double userCurrent6V) {
|
||||
HALSIM_SetRoboRioUserCurrent6V(userCurrent6V);
|
||||
void RoboRioSim::SetUserCurrent6V(units::ampere_t userCurrent6V) {
|
||||
HALSIM_SetRoboRioUserCurrent6V(userCurrent6V.to<double>());
|
||||
}
|
||||
|
||||
std::unique_ptr<CallbackStore> RoboRioSim::RegisterUserActive6VCallback(
|
||||
@@ -118,12 +122,12 @@ std::unique_ptr<CallbackStore> RoboRioSim::RegisterUserVoltage5VCallback(
|
||||
return store;
|
||||
}
|
||||
|
||||
double RoboRioSim::GetUserVoltage5V() {
|
||||
return HALSIM_GetRoboRioUserVoltage5V();
|
||||
units::volt_t RoboRioSim::GetUserVoltage5V() {
|
||||
return units::volt_t(HALSIM_GetRoboRioUserVoltage5V());
|
||||
}
|
||||
|
||||
void RoboRioSim::SetUserVoltage5V(double userVoltage5V) {
|
||||
HALSIM_SetRoboRioUserVoltage5V(userVoltage5V);
|
||||
void RoboRioSim::SetUserVoltage5V(units::volt_t userVoltage5V) {
|
||||
HALSIM_SetRoboRioUserVoltage5V(userVoltage5V.to<double>());
|
||||
}
|
||||
|
||||
std::unique_ptr<CallbackStore> RoboRioSim::RegisterUserCurrent5VCallback(
|
||||
@@ -135,12 +139,12 @@ std::unique_ptr<CallbackStore> RoboRioSim::RegisterUserCurrent5VCallback(
|
||||
return store;
|
||||
}
|
||||
|
||||
double RoboRioSim::GetUserCurrent5V() {
|
||||
return HALSIM_GetRoboRioUserCurrent5V();
|
||||
units::ampere_t RoboRioSim::GetUserCurrent5V() {
|
||||
return units::ampere_t(HALSIM_GetRoboRioUserCurrent5V());
|
||||
}
|
||||
|
||||
void RoboRioSim::SetUserCurrent5V(double userCurrent5V) {
|
||||
HALSIM_SetRoboRioUserCurrent5V(userCurrent5V);
|
||||
void RoboRioSim::SetUserCurrent5V(units::ampere_t userCurrent5V) {
|
||||
HALSIM_SetRoboRioUserCurrent5V(userCurrent5V.to<double>());
|
||||
}
|
||||
|
||||
std::unique_ptr<CallbackStore> RoboRioSim::RegisterUserActive5VCallback(
|
||||
@@ -167,12 +171,12 @@ std::unique_ptr<CallbackStore> RoboRioSim::RegisterUserVoltage3V3Callback(
|
||||
return store;
|
||||
}
|
||||
|
||||
double RoboRioSim::GetUserVoltage3V3() {
|
||||
return HALSIM_GetRoboRioUserVoltage3V3();
|
||||
units::volt_t RoboRioSim::GetUserVoltage3V3() {
|
||||
return units::volt_t(HALSIM_GetRoboRioUserVoltage3V3());
|
||||
}
|
||||
|
||||
void RoboRioSim::SetUserVoltage3V3(double userVoltage3V3) {
|
||||
HALSIM_SetRoboRioUserVoltage3V3(userVoltage3V3);
|
||||
void RoboRioSim::SetUserVoltage3V3(units::volt_t userVoltage3V3) {
|
||||
HALSIM_SetRoboRioUserVoltage3V3(userVoltage3V3.to<double>());
|
||||
}
|
||||
|
||||
std::unique_ptr<CallbackStore> RoboRioSim::RegisterUserCurrent3V3Callback(
|
||||
@@ -184,12 +188,12 @@ std::unique_ptr<CallbackStore> RoboRioSim::RegisterUserCurrent3V3Callback(
|
||||
return store;
|
||||
}
|
||||
|
||||
double RoboRioSim::GetUserCurrent3V3() {
|
||||
return HALSIM_GetRoboRioUserCurrent3V3();
|
||||
units::ampere_t RoboRioSim::GetUserCurrent3V3() {
|
||||
return units::ampere_t(HALSIM_GetRoboRioUserCurrent3V3());
|
||||
}
|
||||
|
||||
void RoboRioSim::SetUserCurrent3V3(double userCurrent3V3) {
|
||||
HALSIM_SetRoboRioUserCurrent3V3(userCurrent3V3);
|
||||
void RoboRioSim::SetUserCurrent3V3(units::ampere_t userCurrent3V3) {
|
||||
HALSIM_SetRoboRioUserCurrent3V3(userCurrent3V3.to<double>());
|
||||
}
|
||||
|
||||
std::unique_ptr<CallbackStore> RoboRioSim::RegisterUserActive3V3Callback(
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include <units/current.h>
|
||||
#include <units/voltage.h>
|
||||
|
||||
#include "frc/simulation/CallbackStore.h"
|
||||
|
||||
namespace frc {
|
||||
@@ -29,30 +32,30 @@ class RoboRioSim {
|
||||
static std::unique_ptr<CallbackStore> RegisterVInVoltageCallback(
|
||||
NotifyCallback callback, bool initialNotify);
|
||||
|
||||
static double GetVInVoltage();
|
||||
static units::volt_t GetVInVoltage();
|
||||
|
||||
static void SetVInVoltage(double vInVoltage);
|
||||
static void SetVInVoltage(units::volt_t vInVoltage);
|
||||
|
||||
static std::unique_ptr<CallbackStore> RegisterVInCurrentCallback(
|
||||
NotifyCallback callback, bool initialNotify);
|
||||
|
||||
static double GetVInCurrent();
|
||||
static units::ampere_t GetVInCurrent();
|
||||
|
||||
static void SetVInCurrent(double vInCurrent);
|
||||
static void SetVInCurrent(units::ampere_t vInCurrent);
|
||||
|
||||
static std::unique_ptr<CallbackStore> RegisterUserVoltage6VCallback(
|
||||
NotifyCallback callback, bool initialNotify);
|
||||
|
||||
static double GetUserVoltage6V();
|
||||
static units::volt_t GetUserVoltage6V();
|
||||
|
||||
static void SetUserVoltage6V(double userVoltage6V);
|
||||
static void SetUserVoltage6V(units::volt_t userVoltage6V);
|
||||
|
||||
static std::unique_ptr<CallbackStore> RegisterUserCurrent6VCallback(
|
||||
NotifyCallback callback, bool initialNotify);
|
||||
|
||||
static double GetUserCurrent6V();
|
||||
static units::ampere_t GetUserCurrent6V();
|
||||
|
||||
static void SetUserCurrent6V(double userCurrent6V);
|
||||
static void SetUserCurrent6V(units::ampere_t userCurrent6V);
|
||||
|
||||
static std::unique_ptr<CallbackStore> RegisterUserActive6VCallback(
|
||||
NotifyCallback callback, bool initialNotify);
|
||||
@@ -64,16 +67,16 @@ class RoboRioSim {
|
||||
static std::unique_ptr<CallbackStore> RegisterUserVoltage5VCallback(
|
||||
NotifyCallback callback, bool initialNotify);
|
||||
|
||||
static double GetUserVoltage5V();
|
||||
static units::volt_t GetUserVoltage5V();
|
||||
|
||||
static void SetUserVoltage5V(double userVoltage5V);
|
||||
static void SetUserVoltage5V(units::volt_t userVoltage5V);
|
||||
|
||||
static std::unique_ptr<CallbackStore> RegisterUserCurrent5VCallback(
|
||||
NotifyCallback callback, bool initialNotify);
|
||||
|
||||
static double GetUserCurrent5V();
|
||||
static units::ampere_t GetUserCurrent5V();
|
||||
|
||||
static void SetUserCurrent5V(double userCurrent5V);
|
||||
static void SetUserCurrent5V(units::ampere_t userCurrent5V);
|
||||
|
||||
static std::unique_ptr<CallbackStore> RegisterUserActive5VCallback(
|
||||
NotifyCallback callback, bool initialNotify);
|
||||
@@ -85,16 +88,16 @@ class RoboRioSim {
|
||||
static std::unique_ptr<CallbackStore> RegisterUserVoltage3V3Callback(
|
||||
NotifyCallback callback, bool initialNotify);
|
||||
|
||||
static double GetUserVoltage3V3();
|
||||
static units::volt_t GetUserVoltage3V3();
|
||||
|
||||
static void SetUserVoltage3V3(double userVoltage3V3);
|
||||
static void SetUserVoltage3V3(units::volt_t userVoltage3V3);
|
||||
|
||||
static std::unique_ptr<CallbackStore> RegisterUserCurrent3V3Callback(
|
||||
NotifyCallback callback, bool initialNotify);
|
||||
|
||||
static double GetUserCurrent3V3();
|
||||
static units::ampere_t GetUserCurrent3V3();
|
||||
|
||||
static void SetUserCurrent3V3(double userCurrent3V3);
|
||||
static void SetUserCurrent3V3(units::ampere_t userCurrent3V3);
|
||||
|
||||
static std::unique_ptr<CallbackStore> RegisterUserActive3V3Callback(
|
||||
NotifyCallback callback, bool initialNotify);
|
||||
|
||||
@@ -47,7 +47,7 @@ TEST(StateSpaceSimTest, TestFlywheelSim) {
|
||||
|
||||
// Then, SimulationPeriodic runs
|
||||
frc::sim::RoboRioSim::SetVInVoltage(
|
||||
frc::sim::BatterySim::Calculate({sim.GetCurrentDraw()}).to<double>());
|
||||
frc::sim::BatterySim::Calculate({sim.GetCurrentDraw()}));
|
||||
sim.SetInput(frc::MakeMatrix<1, 1>(
|
||||
motor.Get() * frc::RobotController::GetInputVoltage()));
|
||||
sim.Update(20_ms);
|
||||
|
||||
@@ -82,8 +82,7 @@ class Robot : public frc::TimedRobot {
|
||||
m_encoderSim.SetDistance(m_armSim.GetAngle().to<double>());
|
||||
// SimBattery estimates loaded battery voltages
|
||||
frc::sim::RoboRioSim::SetVInVoltage(
|
||||
frc::sim::BatterySim::Calculate({m_armSim.GetCurrentDraw()})
|
||||
.to<double>());
|
||||
frc::sim::BatterySim::Calculate({m_armSim.GetCurrentDraw()}));
|
||||
}
|
||||
|
||||
void TeleopPeriodic() {
|
||||
|
||||
@@ -81,8 +81,7 @@ class Robot : public frc::TimedRobot {
|
||||
m_encoderSim.SetDistance(m_elevatorSim.GetPosition().to<double>());
|
||||
// SimBattery estimates loaded battery voltages
|
||||
frc::sim::RoboRioSim::SetVInVoltage(
|
||||
frc::sim::BatterySim::Calculate({m_elevatorSim.GetCurrentDraw()})
|
||||
.to<double>());
|
||||
frc::sim::BatterySim::Calculate({m_elevatorSim.GetCurrentDraw()}));
|
||||
}
|
||||
|
||||
void TeleopPeriodic() {
|
||||
|
||||
Reference in New Issue
Block a user