Six crescent shaped legs

Dependencies:   mbed

EncoderMotor.hpp

Committer:
sim642
Date:
2016-06-21
Revision:
47:4f418a4b0051
Parent:
37:8021b3ce241a

File content as of revision 47:4f418a4b0051:

#ifndef ENCODER_MOTOR_H
#define ENCODER_MOTOR_H

#include "Motor.hpp"
#include "SpeedEncoder.hpp"
#include "LerpSmoother.hpp"
#include "PIDController.hpp"
#include "SyncGroup.hpp"
#include <limits>

class EncoderMotor : public Motor
{
public:
    enum Mode
    {
        NoMode,
        SpeedMode,
        TurnMode
    };
    
    EncoderMotor(MotorData nData, EncoderData encData, PIDData speedPIDData, PIDData turnPIDData, SyncGroup *nSync = NULL);
    
    virtual void drive(float speed);
    virtual void rotate(float turn, float speedLimit = std::numeric_limits<float>::max());
    
    SpeedEncoder& getEncoder();
    float getSetSpeed() const;
    float getSetTurn() const;
    
//private:
    void tick();
    
    SpeedEncoder encoder;
    LerpSmoother speedSmoother;
    
    Mode mode;
    
    PIDController speedPID;
    float setSpeed;
    
    PIDController turnPID;
    float setTurn;
    float turnSpeedLimit;
    float errorTurn;
    
    SyncGroup *sync;
};

#endif // ENCODER_MOTOR_H