9#include <wpi/math/controller/LinearQuadraticRegulator.hpp>
10#include <wpi/math/estimator/KalmanFilter.hpp>
11#include <wpi/math/system/DCMotor.hpp>
12#include <wpi/math/system/LinearSystem.hpp>
13#include <wpi/math/system/LinearSystemLoop.hpp>
14#include <wpi/math/system/Models.hpp>
15#include <wpi/units/time.hpp>
16#include <wpi/units/voltage.hpp>
37 using Loop1 = wpi::math::LinearSystemLoop<1, 1, 1>;
39 using Loop2 = wpi::math::LinearSystemLoop<2, 1, 1>;
161 std::variant<wpi::math::LinearSystem<1, 1, 1>, wpi::math::LinearSystem<2, 1, 1>>
GetSystem()
174 std::optional<LQRType> m_type;
175 std::optional<wpi::math::LinearSystem<1, 1, 1>> m_flywheelPlant;
176 std::optional<wpi::math::LinearSystem<2, 1, 1>> m_armElevatorPlant;
178 std::vector<double> m_qElems;
179 std::vector<double> m_rElems;
180 std::vector<double> m_stateStdDevs;
181 std::vector<double> m_measStdDevs;
183 wpi::units::volt_t m_maxVoltage{wpi::units::volt_t{12.0}};
184 wpi::units::second_t m_period{wpi::units::second_t{0.020}};
Definition LQRConfig.hpp:27
LQRConfig & WithStateStdDevs(std::initializer_list< double > stateStdDevs)
LQRConfig & WithElevatorSystem(const wpi::math::DCMotor &motor, double mass, double drumRadius, double gearing)
LQRConfig & WithMaxVoltage(wpi::units::volt_t maxVoltage)
LQRConfig & WithQElems(std::initializer_list< double > qElems)
LQRConfig & WithArmSystem(const wpi::math::DCMotor &motor, double momentOfInertia, double gearing)
wpi::math::LinearSystemLoop< 2, 1, 1 > Loop2
Definition LQRConfig.hpp:39
LQRConfig & WithType(LQRType type)
wpi::units::second_t GetPeriod() const
LQRType
Definition LQRConfig.hpp:30
@ ELEVATOR
Elevator (2-state position+velocity model).
@ FLYWHEEL
Flywheel (1-state velocity model).
@ ARM
Single-jointed arm (2-state position+velocity model).
LQRConfig & WithRElems(std::initializer_list< double > rElems)
wpi::units::volt_t GetMaxVoltage() const
std::variant< wpi::math::LinearSystem< 1, 1, 1 >, wpi::math::LinearSystem< 2, 1, 1 > > GetSystem() const
LQRConfig & WithMeasurementStdDevs(std::initializer_list< double > measStdDevs)
std::variant< Loop1, Loop2 > GetLoop() const
LQRConfig & WithPeriod(wpi::units::second_t period)
wpi::math::LinearSystemLoop< 1, 1, 1 > Loop1
Definition LQRConfig.hpp:37
LQRConfig & WithFlywheelSystem(const wpi::math::DCMotor &motor, double momentOfInertia, double gearing)
Definition LQRController.hpp:35
Definition DerivativeTimeFilter.hpp:10