librmb 1.0
Rambunction 4330 Utility Library
Loading...
Searching...
No Matches
AngularFeedforwardController.h
1
2#pragma once
3
4#include <algorithm>
5#include <limits>
6
7#include <frc/motorcontrol/MotorController.h>
8
9#include "rmb/motorcontrol/AngularVelocityController.h"
10#include "rmb/motorcontrol/feedforward/Feedforward.h"
11
12namespace rmb {
13
21public:
24
26 std::unique_ptr<frc::MotorController> &&motorController,
27 std::unique_ptr<rmb::Feedforward<units::radians>> &&feedforward)
28 : motorController(std::move(motorController)),
29 feedforward(std::move(feedforward)) {}
30
36 void setVelocity(units::radians_per_second_t velocity) {
37 targetVelocity = std::clamp(velocity, -maxVelocity, maxVelocity);
38 motorController->SetVoltage(feedforward->calculate(targetVelocity));
39 }
40
46 units::radians_per_second_t getTargetVelocity() const {
47 return targetVelocity;
48 }
49
55 void setMaxVelocity(units::radians_per_second_t max) { maxVelocity = max; }
56
62 units::radians_per_second_t getMaxVelocity() const { return maxVelocity; }
63
69 void setInverted(bool isInverted) {
70 motorController->SetInverted(isInverted);
71 }
72
78 bool getInverted() const { motorController->GetInverted(); }
79
83 void disable() {
84 targetVelocity = 0.0_rpm;
85 motorController->Disable();
86 }
87
91 void stop() {
92 targetVelocity = 0.0_rpm;
93 motorController->StopMotor();
94 }
95
96private:
97 std::unique_ptr<frc::MotorController> motorController;
98 std::unique_ptr<rmb::Feedforward<units::radians>> feedforward;
99 units::radians_per_second_t targetVelocity = 0.0_rpm;
100 units::radians_per_second_t maxVelocity =
101 units::radians_per_second_t(std::numeric_limits<double>::infinity());
102};
103} // namespace rmb
Definition AngularFeedforwardController.h:20
units::radians_per_second_t getTargetVelocity() const
Definition AngularFeedforwardController.h:46
bool getInverted() const
Definition AngularFeedforwardController.h:78
void disable()
Definition AngularFeedforwardController.h:83
void setMaxVelocity(units::radians_per_second_t max)
Definition AngularFeedforwardController.h:55
units::radians_per_second_t getMaxVelocity() const
Definition AngularFeedforwardController.h:62
void setVelocity(units::radians_per_second_t velocity)
Definition AngularFeedforwardController.h:36
void setInverted(bool isInverted)
Definition AngularFeedforwardController.h:69
void stop()
Definition AngularFeedforwardController.h:91
Definition AngularVelocityController.h:19
Definition Feedforward.h:15
the master namespace of librmb
Definition LogitechGamepad.h:9