11#include "wpi/units/angle.hpp"
12#include "wpi/units/length.hpp"
13#include "wpi/units/mass.hpp"
14#include "wpi/units/moment_of_inertia.hpp"
41 wpi::units::meter_t armLength,
42 wpi::units::radian_t minAngle,
43 wpi::units::radian_t maxAngle,
bool simulateGravity,
44 wpi::units::radian_t startingAngle,
45 const std::array<double, 2>& measurementStdDevs = {0.0,
66 wpi::units::kilogram_square_meter_t moi, wpi::units::meter_t armLength,
67 wpi::units::radian_t minAngle, wpi::units::radian_t maxAngle,
68 bool simulateGravity, wpi::units::radian_t startingAngle,
69 const std::array<double, 2>& measurementStdDevs = {0.0, 0.0});
81 wpi::units::radians_per_second_t velocity);
151 wpi::units::meter_t length, wpi::units::kilogram_t mass) {
152 return 1.0 / 3.0 * mass * length * length;
165 wpi::units::second_t dt)
override;
168 wpi::units::meter_t m_armLen;
169 wpi::units::radian_t m_minAngle;
170 wpi::units::radian_t m_maxAngle;
173 bool m_simulateGravity;
Holds the constants for a DC motor.
Definition DCMotor.hpp:19
A plant defined using state-space notation.
Definition LinearSystem.hpp:35
LinearSystemSim(const wpi::math::LinearSystem< States, Inputs, Outputs > &system, const std::array< double, Outputs > &measurementStdDevs={})
Definition LinearSystemSim.hpp:37
void SetState(const wpi::math::Vectord< States > &state)
Sets the system state.
Definition LinearSystemSim.hpp:117
wpi::units::radian_t GetAngle() const
Returns the current arm angle.
SingleJointedArmSim(const wpi::math::DCMotor &gearbox, double gearing, wpi::units::kilogram_square_meter_t moi, wpi::units::meter_t armLength, wpi::units::radian_t minAngle, wpi::units::radian_t maxAngle, bool simulateGravity, wpi::units::radian_t startingAngle, const std::array< double, 2 > &measurementStdDevs={0.0, 0.0})
Creates a simulated arm mechanism.
wpi::units::radians_per_second_t GetVelocity() const
Returns the current arm velocity.
void SetInputVoltage(wpi::units::volt_t voltage)
Sets the input voltage for the arm.
wpi::units::ampere_t GetCurrentDraw() const
Returns the arm current draw.
bool HasHitLowerLimit() const
Returns whether the arm has hit the lower limit.
bool HasHitUpperLimit() const
Returns whether the arm has hit the upper limit.
bool WouldHitLowerLimit(wpi::units::radian_t armAngle) const
Returns whether the arm would hit the lower limit.
static constexpr wpi::units::kilogram_square_meter_t EstimateMOI(wpi::units::meter_t length, wpi::units::kilogram_t mass)
Calculates a rough estimate of the moment of inertia of an arm given its length and mass.
Definition SingleJointedArmSim.hpp:150
wpi::math::Vectord< 2 > UpdateX(const wpi::math::Vectord< 2 > ¤tXhat, const wpi::math::Vectord< 1 > &u, wpi::units::second_t dt) override
Updates the state estimate of the arm.
void SetState(wpi::units::radian_t angle, wpi::units::radians_per_second_t velocity)
Sets the arm's state.
bool WouldHitUpperLimit(wpi::units::radian_t armAngle) const
Returns whether the arm would hit the upper limit.
SingleJointedArmSim(const wpi::math::LinearSystem< 2, 1, 2 > &system, const wpi::math::DCMotor &gearbox, double gearing, wpi::units::meter_t armLength, wpi::units::radian_t minAngle, wpi::units::radian_t maxAngle, bool simulateGravity, wpi::units::radian_t startingAngle, const std::array< double, 2 > &measurementStdDevs={0.0, 0.0})
Creates a simulated arm mechanism.
Eigen::Vector< double, Size > Vectord
Definition EigenCore.hpp:12
Definition CTREPCMSim.hpp:13