LRT13  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 "../ComponentData/DrivetrainData.h"
7 #include "../Config/Configurable.h"
8 #include "../Log/Loggable.h"
9 #include "../Utils/Defines.h"
10 
14 class DriveEncoders : public Configurable, public Loggable
15 {
16 private:
17  static DriveEncoders* m_instance;
18  std::string m_configsection;
19 
20  LRTEncoder* m_encoders[4];//not all of the array is used
21 
22  double PULSES_PER_REVOLUTION; // pulses per wheel revolution [BA]
23 
24  double MAX_ENCODER_RATE;
25  double MAX_TURNING_RATE;
26 
27  double TICKS_PER_FULL_TURN;
28  double WHEEL_DIAMETER; // in
29 public:
30  const static double PI = 3.14159;
35  static DriveEncoders* GetInstance();
36 
40  static void Finalize();
41 
45  virtual ~DriveEncoders();
46 
50  virtual void Configure();
51 
55  virtual void Log();
56 
61  double getMaxEncoderRate();
62 
67  double getMaxSpeed();
68 
73  double getMaxTurnRate();
74 
79  double GetRawForwardSpeed(); //not normalized
80 
86 
91  double getRawTurningSpeed();
92 
98 
103  double getRobotDist();
104 
109  int getTurnTicks();
110 
115  double getTurnRevolutions();
116 
121  double getTurnAngle();
122 
128  double getWheelDist(data::drivetrain::Side side);
129 
130 
136  double getNormalizedSpeed(data::drivetrain::Side side);
137 
143  double getTurnRadius();
144 
148  LRTEncoder *getEncoder(data::drivetrain::Side side);
149 protected:
150  DriveEncoders();
151  DISALLOW_COPY_AND_ASSIGN(DriveEncoders);
152 };
153 
154 #endif