Time is good

Dependencies:   RoboClaw mbed

Fork of Robot2016_2-0 by ARES

Committer:
IceTeam
Date:
Tue Jan 26 17:17:52 2016 +0000
Revision:
34:e5500418b0e7
Parent:
31:8bcc3a0bfa8a
Fonction TestEntraxe;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
IceTeam 31:8bcc3a0bfa8a 1 #include "Odometry/Odometry.h"
IceTeam 13:5355aed288b0 2 #include "Map/Map.h"
sype 0:ad9600df4a70 3
sype 0:ad9600df4a70 4 #define dt 10000
sype 10:ae3178aa94e9 5 #define ATTENTE 0
sype 10:ae3178aa94e9 6 #define GO 1
sype 10:ae3178aa94e9 7 #define STOP 2
sype 0:ad9600df4a70 8
sype 10:ae3178aa94e9 9 InterruptIn mybutton(USER_BUTTON);
sype 10:ae3178aa94e9 10 DigitalIn button(USER_BUTTON);
sype 2:abdf8c6823a1 11 DigitalOut led(LED1);
sype 0:ad9600df4a70 12 Ticker ticker;
sype 10:ae3178aa94e9 13 //Serial pc(USBTX, USBRX);
sype 10:ae3178aa94e9 14 Serial pc(PA_9, PA_10);
IceTeam 21:077bc7634b90 15 Serial logger (PA_9, PA_10);
sype 10:ae3178aa94e9 16 RoboClaw roboclaw(460800, PA_11, PA_12);
IceTeam 31:8bcc3a0bfa8a 17 /* Changement entraxe : 252->253 */
IceTeam 31:8bcc3a0bfa8a 18 Odometry odo(63.2, 63.3, 253, 4096, roboclaw);
sype 10:ae3178aa94e9 19
sype 10:ae3178aa94e9 20 int i = 0;
sype 0:ad9600df4a70 21
sype 0:ad9600df4a70 22 void update_main(void);
sype 2:abdf8c6823a1 23 void init(void);
sype 10:ae3178aa94e9 24 void pressed(void);
sype 10:ae3178aa94e9 25 void unpressed(void);
sype 0:ad9600df4a70 26
IceTeam 9:e39b218ab20d 27 /** Debut du programme */
sype 0:ad9600df4a70 28 int main(void)
sype 10:ae3178aa94e9 29 {
sype 10:ae3178aa94e9 30 double angle_v = 2*PI/5;
sype 10:ae3178aa94e9 31 double distance_v = 200.0;
IceTeam 13:5355aed288b0 32 std::vector<SimplePoint> path;
IceTeam 13:5355aed288b0 33 Map map;
IceTeam 13:5355aed288b0 34
sype 2:abdf8c6823a1 35 init();
IceTeam 18:0f1fefe78266 36 //Construction des obstacles
IceTeam 31:8bcc3a0bfa8a 37 //map.build();
IceTeam 28:142ebc5410f3 38
IceTeam 31:8bcc3a0bfa8a 39 /*float x=odo.getX();
IceTeam 30:58bfac39e701 40 float y=odo.getY();
IceTeam 30:58bfac39e701 41 float the = 0;
IceTeam 30:58bfac39e701 42
IceTeam 30:58bfac39e701 43 map.AStar(x, y, 1400, 1000, 75);
IceTeam 14:a394e27b8cb2 44 path = map.path;
IceTeam 14:a394e27b8cb2 45
IceTeam 18:0f1fefe78266 46 for(int i=0; i<path.size();i++) {
IceTeam 30:58bfac39e701 47 the = (float) atan2((double) (path[i].y - odo.getY()), (double) (path[i].x - odo.getX()));
IceTeam 30:58bfac39e701 48 odo.GotoXYT(path[i].x, path[i].y, the);
IceTeam 18:0f1fefe78266 49 }
IceTeam 27:ae68960316f1 50
IceTeam 30:58bfac39e701 51 map.AStar(odo.getX(), odo.getY(), 0, 1000, 75);
IceTeam 27:ae68960316f1 52 path = map.path;
IceTeam 27:ae68960316f1 53
IceTeam 27:ae68960316f1 54 for(int i=0; i<path.size();i++) {
IceTeam 30:58bfac39e701 55 the = (float) atan2((double) (path[i].y - odo.getY()), (double) (path[i].x - odo.getX()));
IceTeam 30:58bfac39e701 56 odo.GotoXYT(path[i].x, path[i].y, the);
IceTeam 27:ae68960316f1 57 }
IceTeam 30:58bfac39e701 58
IceTeam 31:8bcc3a0bfa8a 59 odo.GotoThet(PI);
IceTeam 31:8bcc3a0bfa8a 60 odo.GotoThet(0);*/
IceTeam 31:8bcc3a0bfa8a 61
IceTeam 34:e5500418b0e7 62 /* Test de la ligne droite aller retour */
IceTeam 31:8bcc3a0bfa8a 63 odo.GotoXYT(1000, 1000, 0);
IceTeam 31:8bcc3a0bfa8a 64 odo.GotoXYT(0, 1000, PI);
IceTeam 30:58bfac39e701 65 odo.GotoThet(0);
sype 10:ae3178aa94e9 66
sype 10:ae3178aa94e9 67 //odo.GotoThet(-PI/2);
sype 10:ae3178aa94e9 68 wait(2000);
sype 10:ae3178aa94e9 69 //odo.GotoXYT(2250,500,0);
sype 2:abdf8c6823a1 70 while(1);
sype 2:abdf8c6823a1 71 }
sype 2:abdf8c6823a1 72
sype 2:abdf8c6823a1 73 void init(void)
sype 0:ad9600df4a70 74 {
sype 10:ae3178aa94e9 75 pc.baud(9600);
sype 2:abdf8c6823a1 76 pc.printf("Hello from main !\n\r");
sype 10:ae3178aa94e9 77 wait_ms(500);
sype 10:ae3178aa94e9 78
IceTeam 27:ae68960316f1 79 odo.setPos(0, 1000, 0);
sype 2:abdf8c6823a1 80 roboclaw.ForwardM1(ADR, 0);
sype 2:abdf8c6823a1 81 roboclaw.ForwardM2(ADR, 0);
sype 10:ae3178aa94e9 82
sype 10:ae3178aa94e9 83 while(button);
sype 10:ae3178aa94e9 84 wait(1);
sype 10:ae3178aa94e9 85 mybutton.fall(&pressed);
sype 10:ae3178aa94e9 86 mybutton.rise(&unpressed);
sype 0:ad9600df4a70 87 ticker.attach_us(&update_main,dt); // 100 Hz
sype 0:ad9600df4a70 88 }
sype 0:ad9600df4a70 89
sype 0:ad9600df4a70 90 void update_main(void)
sype 0:ad9600df4a70 91 {
sype 0:ad9600df4a70 92 odo.update_odo();
sype 10:ae3178aa94e9 93 //pc.printf("X : %3.2f\tY : %3.2f\tTheta : %3.2f\n\r", odo.getX(), odo.getY(), odo.getTheta()*180/PI);
sype 2:abdf8c6823a1 94 //if(pc.readable()) if(pc.getc()=='l') led = !led;
sype 0:ad9600df4a70 95 }
sype 10:ae3178aa94e9 96
sype 10:ae3178aa94e9 97 void pressed(void)
sype 10:ae3178aa94e9 98 {
sype 10:ae3178aa94e9 99 if(i==0) {
sype 10:ae3178aa94e9 100 roboclaw.ForwardM1(ADR, 0);
sype 10:ae3178aa94e9 101 roboclaw.ForwardM2(ADR, 0);
sype 10:ae3178aa94e9 102 //pc.printf("X : %3.2f\tY : %3.2f\tTheta : %3.2f\n\r", odo.getX(), odo.getY(), odo.getTheta()*180/PI);
sype 10:ae3178aa94e9 103 i++;
sype 10:ae3178aa94e9 104 }
sype 10:ae3178aa94e9 105 }
sype 10:ae3178aa94e9 106
sype 10:ae3178aa94e9 107 void unpressed(void)
sype 10:ae3178aa94e9 108 {
sype 10:ae3178aa94e9 109 if(i==1) {
sype 10:ae3178aa94e9 110 i--;
sype 10:ae3178aa94e9 111 }
sype 10:ae3178aa94e9 112 }