Rauno U
/
Miisu
Six crescent shaped legs
EncoderMotor.hpp@17:cb8ad2fc76e5, 2016-04-12 (annotated)
- Committer:
- sim642
- Date:
- Tue Apr 12 21:48:53 2016 +0000
- Revision:
- 17:cb8ad2fc76e5
- Parent:
- 16:4161d7af6b5a
- Child:
- 18:1437610bea8b
Add rotate speed limiting functionality
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 | 17:cb8ad2fc76e5 | 8 | #include <limits> |
sim642 | 3:2235787e78c4 | 9 | |
sim642 | 3:2235787e78c4 | 10 | class EncoderMotor : public Motor |
sim642 | 3:2235787e78c4 | 11 | { |
sim642 | 3:2235787e78c4 | 12 | public: |
sim642 | 16:4161d7af6b5a | 13 | enum Mode |
sim642 | 16:4161d7af6b5a | 14 | { |
sim642 | 16:4161d7af6b5a | 15 | NoMode, |
sim642 | 16:4161d7af6b5a | 16 | SpeedMode, |
sim642 | 16:4161d7af6b5a | 17 | TurnMode |
sim642 | 16:4161d7af6b5a | 18 | }; |
sim642 | 16:4161d7af6b5a | 19 | |
sim642 | 13:dc5f5f19e4e8 | 20 | EncoderMotor(MotorData nData, EncoderData encData, PIDData speedPIDData, PIDData turnPIDData); |
sim642 | 3:2235787e78c4 | 21 | void setup(); |
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 | 16:4161d7af6b5a | 26 | private: |
sim642 | 3:2235787e78c4 | 27 | void tick(); |
sim642 | 3:2235787e78c4 | 28 | |
sim642 | 16:4161d7af6b5a | 29 | Ticker ticker; |
sim642 | 16:4161d7af6b5a | 30 | |
sim642 | 11:a0976d3b33c5 | 31 | SpeedEncoder encoder; |
sim642 | 12:8de7f5d56fe4 | 32 | LerpSmoother speedSmoother; |
sim642 | 3:2235787e78c4 | 33 | |
sim642 | 16:4161d7af6b5a | 34 | Mode mode; |
sim642 | 3:2235787e78c4 | 35 | |
sim642 | 16:4161d7af6b5a | 36 | PIDController speedPID; |
sim642 | 16:4161d7af6b5a | 37 | float setSpeed; |
sim642 | 5:7f800f61cb13 | 38 | |
sim642 | 13:dc5f5f19e4e8 | 39 | PIDController turnPID; |
sim642 | 16:4161d7af6b5a | 40 | float setTurn; |
sim642 | 17:cb8ad2fc76e5 | 41 | float turnSpeedLimit; |
sim642 | 3:2235787e78c4 | 42 | }; |
sim642 | 3:2235787e78c4 | 43 | |
sim642 | 3:2235787e78c4 | 44 | #endif // ENCODER_MOTOR_H |