Robot's source code

Dependencies:   mbed

Odometry/Odometry.h

Committer:
Jagang
Date:
2015-04-09
Revision:
57:ab13f4e7a2b2
Parent:
48:cb3ebbc27db3
Child:
63:fd9af0693e50

File content as of revision 57:ab13f4e7a2b2:

#ifndef ODOMETRY_H
#define ODOMETRY_H

#include "mbed.h"
#include "QEI.h"

class Odometry
{
    public:
        Odometry(QEI *qei_left, QEI *qei_right, float radius_left, float radius_right, float v);
        
        void setPos(float x, float y, float theta);
        void setVit(float Vx, float Vy, float W);
        void setVitPhi(float phi_r, float phi_l);
        void setX(float x);
        void setY(float Y);
        void setTheta(float theta);
        
        float getX() {return x;}
        float getY() {return y;}
        float getTheta() {return theta;}
        
        void reset();
        
        float getVx()   {return Vx;}
        float getVy()   {return Vy;}
        float getW()   {return W;}
        float getPhiright()
        {
            phi_r = (m_distPerTick_right/radius_right)*(delta_right/dt);            
            return phi_r;
        }
        
        float getPhileft() 
        {
            phi_l = (m_distPerTick_left/radius_left)*(delta_left/dt);
            return phi_l;
        }
        
        float getVitLeft() {return m_vitLeft;}
        float getVitRight() {return m_vitRight;}
    
    private:
        QEI* m_qei_left;
        int m_pulses_left;
        QEI* m_qei_right;
        int m_pulses_right;
        int delta_right;
        int delta_left;
        float radius_left;
        float radius_right;
        
        float x, y, theta;
        float m_vitLeft, m_vitRight;
        float offsetVx, offsetVy;
        bool initoffset;
        float Vx,Vy,W;
        float phi_r,phi_l;
        float dt;
        Timer timer;
        
        float m_distPerTick_left, m_distPerTick_right, m_v;
        
        Ticker updater;
        
        void update();
};

#endif