David's dead reckoning code for the LVBots competition on March 6th. Uses the mbed LPC1768, DRV8835, QTR-3RC, and two DC motors with encoders.

Dependencies:   PololuEncoder Pacer mbed GeneralDebouncer

reckoner.h

Committer:
DavidEGrayson
Date:
2014-03-13
Revision:
38:5e93a479c244
Parent:
36:ccb03b734737
Child:
43:0e985a58f174

File content as of revision 38:5e93a479c244:

#pragma once

class Reckoner
{
    public:
    
    Reckoner();
    
    // Together, cos and sin form a vector with a magnitude close to 2^30 that indicates
    // the current position of the robot.
    // cos corresponds to the x component of the orientation vector.
    // sin corresponds to the y component of the orientation vector.
    int32_t cos, sin;
    
    // Together, x and y are a vector that points from the starting point to the
    // robot's current position.
    // The untis are Df / (1<<14), where Df is the distance the robot moves forward
    // or backwards due to a single encoder tick.
    int32_t x, y;

    void reset();

    void handleTickLeftForward();
    void handleTickLeftBackward();
    void handleTickRightForward();
    void handleTickRightBackward();
    void handleForward();
    void handleBackward();
    void handleRight();
    void handleLeft();
    void handleTurnRadians(int32_t radians);
};