Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Master.cpp@56:7015e2e79ea7, 2013-12-03 (annotated)
- Committer:
- calamaridudeman
- Date:
- Tue Dec 03 02:49:30 2013 +0000
- Revision:
- 56:7015e2e79ea7
- Parent:
- 55:ff84fbdfd1d1
- Child:
- 57:dfea5d24d650
force control works :3
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| calamaridudeman | 23:112c0be5a7f3 | 1 | #include "mbed.h" |
| calamaridudeman | 37:bf257a0154db | 2 | #include "Master.hpp" |
| calamaridudeman | 22:4d85d989af08 | 3 | |
| sherryxy | 48:8f0e007bd305 | 4 | DigitalOut led1(LED1); |
| sherryxy | 48:8f0e007bd305 | 5 | |
| calamaridudeman | 23:112c0be5a7f3 | 6 | Serial pc(USBTX, USBRX); |
| calamaridudeman | 37:bf257a0154db | 7 | QEI mEnc1(p25, p26, NC, 1200, QEI::X4_ENCODING); //hip |
| calamaridudeman | 37:bf257a0154db | 8 | QEI mEnc2(p23, p24, NC, 1200, QEI::X4_ENCODING);//knee |
| calamaridudeman | 37:bf257a0154db | 9 | |
| calamaridudeman | 43:68faf056ed5c | 10 | Motor m1(p15,p17,p18,p21,mEnc2);//hip p17 high is CCW |
| calamaridudeman | 43:68faf056ed5c | 11 | Motor m2(p16,p19,p20,p22,mEnc1);//knee p19 high is CCW |
| calamaridudeman | 25:8a34b8d6cc6e | 12 | |
| alexc89 | 45:0db0fc9f77b1 | 13 | |
| calamaridudeman | 54:17ea4b3c80de | 14 | QEI bEnc1(p27, p28, p29, 2000, QEI::X4_ENCODING); //track offset:-2.236814 |
| calamaridudeman | 54:17ea4b3c80de | 15 | QEI bEnc2(p5, p6, p7, 2000, QEI::X4_ENCODING); //body offset:1.770973 |
| calamaridudeman | 37:bf257a0154db | 16 | |
| calamaridudeman | 37:bf257a0154db | 17 | Kangaroo kankan(m1,m2,bEnc1,bEnc2); |
| calamaridudeman | 37:bf257a0154db | 18 | |
| calamaridudeman | 43:68faf056ed5c | 19 | Ticker t; |
| calamaridudeman | 43:68faf056ed5c | 20 | |
| calamaridudeman | 43:68faf056ed5c | 21 | AnalogIn aIn(p15); |
| alexc89 | 45:0db0fc9f77b1 | 22 | DigitalOut Forward(p17); |
| alexc89 | 45:0db0fc9f77b1 | 23 | DigitalOut Backward(p18); |
| alexc89 | 45:0db0fc9f77b1 | 24 | PwmOut pwmOut(p21); |
| alexc89 | 45:0db0fc9f77b1 | 25 | |
| alexc89 | 46:4497e945de6b | 26 | int SLIP(float initLen){//SlIP Model |
| alexc89 | 46:4497e945de6b | 27 | //Get Length |
| calamaridudeman | 55:ff84fbdfd1d1 | 28 | double y = kankan.getPoint().y; |
| calamaridudeman | 55:ff84fbdfd1d1 | 29 | double x = kankan.getPoint().x; |
| sherryxy | 48:8f0e007bd305 | 30 | //float length = pow(pow(x,2.0)+pow(y,2.0),0.5); |
| sherryxy | 48:8f0e007bd305 | 31 | int ks = 0.5; |
| sherryxy | 48:8f0e007bd305 | 32 | //float mag = (initLen-length)*ks; |
| alexc89 | 46:4497e945de6b | 33 | //Apply Forward Kinematics |
| calamaridudeman | 56:7015e2e79ea7 | 34 | Point slip_p = Point((1+ks)*x,(1+ks)*y,0); |
| calamaridudeman | 56:7015e2e79ea7 | 35 | kankan.setPoint(slip_p); |
| calamaridudeman | 56:7015e2e79ea7 | 36 | |
| alexc89 | 46:4497e945de6b | 37 | return 1; |
| alexc89 | 46:4497e945de6b | 38 | } |
| alexc89 | 46:4497e945de6b | 39 | int FLIGHT(float initM1, float initM2){ |
| alexc89 | 46:4497e945de6b | 40 | //Pos Control |
| alexc89 | 46:4497e945de6b | 41 | m1.setPos(initM1); |
| alexc89 | 46:4497e945de6b | 42 | m2.setPos(initM2); |
| alexc89 | 46:4497e945de6b | 43 | //Awesome. |
| alexc89 | 46:4497e945de6b | 44 | return 1; |
| alexc89 | 46:4497e945de6b | 45 | } |
| calamaridudeman | 37:bf257a0154db | 46 | int main() { |
| calamaridudeman | 55:ff84fbdfd1d1 | 47 | kankan.start(); |
| calamaridudeman | 55:ff84fbdfd1d1 | 48 | kankan.zero(); |
| calamaridudeman | 55:ff84fbdfd1d1 | 49 | |
| alexc89 | 46:4497e945de6b | 50 | //Initalize Control Varialbes |
| alexc89 | 45:0db0fc9f77b1 | 51 | int Phase = 0;//Flight Phase |
| sherryxy | 48:8f0e007bd305 | 52 | int initLen = 0.08;//0.17; |
| sherryxy | 48:8f0e007bd305 | 53 | //float initM1 = -0.5; |
| sherryxy | 48:8f0e007bd305 | 54 | //float initM2 = 0.5; |
| alexc89 | 46:4497e945de6b | 55 | |
| alexc89 | 45:0db0fc9f77b1 | 56 | while(true){ |
| alexc89 | 45:0db0fc9f77b1 | 57 | if (Phase == 0){//Flight Phase |
| alexc89 | 46:4497e945de6b | 58 | //Uses PD to Control |
| alexc89 | 46:4497e945de6b | 59 | //FLIGHT(initM1, initM2); |
| sherryxy | 48:8f0e007bd305 | 60 | //m1.setPos(-0.5); |
| sherryxy | 48:8f0e007bd305 | 61 | led1=0; |
| calamaridudeman | 55:ff84fbdfd1d1 | 62 | kankan.setPoint(Point(0,-.15,0)); |
| calamaridudeman | 55:ff84fbdfd1d1 | 63 | if(kankan.landDetection()){ |
| alexc89 | 45:0db0fc9f77b1 | 64 | //Landed going to Phase 1 |
| sherryxy | 48:8f0e007bd305 | 65 | //Record initial Length. |
| alexc89 | 45:0db0fc9f77b1 | 66 | Phase =1; |
| calamaridudeman | 55:ff84fbdfd1d1 | 67 | initLen = sqrt(pow(kankan.getPoint().x,2)+pow(kankan.getPoint().y,2)); |
| alexc89 | 45:0db0fc9f77b1 | 68 | } |
| alexc89 | 45:0db0fc9f77b1 | 69 | }else{ //Land Phase |
| sherryxy | 48:8f0e007bd305 | 70 | led1=1; //landing detected |
| alexc89 | 46:4497e945de6b | 71 | //Uses SLIP Model to Control |
| sherryxy | 48:8f0e007bd305 | 72 | |
| calamaridudeman | 56:7015e2e79ea7 | 73 | kankan.slip(1000,Point(.05,-.18,0), pc); |
| calamaridudeman | 56:7015e2e79ea7 | 74 | //kankan.testEncoders(pc); |
| sherryxy | 48:8f0e007bd305 | 75 | //m1.setPos(-1); |
| calamaridudeman | 55:ff84fbdfd1d1 | 76 | if(!kankan.landDetection()){ |
| alexc89 | 45:0db0fc9f77b1 | 77 | //Lift Up going to Phase 0 |
| alexc89 | 45:0db0fc9f77b1 | 78 | Phase =0; |
| alexc89 | 45:0db0fc9f77b1 | 79 | } |
| alexc89 | 45:0db0fc9f77b1 | 80 | |
| alexc89 | 45:0db0fc9f77b1 | 81 | } |
| alexc89 | 45:0db0fc9f77b1 | 82 | } |
| calamaridudeman | 23:112c0be5a7f3 | 83 | |
| calamaridudeman | 55:ff84fbdfd1d1 | 84 | |
| calamaridudeman | 43:68faf056ed5c | 85 | m1.stop(); |
| calamaridudeman | 43:68faf056ed5c | 86 | m2.stop(); |
| calamaridudeman | 55:ff84fbdfd1d1 | 87 | |
| calamaridudeman | 22:4d85d989af08 | 88 | } |
