Added more code for side and angled sensor
Dependencies: QEI2 PID Watchdog VL53L1X_Filter BNOWrapper ros_lib_kinetic
wheelchair.h@20:f42db4ae16f0, 2018-08-31 (annotated)
- Committer:
- jvfausto
- Date:
- Fri Aug 31 20:00:01 2018 +0000
- Revision:
- 20:f42db4ae16f0
- Parent:
- 19:71a6621ee5c3
- Child:
- 21:3489cffad196
- Child:
- 23:8d11d953ceeb
j
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" |
jvfausto | 17:7f3b69300bb6 | 5 | #include "PID.h" |
ryanlin97 | 12:921488918749 | 6 | #include "QEI.h" |
ryanlin97 | 16:b403082eeacd | 7 | #include <ros.h> |
ryanlin97 | 16:b403082eeacd | 8 | #include <geometry_msgs/Twist.h> |
jvfausto | 17:7f3b69300bb6 | 9 | //#include "BufferedSerial.h" |
ryanlin97 | 12:921488918749 | 10 | |
ryanlin97 | 11:d14a1f7f1297 | 11 | //#include "chair_MPU9250.h" |
ryanlin97 | 0:fc0c4a184482 | 12 | |
ryanlin97 | 11:d14a1f7f1297 | 13 | #define turn_precision 10 |
ryanlin97 | 0:fc0c4a184482 | 14 | #define def (2.5f/3.3f) |
ryanlin97 | 12:921488918749 | 15 | #define high 3.3f/3.3f |
jvfausto | 20:f42db4ae16f0 | 16 | #define offset .02742f |
ryanlin97 | 3:a5e71bfdb492 | 17 | #define low (1.7f/3.3f) |
ryanlin97 | 10:e5463c11e0a0 | 18 | #define process .1 |
ryanlin97 | 14:9caca9fde9b0 | 19 | |
ryanlin97 | 14:9caca9fde9b0 | 20 | /* for big mbed board |
ryanlin97 | 3:a5e71bfdb492 | 21 | #define xDir D12 //top right two pins |
ryanlin97 | 0:fc0c4a184482 | 22 | #define yDir D13 //top left two pins |
ryanlin97 | 12:921488918749 | 23 | #define Encoder1 D0 |
ryanlin97 | 12:921488918749 | 24 | #define Encoder2 D1 |
ryanlin97 | 14:9caca9fde9b0 | 25 | */ |
ryanlin97 | 14:9caca9fde9b0 | 26 | |
ryanlin97 | 14:9caca9fde9b0 | 27 | //for small mbed board |
ryanlin97 | 14:9caca9fde9b0 | 28 | #define xDir D9 |
ryanlin97 | 14:9caca9fde9b0 | 29 | #define yDir D10 |
ryanlin97 | 14:9caca9fde9b0 | 30 | #define Encoder1 D7 |
ryanlin97 | 14:9caca9fde9b0 | 31 | #define Encoder2 D8 |
ryanlin97 | 14:9caca9fde9b0 | 32 | |
ryanlin97 | 12:921488918749 | 33 | #define EncoderReadRate 1200 |
ryanlin97 | 12:921488918749 | 34 | #define Diameter 31.75 |
ryanlin97 | 12:921488918749 | 35 | /** Wheelchair class |
ryanlin97 | 12:921488918749 | 36 | * Used for controlling the smart wheelchair |
ryanlin97 | 12:921488918749 | 37 | */ |
jvfausto | 17:7f3b69300bb6 | 38 | |
ryanlin97 | 0:fc0c4a184482 | 39 | class Wheelchair |
ryanlin97 | 0:fc0c4a184482 | 40 | { |
ryanlin97 | 0:fc0c4a184482 | 41 | public: |
ryanlin97 | 12:921488918749 | 42 | /** Create Wheelchair Object with x,y pin for analog dc output |
ryanlin97 | 12:921488918749 | 43 | * serial for printout, and timer |
ryanlin97 | 12:921488918749 | 44 | */ |
jvfausto | 19:71a6621ee5c3 | 45 | Wheelchair(PinName xPin, PinName yPin, Serial* pc, Timer* time, QEI* wheel); |
ryanlin97 | 12:921488918749 | 46 | |
ryanlin97 | 12:921488918749 | 47 | /** move using the joystick */ |
ryanlin97 | 3:a5e71bfdb492 | 48 | void move(float x_coor, float y_coor); |
ryanlin97 | 12:921488918749 | 49 | |
ryanlin97 | 12:921488918749 | 50 | /* turn right a certain amount of degrees (overshoots)*/ |
ryanlin97 | 11:d14a1f7f1297 | 51 | double turn_right(int deg); |
ryanlin97 | 12:921488918749 | 52 | |
ryanlin97 | 12:921488918749 | 53 | /* turn left a certain amount of degrees (overshoots)*/ |
ryanlin97 | 11:d14a1f7f1297 | 54 | double turn_left(int deg); |
ryanlin97 | 12:921488918749 | 55 | |
ryanlin97 | 12:921488918749 | 56 | /* turn right a certain amount of degrees using PID*/ |
ryanlin97 | 12:921488918749 | 57 | void pid_right(int deg); |
ryanlin97 | 12:921488918749 | 58 | |
ryanlin97 | 12:921488918749 | 59 | /* turn left a certain amount of degrees using PID*/ |
ryanlin97 | 12:921488918749 | 60 | void pid_left(int deg); |
ryanlin97 | 12:921488918749 | 61 | |
ryanlin97 | 12:921488918749 | 62 | /* turning function that turns any direction */ |
ryanlin97 | 11:d14a1f7f1297 | 63 | void turn(int deg); |
ryanlin97 | 12:921488918749 | 64 | |
ryanlin97 | 12:921488918749 | 65 | /* drive the wheelchair forward */ |
ryanlin97 | 1:c0beadca1617 | 66 | void forward(); |
ryanlin97 | 12:921488918749 | 67 | |
ryanlin97 | 12:921488918749 | 68 | /* drive the wheelchair backward*/ |
ryanlin97 | 1:c0beadca1617 | 69 | void backward(); |
ryanlin97 | 12:921488918749 | 70 | |
ryanlin97 | 12:921488918749 | 71 | /* turn the wheelchair right*/ |
ryanlin97 | 1:c0beadca1617 | 72 | void right(); |
ryanlin97 | 12:921488918749 | 73 | |
ryanlin97 | 12:921488918749 | 74 | /* turn the wheelchair left*/ |
ryanlin97 | 1:c0beadca1617 | 75 | void left(); |
ryanlin97 | 12:921488918749 | 76 | |
ryanlin97 | 12:921488918749 | 77 | /* stop the wheelchair*/ |
ryanlin97 | 1:c0beadca1617 | 78 | void stop(); |
ryanlin97 | 12:921488918749 | 79 | |
ryanlin97 | 12:921488918749 | 80 | /* function to get imu data*/ |
ryanlin97 | 11:d14a1f7f1297 | 81 | void compass_thread(); |
jvfausto | 17:7f3b69300bb6 | 82 | void distance_thread(); |
jvfausto | 19:71a6621ee5c3 | 83 | void pid_forward(double mm); |
jvfausto | 17:7f3b69300bb6 | 84 | void pid_reverse(double mm); |
ryanlin97 | 12:921488918749 | 85 | float getDistance(); |
ryanlin97 | 12:921488918749 | 86 | void resetDistance(); |
ryanlin97 | 12:921488918749 | 87 | void pid_turn(int deg); |
jvfausto | 19:71a6621ee5c3 | 88 | void desk(); |
jvfausto | 19:71a6621ee5c3 | 89 | void kitchen(); |
jvfausto | 19:71a6621ee5c3 | 90 | void desk_to_kitchen(); |
ryanlin97 | 1:c0beadca1617 | 91 | private: |
ryanlin97 | 3:a5e71bfdb492 | 92 | PwmOut* x; |
ryanlin97 | 3:a5e71bfdb492 | 93 | PwmOut* y; |
ryanlin97 | 12:921488918749 | 94 | chair_BNO055* imu; |
ryanlin97 | 7:5e38d43fbce3 | 95 | Serial* out; |
jvfausto | 17:7f3b69300bb6 | 96 | Timer* tim; |
ryanlin97 | 11:d14a1f7f1297 | 97 | Timer* ti; |
ryanlin97 | 12:921488918749 | 98 | QEI* wheel; |
ryanlin97 | 1:c0beadca1617 | 99 | |
ryanlin97 | 0:fc0c4a184482 | 100 | }; |
ryanlin97 | 0:fc0c4a184482 | 101 | #endif |