this code is completely restructured, but should do the same thing. did not want to directly commit, since it may not work at all. compiles though.
Dependencies: AVEncoder mbed-src-AV
Fork of Test by
mouse.h@13:5f08195456a4, 2015-12-15 (annotated)
- Committer:
- jimmery
- Date:
- Tue Dec 15 08:56:36 2015 +0000
- Revision:
- 13:5f08195456a4
HUGE RESTRUCTURING OF THE CODE.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jimmery | 13:5f08195456a4 | 1 | // HAS EVERYTHING RELATED TO THE MOUSE. |
jimmery | 13:5f08195456a4 | 2 | // includes implementations from: |
jimmery | 13:5f08195456a4 | 3 | // mouse.cpp, which includes all motor related actions. |
jimmery | 13:5f08195456a4 | 4 | // sensors.cpp, which includes all sensor information. |
jimmery | 13:5f08195456a4 | 5 | // pid.cpp, which includes the pid constants/algorithm. |
jimmery | 13:5f08195456a4 | 6 | // maze.cpp? when that gets implemented in the future. |
jimmery | 13:5f08195456a4 | 7 | |
jimmery | 13:5f08195456a4 | 8 | #ifndef MOUSE_H |
jimmery | 13:5f08195456a4 | 9 | #define MOUSE_H |
jimmery | 13:5f08195456a4 | 10 | |
jimmery | 13:5f08195456a4 | 11 | #include "AVEncoder.h" |
jimmery | 13:5f08195456a4 | 12 | |
jimmery | 13:5f08195456a4 | 13 | typedef enum |
jimmery | 13:5f08195456a4 | 14 | { |
jimmery | 13:5f08195456a4 | 15 | LEFT, |
jimmery | 13:5f08195456a4 | 16 | RIGHT, |
jimmery | 13:5f08195456a4 | 17 | AROUND, |
jimmery | 13:5f08195456a4 | 18 | INVALID |
jimmery | 13:5f08195456a4 | 19 | } TURN_DIRECTION; |
jimmery | 13:5f08195456a4 | 20 | |
jimmery | 13:5f08195456a4 | 21 | // this is just so that we can maintain what state our mouse is in. |
jimmery | 13:5f08195456a4 | 22 | // currently this has no real use, but it may in the future. |
jimmery | 13:5f08195456a4 | 23 | // or we could just remove this entirely. |
jimmery | 13:5f08195456a4 | 24 | typedef enum |
jimmery | 13:5f08195456a4 | 25 | { |
jimmery | 13:5f08195456a4 | 26 | STOPPED, |
jimmery | 13:5f08195456a4 | 27 | FORWARD, |
jimmery | 13:5f08195456a4 | 28 | TURNING, |
jimmery | 13:5f08195456a4 | 29 | MOVECELL, |
jimmery | 13:5f08195456a4 | 30 | FINISHED, |
jimmery | 13:5f08195456a4 | 31 | UNKNOWN |
jimmery | 13:5f08195456a4 | 32 | } STATE; |
jimmery | 13:5f08195456a4 | 33 | |
jimmery | 13:5f08195456a4 | 34 | class Mouse |
jimmery | 13:5f08195456a4 | 35 | { |
jimmery | 13:5f08195456a4 | 36 | public: |
jimmery | 13:5f08195456a4 | 37 | Mouse(); |
jimmery | 13:5f08195456a4 | 38 | void stop(); |
jimmery | 13:5f08195456a4 | 39 | void setForward( float left_speed, float right_speed ); |
jimmery | 13:5f08195456a4 | 40 | void turn( TURN_DIRECTION dir = LEFT, int n_times = 1 ); |
jimmery | 13:5f08195456a4 | 41 | void move_cell(); |
jimmery | 13:5f08195456a4 | 42 | |
jimmery | 13:5f08195456a4 | 43 | void scan(); |
jimmery | 13:5f08195456a4 | 44 | void sensor_reset(); |
jimmery | 13:5f08195456a4 | 45 | void offsetCalc(); |
jimmery | 13:5f08195456a4 | 46 | bool forward_wall_detected(); |
jimmery | 13:5f08195456a4 | 47 | bool side_opening_detected(); |
jimmery | 13:5f08195456a4 | 48 | |
jimmery | 13:5f08195456a4 | 49 | void run_pid(); |
jimmery | 13:5f08195456a4 | 50 | void pid_reset(); |
jimmery | 13:5f08195456a4 | 51 | |
jimmery | 13:5f08195456a4 | 52 | // TODO move into private eventually. |
jimmery | 13:5f08195456a4 | 53 | volatile TURN_DIRECTION turn_direction; |
jimmery | 13:5f08195456a4 | 54 | volatile STATE mouse_state; |
jimmery | 13:5f08195456a4 | 55 | private: |
jimmery | 13:5f08195456a4 | 56 | // essential mouse information. |
jimmery | 13:5f08195456a4 | 57 | volatile int row; |
jimmery | 13:5f08195456a4 | 58 | volatile int col; |
jimmery | 13:5f08195456a4 | 59 | |
jimmery | 13:5f08195456a4 | 60 | volatile float left_speed; |
jimmery | 13:5f08195456a4 | 61 | volatile float right_speed; |
jimmery | 13:5f08195456a4 | 62 | |
jimmery | 13:5f08195456a4 | 63 | // [-----------------------------------SENSOR INFORMATION-----------------------------------] |
jimmery | 13:5f08195456a4 | 64 | // [-------------------------------IMPLEMENTED IN SENSORS.CPP-------------------------------] |
jimmery | 13:5f08195456a4 | 65 | void sensor_init(); |
jimmery | 13:5f08195456a4 | 66 | |
jimmery | 13:5f08195456a4 | 67 | volatile float gyro_offset; |
jimmery | 13:5f08195456a4 | 68 | |
jimmery | 13:5f08195456a4 | 69 | volatile float lf_val; |
jimmery | 13:5f08195456a4 | 70 | volatile float rf_val; |
jimmery | 13:5f08195456a4 | 71 | volatile float ls_val; |
jimmery | 13:5f08195456a4 | 72 | volatile float rs_val; |
jimmery | 13:5f08195456a4 | 73 | |
jimmery | 13:5f08195456a4 | 74 | volatile int wall_in_front; |
jimmery | 13:5f08195456a4 | 75 | volatile int opening_left_ahead; |
jimmery | 13:5f08195456a4 | 76 | volatile int opening_right_ahead; |
jimmery | 13:5f08195456a4 | 77 | volatile int opening_left; |
jimmery | 13:5f08195456a4 | 78 | volatile int opening_right; |
jimmery | 13:5f08195456a4 | 79 | |
jimmery | 13:5f08195456a4 | 80 | // [------------------------------------PID INFORMATION.------------------------------------] |
jimmery | 13:5f08195456a4 | 81 | // [---------------------------------IMPLEMENTED IN PID.CPP---------------------------------] |
jimmery | 13:5f08195456a4 | 82 | // helper functions |
jimmery | 13:5f08195456a4 | 83 | float rotational_pid(); |
jimmery | 13:5f08195456a4 | 84 | float translational_pid(); |
jimmery | 13:5f08195456a4 | 85 | //void pid_reset(); |
jimmery | 13:5f08195456a4 | 86 | |
jimmery | 13:5f08195456a4 | 87 | // helper data members. (not really needed to be shown - for implementation purposes) |
jimmery | 13:5f08195456a4 | 88 | volatile float line_prevError; |
jimmery | 13:5f08195456a4 | 89 | volatile float enco_prevError; |
jimmery | 13:5f08195456a4 | 90 | volatile float gyro_prevError; |
jimmery | 13:5f08195456a4 | 91 | |
jimmery | 13:5f08195456a4 | 92 | volatile float set_w; |
jimmery | 13:5f08195456a4 | 93 | volatile float set_x; |
jimmery | 13:5f08195456a4 | 94 | |
jimmery | 13:5f08195456a4 | 95 | volatile float spin_enco_weight; |
jimmery | 13:5f08195456a4 | 96 | volatile float spin_gyro_weight; |
jimmery | 13:5f08195456a4 | 97 | |
jimmery | 13:5f08195456a4 | 98 | // [-------------------------------------TEST FUNCTIONS-------------------------------------] |
jimmery | 13:5f08195456a4 | 99 | // [--------------------------------IMPLEMENTED IN TEST.CPP.--------------------------------] |
jimmery | 13:5f08195456a4 | 100 | |
jimmery | 13:5f08195456a4 | 101 | void test_IR_sensors(); |
jimmery | 13:5f08195456a4 | 102 | void test_motors(); |
jimmery | 13:5f08195456a4 | 103 | }; |
jimmery | 13:5f08195456a4 | 104 | |
jimmery | 13:5f08195456a4 | 105 | #endif |