Working file for communication with ROS
Dependencies: QEI2 PID VL53L1X_Filter
wheelchair.h@14:9caca9fde9b0, 2018-08-13 (annotated)
- Committer:
- ryanlin97
- Date:
- Mon Aug 13 18:22:54 2018 +0000
- Revision:
- 14:9caca9fde9b0
- Parent:
- 12:921488918749
- Child:
- 15:ddd61f6dc5ab
updated for small board;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ryanlin97 | 0:fc0c4a184482 | 1 | #ifndef wheelchair |
ryanlin97 | 0:fc0c4a184482 | 2 | #define wheelchair |
ryanlin97 | 0:fc0c4a184482 | 3 | |
ryanlin97 | 11:d14a1f7f1297 | 4 | #include "chair_BNO055.h" |
ryanlin97 | 12:921488918749 | 5 | #include "PID_v1.h" |
ryanlin97 | 12:921488918749 | 6 | #include "QEI.h" |
ryanlin97 | 12:921488918749 | 7 | |
ryanlin97 | 11:d14a1f7f1297 | 8 | //#include "chair_MPU9250.h" |
ryanlin97 | 0:fc0c4a184482 | 9 | |
ryanlin97 | 11:d14a1f7f1297 | 10 | #define turn_precision 10 |
ryanlin97 | 0:fc0c4a184482 | 11 | #define def (2.5f/3.3f) |
ryanlin97 | 12:921488918749 | 12 | #define high 3.3f/3.3f |
ryanlin97 | 3:a5e71bfdb492 | 13 | #define offset .02f |
ryanlin97 | 3:a5e71bfdb492 | 14 | #define low (1.7f/3.3f) |
ryanlin97 | 10:e5463c11e0a0 | 15 | #define process .1 |
ryanlin97 | 14:9caca9fde9b0 | 16 | |
ryanlin97 | 14:9caca9fde9b0 | 17 | /* for big mbed board |
ryanlin97 | 3:a5e71bfdb492 | 18 | #define xDir D12 //top right two pins |
ryanlin97 | 0:fc0c4a184482 | 19 | #define yDir D13 //top left two pins |
ryanlin97 | 12:921488918749 | 20 | #define Encoder1 D0 |
ryanlin97 | 12:921488918749 | 21 | #define Encoder2 D1 |
ryanlin97 | 14:9caca9fde9b0 | 22 | */ |
ryanlin97 | 14:9caca9fde9b0 | 23 | |
ryanlin97 | 14:9caca9fde9b0 | 24 | //for small mbed board |
ryanlin97 | 14:9caca9fde9b0 | 25 | #define xDir D9 |
ryanlin97 | 14:9caca9fde9b0 | 26 | #define yDir D10 |
ryanlin97 | 14:9caca9fde9b0 | 27 | #define Encoder1 D7 |
ryanlin97 | 14:9caca9fde9b0 | 28 | #define Encoder2 D8 |
ryanlin97 | 14:9caca9fde9b0 | 29 | |
ryanlin97 | 12:921488918749 | 30 | #define EncoderReadRate 1200 |
ryanlin97 | 12:921488918749 | 31 | #define Diameter 31.75 |
ryanlin97 | 12:921488918749 | 32 | /** Wheelchair class |
ryanlin97 | 12:921488918749 | 33 | * Used for controlling the smart wheelchair |
ryanlin97 | 12:921488918749 | 34 | */ |
ryanlin97 | 0:fc0c4a184482 | 35 | class Wheelchair |
ryanlin97 | 0:fc0c4a184482 | 36 | { |
ryanlin97 | 0:fc0c4a184482 | 37 | public: |
ryanlin97 | 12:921488918749 | 38 | /** Create Wheelchair Object with x,y pin for analog dc output |
ryanlin97 | 12:921488918749 | 39 | * serial for printout, and timer |
ryanlin97 | 12:921488918749 | 40 | */ |
ryanlin97 | 7:5e38d43fbce3 | 41 | Wheelchair(PinName xPin, PinName yPin, Serial* pc, Timer* time); |
ryanlin97 | 12:921488918749 | 42 | |
ryanlin97 | 12:921488918749 | 43 | /** move using the joystick */ |
ryanlin97 | 3:a5e71bfdb492 | 44 | void move(float x_coor, float y_coor); |
ryanlin97 | 12:921488918749 | 45 | |
ryanlin97 | 12:921488918749 | 46 | /* turn right a certain amount of degrees (overshoots)*/ |
ryanlin97 | 11:d14a1f7f1297 | 47 | double turn_right(int deg); |
ryanlin97 | 12:921488918749 | 48 | |
ryanlin97 | 12:921488918749 | 49 | /* turn left a certain amount of degrees (overshoots)*/ |
ryanlin97 | 11:d14a1f7f1297 | 50 | double turn_left(int deg); |
ryanlin97 | 12:921488918749 | 51 | |
ryanlin97 | 12:921488918749 | 52 | /* turn right a certain amount of degrees using PID*/ |
ryanlin97 | 12:921488918749 | 53 | void pid_right(int deg); |
ryanlin97 | 12:921488918749 | 54 | |
ryanlin97 | 12:921488918749 | 55 | /* turn left a certain amount of degrees using PID*/ |
ryanlin97 | 12:921488918749 | 56 | void pid_left(int deg); |
ryanlin97 | 12:921488918749 | 57 | |
ryanlin97 | 12:921488918749 | 58 | /* turning function that turns any direction */ |
ryanlin97 | 11:d14a1f7f1297 | 59 | void turn(int deg); |
ryanlin97 | 12:921488918749 | 60 | |
ryanlin97 | 12:921488918749 | 61 | /* drive the wheelchair forward */ |
ryanlin97 | 1:c0beadca1617 | 62 | void forward(); |
ryanlin97 | 12:921488918749 | 63 | |
ryanlin97 | 12:921488918749 | 64 | /* drive the wheelchair backward*/ |
ryanlin97 | 1:c0beadca1617 | 65 | void backward(); |
ryanlin97 | 12:921488918749 | 66 | |
ryanlin97 | 12:921488918749 | 67 | /* turn the wheelchair right*/ |
ryanlin97 | 1:c0beadca1617 | 68 | void right(); |
ryanlin97 | 12:921488918749 | 69 | |
ryanlin97 | 12:921488918749 | 70 | /* turn the wheelchair left*/ |
ryanlin97 | 1:c0beadca1617 | 71 | void left(); |
ryanlin97 | 12:921488918749 | 72 | |
ryanlin97 | 12:921488918749 | 73 | /* stop the wheelchair*/ |
ryanlin97 | 1:c0beadca1617 | 74 | void stop(); |
ryanlin97 | 12:921488918749 | 75 | |
ryanlin97 | 12:921488918749 | 76 | /* function to get imu data*/ |
ryanlin97 | 11:d14a1f7f1297 | 77 | void compass_thread(); |
ryanlin97 | 12:921488918749 | 78 | float getDistance(); |
ryanlin97 | 12:921488918749 | 79 | void resetDistance(); |
ryanlin97 | 12:921488918749 | 80 | void pid_turn(int deg); |
ryanlin97 | 12:921488918749 | 81 | |
ryanlin97 | 1:c0beadca1617 | 82 | private: |
ryanlin97 | 3:a5e71bfdb492 | 83 | PwmOut* x; |
ryanlin97 | 3:a5e71bfdb492 | 84 | PwmOut* y; |
ryanlin97 | 12:921488918749 | 85 | chair_BNO055* imu; |
ryanlin97 | 7:5e38d43fbce3 | 86 | Serial* out; |
ryanlin97 | 11:d14a1f7f1297 | 87 | Timer* ti; |
ryanlin97 | 12:921488918749 | 88 | QEI* wheel; |
ryanlin97 | 1:c0beadca1617 | 89 | |
ryanlin97 | 0:fc0c4a184482 | 90 | }; |
ryanlin97 | 0:fc0c4a184482 | 91 | #endif |