Robot's source code

Dependencies:   mbed

Committer:
Jagang
Date:
Thu Apr 09 14:06:46 2015 +0000
Revision:
54:e0e58c36658a
Parent:
48:cb3ebbc27db3
Child:
55:2d75c0a0375b
...

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jagang 0:41149573d577 1 #include "mbed.h"
Jagang 39:09c04fd42c94 2
Jagang 39:09c04fd42c94 3 #include "defines.h"
Jagang 39:09c04fd42c94 4
Jagang 0:41149573d577 5 #include "QEI.h"
Jagang 23:228317fe0457 6 #include "Map.h"
Jagang 39:09c04fd42c94 7 #include "AX12.h"
Jagang 0:41149573d577 8
Near32 42:fcb48e2fc426 9
Near32 42:fcb48e2fc426 10 #include "Odometry.h"
Near32 35:54b13e154801 11 #include "Asserv.h"
Near32 36:54f86bc6fd80 12 #include "Motor.h"
Near32 17:f360e21d3307 13 /*----------------------------------------------------------------------------------------------*/
Jagang 39:09c04fd42c94 14 /*Serial*/
Near32 48:cb3ebbc27db3 15 Serial logger(OUT_TX, OUT_RX); // tx, rx
Near32 48:cb3ebbc27db3 16 //Serial logger(USBTX,USBRX);
Near32 48:cb3ebbc27db3 17 //logger.baud((int)115200);
Near32 17:f360e21d3307 18 /*----------------------------------------------------------------------------------------------*/
Jagang 21:5443f93819db 19
Jagang 23:228317fe0457 20 /* --- Initialisation de la liste des obstable --- */
Jagang 23:228317fe0457 21 int Obstacle::lastId = 0;
Jagang 23:228317fe0457 22
Jagang 0:41149573d577 23 int main()
Jagang 0:41149573d577 24 {
Jagang 39:09c04fd42c94 25 logger.printf("Initialisation...\r\n");
Near32 24:3c0422e1ebd6 26 //mbed
Near32 24:3c0422e1ebd6 27 /*
Near32 17:f360e21d3307 28 PwmOut pw1(p22);
Near32 17:f360e21d3307 29 DigitalOut dir1(p21);
Near32 17:f360e21d3307 30 PwmOut pw2(p24);
Near32 17:f360e21d3307 31 DigitalOut dir2(p23);
Near32 24:3c0422e1ebd6 32 */
Near32 17:f360e21d3307 33
Near32 17:f360e21d3307 34 //mbuino
Near32 17:f360e21d3307 35 /*
Near32 17:f360e21d3307 36 PwmOut pw1(P0_17);
Near32 17:f360e21d3307 37 DigitalOut dir1(P0_18);
Near32 17:f360e21d3307 38 PwmOut pw2(P0_23);
Near32 17:f360e21d3307 39 DigitalOut dir2(P0_19);
Near32 17:f360e21d3307 40 */
Near32 17:f360e21d3307 41 /*
Near32 17:f360e21d3307 42 //nucleo
Near32 17:f360e21d3307 43 PwmOut pw1(PB_8);
Near32 17:f360e21d3307 44 DigitalOut dir1(D12);
Near32 17:f360e21d3307 45 PwmOut pw2(PB_9);
Near32 17:f360e21d3307 46 DigitalOut dir2(D13);
Near32 17:f360e21d3307 47 */
Near32 24:3c0422e1ebd6 48 //nucleo
Near32 36:54f86bc6fd80 49
Jagang 40:83ce8d1072ef 50 PwmOut pw1(PWM_MOT1);
Jagang 40:83ce8d1072ef 51 DigitalOut dir1(DIR_MOT1);
Jagang 40:83ce8d1072ef 52 PwmOut pw2(PWM_MOT2);
Jagang 40:83ce8d1072ef 53 DigitalOut dir2(DIR_MOT2);
Near32 17:f360e21d3307 54
Near32 36:54f86bc6fd80 55
Near32 48:cb3ebbc27db3 56 Motor motorL(PWM_MOT1,DIR_MOT1);
Near32 48:cb3ebbc27db3 57 Motor motorR(PWM_MOT2,DIR_MOT2);
Jagang 39:09c04fd42c94 58 logger.printf("mise a jour des pwm.\r\n");
Jagang 39:09c04fd42c94 59 Timer t;
Jagang 39:09c04fd42c94 60
Jagang 54:e0e58c36658a 61 AX12 test(PA_9,NC,0x03,250000);
Jagang 54:e0e58c36658a 62 test.SetMode(0); // Position
Jagang 54:e0e58c36658a 63
Jagang 54:e0e58c36658a 64 while(1)
Jagang 54:e0e58c36658a 65 {
Jagang 54:e0e58c36658a 66 test.SetGoal(0);
Jagang 54:e0e58c36658a 67 wait(1);
Jagang 54:e0e58c36658a 68 test.SetGoal(90);
Jagang 54:e0e58c36658a 69 wait(1);
Jagang 54:e0e58c36658a 70 }
Jagang 54:e0e58c36658a 71
Jagang 39:09c04fd42c94 72 AnalogIn ain0(PA_0);
Jagang 39:09c04fd42c94 73 AnalogIn ain1(PA_1);
Jagang 39:09c04fd42c94 74 AnalogIn ain2(PA_4);
Jagang 39:09c04fd42c94 75 AnalogIn ain3(PB_0);
Jagang 39:09c04fd42c94 76 AnalogIn ain4(PC_1);
Near32 24:3c0422e1ebd6 77
Near32 3:573a0dc8383f 78 /*----------------------------------------------------------------------------------------------*/
Near32 3:573a0dc8383f 79 /*Odometry*/
Near32 48:cb3ebbc27db3 80 QEI qei_right(PB_3,PA_10,NC,1024*4,QEI::X4_ENCODING);
Near32 48:cb3ebbc27db3 81 QEI qei_left(PB_4,PB_5,NC,1024*4,QEI::X4_ENCODING);
Jagang 32:148147c0755e 82 Odometry odometry(&qei_left,&qei_right,63/2.,63/2.,280);
Jagang 37:41abbd7eaec1 83 DigitalOut led(LED1);
Jagang 39:09c04fd42c94 84
Jagang 54:e0e58c36658a 85
Jagang 39:09c04fd42c94 86
Jagang 40:83ce8d1072ef 87 /*char dataOff[] = {0};
Jagang 39:09c04fd42c94 88 char dataOn[] = {1};
Jagang 40:83ce8d1072ef 89 while(1)
Jagang 37:41abbd7eaec1 90 {
Jagang 40:83ce8d1072ef 91 logger.printf("0: %f\r\n",ain0.read()*3.3);
Jagang 40:83ce8d1072ef 92 logger.printf("1: %f\r\n",ain1.read()*3.3);
Jagang 40:83ce8d1072ef 93 logger.printf("2: %f\r\n",ain2.read()*3.3);
Jagang 40:83ce8d1072ef 94 logger.printf("3: %f\r\n",ain3.read()*3.3);
Jagang 40:83ce8d1072ef 95 logger.printf("4: %f\r\n\r\n",ain4.read()*3.3);
Jagang 37:41abbd7eaec1 96 led = !led;
Jagang 40:83ce8d1072ef 97 wait(1);
Jagang 40:83ce8d1072ef 98 motorR.setSpeed(1.0);
Jagang 40:83ce8d1072ef 99 wait(1);
Jagang 40:83ce8d1072ef 100 motorR.setSpeed(0.0);
Jagang 39:09c04fd42c94 101 }*/
Near32 48:cb3ebbc27db3 102 bool testOdo = false;
Near32 36:54f86bc6fd80 103
Near32 36:54f86bc6fd80 104
Near32 35:54b13e154801 105 Asserv<float> instanceAsserv(&odometry);
Near32 3:573a0dc8383f 106
Near32 3:573a0dc8383f 107 /*----------------------------------------------------------------------------------------------*/
Near32 48:cb3ebbc27db3 108 instanceAsserv.setGoal( (float)150,(float)0, (float)PI/4);
Jagang 40:83ce8d1072ef 109
Near32 47:4909e97570f6 110 while(!testOdo)
Near32 26:54e1afed58b2 111 {
Near32 36:54f86bc6fd80 112 //Asservissement :
Near32 41:c04c2ec37aad 113
Jagang 40:83ce8d1072ef 114 t.start();
Near32 41:c04c2ec37aad 115
Near32 43:87bdce65341f 116 instanceAsserv.update((float)t.read());
Near32 43:87bdce65341f 117 Mat<float> X( instanceAsserv.getX() );
Near32 47:4909e97570f6 118 float phi_r = (float)instanceAsserv.getPhiR();
Near32 47:4909e97570f6 119 float phi_l = (float)instanceAsserv.getPhiL();
Near32 47:4909e97570f6 120 float phi_max = (float)instanceAsserv.getPhiMax();
Near32 44:d5f95af61243 121 //logger.printf(" x : %f ;\t y : %f ;\t theta : %f ;\t VD = %f ;\t W = %f \n\r",X.get(1,1),X.get(2,1),X.get(3,1), X.get(4,1), X.get(5,1) );
Near32 44:d5f95af61243 122 //logger.printf(" x : %f ;\t y : %f ;\t theta : %f ",X.get(1,1),X.get(2,1),X.get(3,1) );
Near32 45:b7617d7cedce 123
Near32 45:b7617d7cedce 124 //logger.printf("PhiR = %f ; \t PhiL = %f ; \n\r",phi_r,phi_l);//X.get(4,1),X.get(5,1));
Near32 45:b7617d7cedce 125
Near32 44:d5f95af61243 126 //transpose(X).afficherMblue();
Near32 44:d5f95af61243 127
Near32 42:fcb48e2fc426 128
Near32 36:54f86bc6fd80 129 //pcs.printf("%f : %f : %f\n", (double)odometry.getX()*100,(double)odometry.getY()*100,(double)odometry.getTheta()*180/3.14);
Near32 36:54f86bc6fd80 130 //blue.printf("State : \n\r");
Near32 36:54f86bc6fd80 131 //(instanceAsserv.getX()).afficherMblue();
Near32 36:54f86bc6fd80 132 //blue.printf("Odometry : \n\r");
Near32 41:c04c2ec37aad 133 //z.afficherMblue();
Near32 42:fcb48e2fc426 134
Near32 48:cb3ebbc27db3 135 motorR.setSpeed(0.08+(phi_r/phi_max) );
Near32 48:cb3ebbc27db3 136 motorL.setSpeed(0.06+(phi_l/phi_max) );
Jagang 40:83ce8d1072ef 137
Near32 36:54f86bc6fd80 138 //Timer Handling :
Near32 45:b7617d7cedce 139 t.stop();
Near32 45:b7617d7cedce 140 //logger.printf("%f s ecoulee.\n\r", t.read());
Near32 26:54e1afed58b2 141 t.reset();
Near32 36:54f86bc6fd80 142 t.start();
Near32 26:54e1afed58b2 143 }
Near32 3:573a0dc8383f 144
Near32 26:54e1afed58b2 145
Near32 48:cb3ebbc27db3 146 int i=0;
Near32 48:cb3ebbc27db3 147 int nbrech = 100;
Near32 48:cb3ebbc27db3 148 float tableR[nbrech], tableL[nbrech];
Near32 48:cb3ebbc27db3 149
Near32 48:cb3ebbc27db3 150 motorR.setSpeed(0.0);
Near32 48:cb3ebbc27db3 151 motorL.setSpeed(0.0);
Near32 48:cb3ebbc27db3 152 while(i<nbrech)
Near32 48:cb3ebbc27db3 153 {
Near32 48:cb3ebbc27db3 154 tableR[i] = odometry.getPhiright();
Near32 48:cb3ebbc27db3 155 tableL[i] = odometry.getPhileft();
Near32 48:cb3ebbc27db3 156 motorR.setSpeed( ((float)i)/100);
Near32 48:cb3ebbc27db3 157 motorL.setSpeed( ((float)i)/100);
Near32 48:cb3ebbc27db3 158 logger.printf("vitesse = %f \r\n", (float)i/100);
Near32 48:cb3ebbc27db3 159 wait(0.5);
Near32 48:cb3ebbc27db3 160 i++;
Near32 48:cb3ebbc27db3 161 }
Near32 48:cb3ebbc27db3 162
Near32 48:cb3ebbc27db3 163 i=0;
Near32 26:54e1afed58b2 164 while(1)
Near32 48:cb3ebbc27db3 165 {
Near32 48:cb3ebbc27db3 166 motorR.setSpeed(0.0);
Near32 48:cb3ebbc27db3 167 motorL.setSpeed(0.0);
Near32 48:cb3ebbc27db3 168
Near32 48:cb3ebbc27db3 169 if(i<nbrech)
Near32 48:cb3ebbc27db3 170 {
Near32 48:cb3ebbc27db3 171 logger.printf("%f , %f \r\n", tableL[i],tableR[i]);
Near32 48:cb3ebbc27db3 172 wait(1);
Near32 48:cb3ebbc27db3 173 i++;
Near32 48:cb3ebbc27db3 174 }
Jagang 0:41149573d577 175 }
Near32 43:87bdce65341f 176 }