Robot's source code
Dependencies: mbed
main.cpp
- Committer:
- Near32
- Date:
- 2015-03-18
- Revision:
- 41:c04c2ec37aad
- Parent:
- 40:83ce8d1072ef
- Child:
- 42:fcb48e2fc426
File content as of revision 41:c04c2ec37aad:
#include "mbed.h" #include "defines.h" #include "QEI.h" #include "Map.h" #include "AX12.h" #include "Asserv.h" #include "Motor.h" /*----------------------------------------------------------------------------------------------*/ /*Serial*/ Serial logger(OUT_TX, OUT_RX); // tx, rx /*----------------------------------------------------------------------------------------------*/ /* --- Initialisation de la liste des obstable --- */ int Obstacle::lastId = 0; int main() { logger.printf("Initialisation...\r\n"); //mbed /* PwmOut pw1(p22); DigitalOut dir1(p21); PwmOut pw2(p24); DigitalOut dir2(p23); */ //mbuino /* PwmOut pw1(P0_17); DigitalOut dir1(P0_18); PwmOut pw2(P0_23); DigitalOut dir2(P0_19); */ /* //nucleo PwmOut pw1(PB_8); DigitalOut dir1(D12); PwmOut pw2(PB_9); DigitalOut dir2(D13); */ //nucleo PwmOut pw1(PWM_MOT1); DigitalOut dir1(DIR_MOT1); PwmOut pw2(PWM_MOT2); DigitalOut dir2(DIR_MOT2); Motor motorR(PWM_MOT1,DIR_MOT1); Motor motorL(PWM_MOT2,DIR_MOT2); logger.printf("mise a jour des pwm.\r\n"); Timer t; AX12 test(PA_9,NC,0x05,250000); AnalogIn ain0(PA_0); AnalogIn ain1(PA_1); AnalogIn ain2(PA_4); AnalogIn ain3(PB_0); AnalogIn ain4(PC_1); /*----------------------------------------------------------------------------------------------*/ /*Odometry*/ QEI qei_left(PB_3,PA_10,NC,1024*4,QEI::X4_ENCODING); QEI qei_right(PB_4,PB_5,NC,1024*4,QEI::X4_ENCODING); Odometry odometry(&qei_left,&qei_right,63/2.,63/2.,280); DigitalOut led(LED1); test.SetMode(0); // Position /*char dataOff[] = {0}; char dataOn[] = {1}; while(1) { logger.printf("0: %f\r\n",ain0.read()*3.3); logger.printf("1: %f\r\n",ain1.read()*3.3); logger.printf("2: %f\r\n",ain2.read()*3.3); logger.printf("3: %f\r\n",ain3.read()*3.3); logger.printf("4: %f\r\n\r\n",ain4.read()*3.3); led = !led; wait(1); motorR.setSpeed(1.0); wait(1); motorR.setSpeed(0.0); }*/ bool testOdo = false; Asserv<float> instanceAsserv(&odometry); /*----------------------------------------------------------------------------------------------*/ instanceAsserv.setGoal( (float)10,(float)0, (float)0); logger.printf("Debut boucle.\r\n"); while(1) { //Asservissement : t.start(); instanceAsserv.update((float)t.read()); logger.printf("2\r\n"); Mat<float> X( instanceAsserv.getX() ); logger.printf("3\r\n"); float phi_r = instanceAsserv.getPhiR(); float phi_l = instanceAsserv.getPhiL(); float phi_max = instanceAsserv.getPhiMax(); logger.printf(" x : %f ;\t y : %f ;\t theta : %f ;\t phiD = %f ;\t phiG = %f \n\r",X.get(1,1),X.get(2,1),X.get(3,1), X.get(4,1), X.get(5,1) ); //pcs.printf("%f : %f : %f\n", (double)odometry.getX()*100,(double)odometry.getY()*100,(double)odometry.getTheta()*180/3.14); //blue.printf("State : \n\r"); //(instanceAsserv.getX()).afficherMblue(); //blue.printf("Odometry : \n\r"); //z.afficherMblue(); motorR.setSpeed(phi_r/phi_max); motorL.setSpeed(phi_l/phi_max); //Timer Handling : t.stop(); logger.printf("%f s ecoulee.\n\r", t.read()); t.reset(); t.start(); } while(1) { //setPWM(&pw1,0.0); //setPWM(&pw2,0.0); pw1.write(0.0); pw2.write(0.0); led = !led; wait(1); } }