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
Diff: reckoner.h
- Revision:
- 43:0e985a58f174
- Parent:
- 36:ccb03b734737
--- a/reckoner.h Sat Jul 27 20:58:46 2019 +0000 +++ b/reckoner.h Sat Jul 27 22:52:19 2019 +0000 @@ -1,32 +1,24 @@ #pragma once +#define RECKONER_LOG_UNIT 14 + class Reckoner { - public: +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, cos and sin form a vector with a magnitude close to 2^14 that + // indicate the current direction the robot is facint. + int32_t cosv, sinv; // 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. + // robot's current position, with units of Df / (1<<14), where Df is the + // distance the robot moves 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); + void setTurnAngle(int32_t angle); };