official library and example code for tracking X and Y positions on the dump truck

Dependencies:   QEI mbed

Dependents:   DUMP_TRUCK_TEST_V1 DUMP_TRUCK_SPR2017

Committer:
simplyellow
Date:
Tue Feb 14 21:18:43 2017 +0000
Revision:
6:50f337affc44
Parent:
5:757a984ac553
added doxygen tags for some variables

Who changed what in which revision?

UserRevisionLine numberNew contents of line
simplyellow 5:757a984ac553 1 /**
simplyellow 5:757a984ac553 2 * @file Tracker.h
simplyellow 5:757a984ac553 3 *
simplyellow 5:757a984ac553 4 * @brief Tracker class implements API for sensing the position of the
simplyellow 5:757a984ac553 5 * dump truck.
simplyellow 5:757a984ac553 6 *
simplyellow 5:757a984ac553 7 * @author Terrabots Team
simplyellow 5:757a984ac553 8 *
simplyellow 5:757a984ac553 9 */
simplyellow 5:757a984ac553 10
simplyellow 0:8038ea3ee241 11 #ifndef TRACKER_H
simplyellow 0:8038ea3ee241 12 #define TRACKER_H
simplyellow 0:8038ea3ee241 13
simplyellow 0:8038ea3ee241 14 #include "mbed.h"
simplyellow 0:8038ea3ee241 15 #include "QEI.h"
simplyellow 0:8038ea3ee241 16
simplyellow 5:757a984ac553 17 /**
simplyellow 5:757a984ac553 18 * @class Tracker
simplyellow 5:757a984ac553 19 *
simplyellow 5:757a984ac553 20 * @brief Interface for tracking the position of a Dump Truck configured
simplyellow 5:757a984ac553 21 * "robot."
simplyellow 5:757a984ac553 22 */
simplyellow 5:757a984ac553 23
simplyellow 0:8038ea3ee241 24 #define STRAIGHT 0
simplyellow 0:8038ea3ee241 25 #define CCW 1
simplyellow 0:8038ea3ee241 26 #define CW 2
simplyellow 0:8038ea3ee241 27 #define PI 3.14159265
simplyellow 0:8038ea3ee241 28
simplyellow 0:8038ea3ee241 29 class Tracker {
simplyellow 0:8038ea3ee241 30 public:
simplyellow 5:757a984ac553 31 /**
simplyellow 5:757a984ac553 32 * Constructor for the Tracker object.
simplyellow 5:757a984ac553 33 *
simplyellow 5:757a984ac553 34 * @param[in] _chA The interrupt pin used for channel A
simplyellow 5:757a984ac553 35 * @param[in] _chB The interrupt pin used for channel B
simplyellow 5:757a984ac553 36 * @param[in] _pot The AnalogIn pin used for the potentiometer
simplyellow 5:757a984ac553 37 */
simplyellow 0:8038ea3ee241 38 Tracker(PinName _chA, PinName _chB, PinName _pot);
simplyellow 5:757a984ac553 39 /**
simplyellow 5:757a984ac553 40 * Set initial position and distance traveled to 0.
simplyellow 5:757a984ac553 41 */
simplyellow 0:8038ea3ee241 42 void clear();
simplyellow 5:757a984ac553 43 /**
simplyellow 5:757a984ac553 44 * Set a reference "zero angle" for the potentiometer and wait five
simplyellow 5:757a984ac553 45 * seconds for the user to set a turning angle.
simplyellow 5:757a984ac553 46 */
simplyellow 0:8038ea3ee241 47 void potSetup();
simplyellow 5:757a984ac553 48 /**
simplyellow 5:757a984ac553 49 * Set a direction, either clockwise or counterclockwise, for the
simplyellow 5:757a984ac553 50 * dump truck, based on the turning angle.
simplyellow 5:757a984ac553 51 */
simplyellow 0:8038ea3ee241 52 void setDirection();
simplyellow 5:757a984ac553 53 /**
simplyellow 5:757a984ac553 54 * Check if the dump truck has moved before starting position-tracking
simplyellow 5:757a984ac553 55 * calculations.
simplyellow 5:757a984ac553 56 */
simplyellow 0:8038ea3ee241 57 void checkToStart();
simplyellow 5:757a984ac553 58 /**
simplyellow 5:757a984ac553 59 * Calculate the x and y position of the dump truck based on sensor
simplyellow 5:757a984ac553 60 * measurements.
simplyellow 5:757a984ac553 61 */
simplyellow 0:8038ea3ee241 62 void calcDisplacement();
simplyellow 0:8038ea3ee241 63 private:
simplyellow 6:50f337affc44 64 /**
simplyellow 6:50f337affc44 65 * The QEI object created with the QEI library to interpret encoder
simplyellow 6:50f337affc44 66 * measurements.
simplyellow 6:50f337affc44 67 */
simplyellow 0:8038ea3ee241 68 QEI *wheel;
simplyellow 6:50f337affc44 69 /**
simplyellow 6:50f337affc44 70 * The interrupt pin used for channel A.
simplyellow 6:50f337affc44 71 */
simplyellow 0:8038ea3ee241 72 PinName chA;
simplyellow 6:50f337affc44 73 /**
simplyellow 6:50f337affc44 74 * The interrupt pin used for channel B.
simplyellow 6:50f337affc44 75 */
simplyellow 0:8038ea3ee241 76 PinName chB;
simplyellow 6:50f337affc44 77 /**
simplyellow 6:50f337affc44 78 * The AnalogIn pin used for the potentiometer.
simplyellow 6:50f337affc44 79 */
simplyellow 0:8038ea3ee241 80 AnalogIn pot;
simplyellow 6:50f337affc44 81 /**
simplyellow 6:50f337affc44 82 * The number of pulses recorded by the encoder.
simplyellow 6:50f337affc44 83 */
simplyellow 0:8038ea3ee241 84 float pulseCount;
simplyellow 6:50f337affc44 85 /**
simplyellow 6:50f337affc44 86 * The type of encoding (X2 or X4) used for the encoder.
simplyellow 6:50f337affc44 87 */
simplyellow 0:8038ea3ee241 88 float encoding;
simplyellow 6:50f337affc44 89 /**
simplyellow 6:50f337affc44 90 * The circumference of the front dump truck wheel.
simplyellow 6:50f337affc44 91 */
simplyellow 0:8038ea3ee241 92 float circumference;
simplyellow 6:50f337affc44 93 /**
simplyellow 6:50f337affc44 94 * Equal to 1360. This constant is used to convert pulses counted to
simplyellow 6:50f337affc44 95 * inches traveled.
simplyellow 6:50f337affc44 96 */
simplyellow 0:8038ea3ee241 97 float constant;
simplyellow 6:50f337affc44 98 /**
simplyellow 6:50f337affc44 99 * The distance traveled by the dump truck.
simplyellow 6:50f337affc44 100 */
simplyellow 0:8038ea3ee241 101 float distance;
simplyellow 6:50f337affc44 102 /**
simplyellow 6:50f337affc44 103 * The horizontal position of the dump truck.
simplyellow 6:50f337affc44 104 */
simplyellow 0:8038ea3ee241 105 float x;
simplyellow 6:50f337affc44 106 /**
simplyellow 6:50f337affc44 107 * The vertical position of the dump truck.
simplyellow 6:50f337affc44 108 */
simplyellow 0:8038ea3ee241 109 float y;
simplyellow 6:50f337affc44 110 /**
simplyellow 6:50f337affc44 111 * The raw analog value of the potentiometer
simplyellow 6:50f337affc44 112 */
simplyellow 0:8038ea3ee241 113 float value;
simplyellow 6:50f337affc44 114 /**
simplyellow 6:50f337affc44 115 * The angle at which the dump truck is turning.
simplyellow 6:50f337affc44 116 */
simplyellow 0:8038ea3ee241 117 float turnAngle;
simplyellow 6:50f337affc44 118 /**
simplyellow 6:50f337affc44 119 * The angle at which the dump truck is driving straight forward.
simplyellow 6:50f337affc44 120 */
simplyellow 0:8038ea3ee241 121 float zeroAngle;
simplyellow 6:50f337affc44 122 /**
simplyellow 6:50f337affc44 123 * The direction at which the dump truck is turning.
simplyellow 6:50f337affc44 124 */
simplyellow 0:8038ea3ee241 125 int dir;
simplyellow 6:50f337affc44 126 /**
simplyellow 6:50f337affc44 127 * The distance from the front wheel to the turning axle.
simplyellow 6:50f337affc44 128 */
simplyellow 0:8038ea3ee241 129 float df;
simplyellow 6:50f337affc44 130 /**
simplyellow 6:50f337affc44 131 * The distance from the rear wheel to the turning axle.
simplyellow 6:50f337affc44 132 */
simplyellow 0:8038ea3ee241 133 float db;
simplyellow 0:8038ea3ee241 134 float W;
simplyellow 0:8038ea3ee241 135 float R;
simplyellow 0:8038ea3ee241 136 float dispAngle;
simplyellow 0:8038ea3ee241 137
simplyellow 0:8038ea3ee241 138 };
simplyellow 0:8038ea3ee241 139 #endif