LRT14  1.0
 All Classes Namespaces Functions Variables Enumerations Enumerator
DriveEncoders.h
1 #ifndef DRIVE_ENCODERS_H_
2 #define DRIVE_ENCODERS_H_
3 
4 #include "WPILib.h"
5 #include "LRTEncoder.h"
6 #include "../Config/Configurable.h"
7 #include "../Logging/Loggable.h"
8 #include <Rhesus/Toolkit/Defines.h>
9 
13 class DriveEncoders : public Configurable, public Loggable
14 {
15 public:
16  enum Side
17  {
18  LEFT = 0,
19  RIGHT = 1
20  };
21 
22  DriveEncoders(uint32_t leftSourceA, uint32_t leftSourceB, uint32_t rightSourceA, uint32_t rightSourceB);
23 
28 
29  static DriveEncoders* Get();
30 
34  void Configure();
35 
39  void Log();
40 
45  double GetRawForwardSpeed();
46 
52 
57  double GetRawTurningSpeed();
58 
64 
69  double GetRobotDist();
70 
75  int GetTurnTicks();
76 
81  double GetTurnRevolutions();
82 
87  double GetTurnAngle();
88 
94  double GetWheelDist(Side side);
95 
96 
102  double GetNormalizedSpeed(Side side);
103 
109  double GetTurnRadius();
110 
115  LRTEncoder* GetEncoder(Side side);
116 
121  static double GetMaxEncoderRate();
122 
127  static double GetMaxSpeed();
128 
133  static double GetMaxTurnRate();
134 
135 private:
136  static DriveEncoders* m_instance;
137 
138  const static double PI = 3.14159;
139 
140  LRTEncoder* m_encoders[2];
141 
142  static double PULSES_PER_REVOLUTION; // Encoder pulses per wheel revolution
143  static double MAX_ENCODER_RATE;
144  static double MAX_TURNING_RATE;
145  static double TICKS_PER_FULL_TURN;
146  static double WHEEL_DIAMETER; // Inches
147  static double GEAR_RATIO;
148 };
149 
150 #endif