Six crescent shaped legs

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers EncoderMotor.hpp Source File

EncoderMotor.hpp

00001 #ifndef ENCODER_MOTOR_H
00002 #define ENCODER_MOTOR_H
00003 
00004 #include "Motor.hpp"
00005 #include "SpeedEncoder.hpp"
00006 #include "LerpSmoother.hpp"
00007 #include "PIDController.hpp"
00008 #include "SyncGroup.hpp"
00009 #include <limits>
00010 
00011 class EncoderMotor : public Motor
00012 {
00013 public:
00014     enum Mode
00015     {
00016         NoMode,
00017         SpeedMode,
00018         TurnMode
00019     };
00020     
00021     EncoderMotor(MotorData nData, EncoderData encData, PIDData speedPIDData, PIDData turnPIDData, SyncGroup *nSync = NULL);
00022     
00023     virtual void drive(float speed);
00024     virtual void rotate(float turn, float speedLimit = std::numeric_limits<float>::max());
00025     
00026     SpeedEncoder& getEncoder();
00027     float getSetSpeed() const;
00028     float getSetTurn() const;
00029     
00030 //private:
00031     void tick();
00032     
00033     SpeedEncoder encoder;
00034     LerpSmoother speedSmoother;
00035     
00036     Mode mode;
00037     
00038     PIDController speedPID;
00039     float setSpeed;
00040     
00041     PIDController turnPID;
00042     float setTurn;
00043     float turnSpeedLimit;
00044     float errorTurn;
00045     
00046     SyncGroup *sync;
00047 };
00048 
00049 #endif // ENCODER_MOTOR_H