Rauno U
/
Miisu
Six crescent shaped legs
EncoderMotor.hpp@47:4f418a4b0051, 2016-06-21 (annotated)
- Committer:
- sim642
- Date:
- Tue Jun 21 14:43:44 2016 +0000
- Revision:
- 47:4f418a4b0051
- Parent:
- 37:8021b3ce241a
Byte based communication
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sim642 | 3:2235787e78c4 | 1 | #ifndef ENCODER_MOTOR_H |
sim642 | 3:2235787e78c4 | 2 | #define ENCODER_MOTOR_H |
sim642 | 3:2235787e78c4 | 3 | |
sim642 | 3:2235787e78c4 | 4 | #include "Motor.hpp" |
sim642 | 6:9f9047ca4a89 | 5 | #include "SpeedEncoder.hpp" |
sim642 | 12:8de7f5d56fe4 | 6 | #include "LerpSmoother.hpp" |
sim642 | 13:dc5f5f19e4e8 | 7 | #include "PIDController.hpp" |
sim642 | 18:1437610bea8b | 8 | #include "SyncGroup.hpp" |
sim642 | 17:cb8ad2fc76e5 | 9 | #include <limits> |
sim642 | 3:2235787e78c4 | 10 | |
sim642 | 3:2235787e78c4 | 11 | class EncoderMotor : public Motor |
sim642 | 3:2235787e78c4 | 12 | { |
sim642 | 3:2235787e78c4 | 13 | public: |
sim642 | 16:4161d7af6b5a | 14 | enum Mode |
sim642 | 16:4161d7af6b5a | 15 | { |
sim642 | 16:4161d7af6b5a | 16 | NoMode, |
sim642 | 16:4161d7af6b5a | 17 | SpeedMode, |
sim642 | 16:4161d7af6b5a | 18 | TurnMode |
sim642 | 16:4161d7af6b5a | 19 | }; |
sim642 | 16:4161d7af6b5a | 20 | |
sim642 | 18:1437610bea8b | 21 | EncoderMotor(MotorData nData, EncoderData encData, PIDData speedPIDData, PIDData turnPIDData, SyncGroup *nSync = NULL); |
sim642 | 3:2235787e78c4 | 22 | |
sim642 | 16:4161d7af6b5a | 23 | virtual void drive(float speed); |
sim642 | 17:cb8ad2fc76e5 | 24 | virtual void rotate(float turn, float speedLimit = std::numeric_limits<float>::max()); |
sim642 | 5:7f800f61cb13 | 25 | |
sim642 | 37:8021b3ce241a | 26 | SpeedEncoder& getEncoder(); |
sim642 | 23:d844cc906b66 | 27 | float getSetSpeed() const; |
sim642 | 23:d844cc906b66 | 28 | float getSetTurn() const; |
sim642 | 22:bfc79c6ea2fd | 29 | |
sim642 | 23:d844cc906b66 | 30 | //private: |
sim642 | 3:2235787e78c4 | 31 | void tick(); |
sim642 | 16:4161d7af6b5a | 32 | |
sim642 | 11:a0976d3b33c5 | 33 | SpeedEncoder encoder; |
sim642 | 12:8de7f5d56fe4 | 34 | LerpSmoother speedSmoother; |
sim642 | 3:2235787e78c4 | 35 | |
sim642 | 16:4161d7af6b5a | 36 | Mode mode; |
sim642 | 3:2235787e78c4 | 37 | |
sim642 | 16:4161d7af6b5a | 38 | PIDController speedPID; |
sim642 | 16:4161d7af6b5a | 39 | float setSpeed; |
sim642 | 5:7f800f61cb13 | 40 | |
sim642 | 13:dc5f5f19e4e8 | 41 | PIDController turnPID; |
sim642 | 16:4161d7af6b5a | 42 | float setTurn; |
sim642 | 17:cb8ad2fc76e5 | 43 | float turnSpeedLimit; |
phairero | 36:906323851366 | 44 | float errorTurn; |
sim642 | 18:1437610bea8b | 45 | |
sim642 | 18:1437610bea8b | 46 | SyncGroup *sync; |
sim642 | 3:2235787e78c4 | 47 | }; |
sim642 | 3:2235787e78c4 | 48 | |
sim642 | 3:2235787e78c4 | 49 | #endif // ENCODER_MOTOR_H |