Terrabots
/
Tracker2
Made distance public
Fork of Tracker by
Tracker.h@6:50f337affc44, 2017-02-14 (annotated)
- 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?
User | Revision | Line number | New 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 |