librmb 1.0
Rambunction 4330 Utility Library
Loading...
Searching...
No Matches
ServoPositionController.h
1
2#pragma once
3
4#include <units/angle.h>
5#include <units/angular_velocity.h>
6
7#include <frc/Servo.h>
8
9#include "rmb/motorcontrol/AngularPositionController.h"
10
11namespace rmb {
12
18public:
21
22 ServoPositionController(int channel) : servo(channel) {}
23
24 virtual ~ServoPositionController() = default;
25
31 virtual void setPosition(units::radian_t position) {
32 units::radian_t tagrePosition =
33 std::clamp(position * inversion, minPosition, maxPosition);
34 return servo.SetAngle(units::degree_t(tagrePosition).to<double>());
35 }
36
42 virtual units::radian_t getTargetPosition() const {
43 return units::degree_t(servo.GetAngle() * inversion);
44 }
45
51 virtual units::radian_t getMinPosition() const { return minPosition; }
52
58 virtual units::radian_t getMaxPosition() const { return maxPosition; }
59
65 virtual void setInverted(bool isInverted) { inversion = isInverted ? -1 : 1; }
66
72 virtual bool getInverted() const { return inversion == 1; }
73
77 virtual void disable() { servo.SetDisabled(); }
78
82 virtual void stop() { servo.SetDisabled(); }
83
84private:
85 frc::Servo servo;
86 int inversion = 1;
87 units::radian_t minPosition = 0_deg;
88 units::radian_t maxPosition = 180_deg;
89};
90} // namespace rmb
Definition AngularPositionController.h:19
Definition ServoPositionController.h:17
virtual units::radian_t getMinPosition() const
Definition ServoPositionController.h:51
virtual units::radian_t getTargetPosition() const
Definition ServoPositionController.h:42
virtual void stop()
Definition ServoPositionController.h:82
virtual void setInverted(bool isInverted)
Definition ServoPositionController.h:65
virtual units::radian_t getMaxPosition() const
Definition ServoPositionController.h:58
virtual bool getInverted() const
Definition ServoPositionController.h:72
virtual void setPosition(units::radian_t position)
Definition ServoPositionController.h:31
virtual void disable()
Definition ServoPositionController.h:77
the master namespace of librmb
Definition LogitechGamepad.h:9