Rauno U
/
Miisu
Six crescent shaped legs
EncoderMotor.hpp@23:d844cc906b66, 2016-04-19 (annotated)
- Committer:
- sim642
- Date:
- Tue Apr 19 16:03:56 2016 +0000
- Revision:
- 23:d844cc906b66
- Parent:
- 22:bfc79c6ea2fd
- Child:
- 27:24a9ac72fe92
Encoder doesn't work in ticker
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 | void setup(); |
sim642 | 3:2235787e78c4 | 23 | |
sim642 | 16:4161d7af6b5a | 24 | virtual void drive(float speed); |
sim642 | 17:cb8ad2fc76e5 | 25 | virtual void rotate(float turn, float speedLimit = std::numeric_limits<float>::max()); |
sim642 | 5:7f800f61cb13 | 26 | |
sim642 | 23:d844cc906b66 | 27 | const SpeedEncoder& getEncoder() const; |
sim642 | 23:d844cc906b66 | 28 | float getSetSpeed() const; |
sim642 | 23:d844cc906b66 | 29 | float getSetTurn() const; |
sim642 | 22:bfc79c6ea2fd | 30 | |
sim642 | 23:d844cc906b66 | 31 | //private: |
sim642 | 3:2235787e78c4 | 32 | void tick(); |
sim642 | 3:2235787e78c4 | 33 | |
sim642 | 16:4161d7af6b5a | 34 | Ticker ticker; |
sim642 | 16:4161d7af6b5a | 35 | |
sim642 | 11:a0976d3b33c5 | 36 | SpeedEncoder encoder; |
sim642 | 12:8de7f5d56fe4 | 37 | LerpSmoother speedSmoother; |
sim642 | 3:2235787e78c4 | 38 | |
sim642 | 16:4161d7af6b5a | 39 | Mode mode; |
sim642 | 3:2235787e78c4 | 40 | |
sim642 | 16:4161d7af6b5a | 41 | PIDController speedPID; |
sim642 | 16:4161d7af6b5a | 42 | float setSpeed; |
sim642 | 5:7f800f61cb13 | 43 | |
sim642 | 13:dc5f5f19e4e8 | 44 | PIDController turnPID; |
sim642 | 16:4161d7af6b5a | 45 | float setTurn; |
sim642 | 17:cb8ad2fc76e5 | 46 | float turnSpeedLimit; |
sim642 | 18:1437610bea8b | 47 | |
sim642 | 18:1437610bea8b | 48 | SyncGroup *sync; |
sim642 | 3:2235787e78c4 | 49 | }; |
sim642 | 3:2235787e78c4 | 50 | |
sim642 | 3:2235787e78c4 | 51 | #endif // ENCODER_MOTOR_H |