librmb 1.0
Rambunction 4330 Utility Library
Loading...
Searching...
No Matches
TalonFXVelocityController.h
1#pragma once
2
3#include <optional>
4
5#include "rmb/motorcontrol/AngularVelocityController.h"
6
7#include "TalonFXPositionController.h"
8#include "units/angular_velocity.h"
9
10#include <ctre/phoenix6/CANcoder.hpp>
11#include <ctre/phoenix6/TalonFX.hpp>
12
13namespace rmb {
14namespace TalonFXVelocityControllerHelper {
15struct PIDConfig {
16 double p = 0.0, i = 0.0, d = 0.0, ff = 0.0;
17
18 units::second_t rampRate = 1.0_s;
19};
20
22 double minOutput = -1.0, maxOutput = 1.0;
23 units::second_t rampRate = 1.0_s;
24};
25
27 units::radians_per_second_t maxVelocity = 0.0_rad_per_s,
28 minVelocity = 0.0_rad_per_s;
29 units::radians_per_second_squared_t maxAcceleration = 0.0_rad_per_s_sq;
30};
31} // namespace TalonFXVelocityControllerHelper
32
34public:
35 struct CreateInfo {
42 std::optional<TalonFXPositionControllerHelper::CANCoderConfig>
43 canCoderConfig;
44 };
45
46 TalonFXVelocityController(const CreateInfo &createInfo);
47
48 virtual ~TalonFXVelocityController() = default;
49
50 //--------------------------------------------------
51 // Methods Inherited from AngularVelocityController
52 //--------------------------------------------------
53
59 void setVelocity(units::radians_per_second_t velocity) override;
60
66 units::radians_per_second_t getTargetVelocity() const override;
67
71 virtual void setPower(double power) override;
72
76 virtual double getPower() const override;
77
81 virtual void disable() override;
82
86 virtual void stop() override;
87
88 //---------------------------------------
89 // Methods Inherited from AngularEncoder
90 //---------------------------------------
91
97 units::radians_per_second_t getVelocity() const override;
98
104 units::radian_t getPosition() const override;
105
110 void setEncoderPosition(units::radian_t position = 0_rad) override;
111
112 //----------------------------------------------------------
113 // Methods Inherited from AngularvelocityFeedbackController
114 //----------------------------------------------------------
115
121 virtual units::radians_per_second_t getTolerance() const override {
122 return 0.0_rad_per_s;
123 }
124
129 void follow(const TalonFXVelocityController &parentController, bool inverted);
130
131private:
132 mutable ctre::phoenix6::hardware::TalonFX motorcontroller;
133
134 units::radians_per_second_t tolerance = 0.0_tps;
135
137
138 const bool usingCANCoder;
139
140 mutable std::optional<ctre::phoenix6::hardware::CANcoder> canCoder;
141};
142
143} // namespace rmb
Definition AngularVelocityController.h:19
Definition TalonFXVelocityController.h:33
virtual double getPower() const override
virtual units::radians_per_second_t getTolerance() const override
Definition TalonFXVelocityController.h:121
units::radians_per_second_t getTargetVelocity() const override
virtual void setPower(double power) override
void setVelocity(units::radians_per_second_t velocity) override
units::radian_t getPosition() const override
void follow(const TalonFXVelocityController &parentController, bool inverted)
virtual void disable() override
virtual void stop() override
units::radians_per_second_t getVelocity() const override
void setEncoderPosition(units::radian_t position=0_rad) override
the master namespace of librmb
Definition LogitechGamepad.h:9
describes current limits for the motor. This was copied (and slightly modified to include units:: typ...
Definition TalonFXPositionController.h:30
Definition TalonFXPositionController.h:131
Definition TalonFXPositionController.h:19
Definition TalonFXVelocityController.h:35
Definition TalonFXVelocityController.h:21
Definition TalonFXVelocityController.h:15
Definition TalonFXVelocityController.h:26